PyFlowReg#

Python implementation and extension of the Flow-Registration approach for motion correction of 2-photon microscopy videos

Documentation Status#

This documentation has been generated with AI-assistance and is under active development. While we strive for accuracy:

  • Some sections may contain errors or outdated information

  • Not all features may be fully documented

  • Examples and edge cases may be incomplete

If you encounter mistakes, failing examples, missing features, or unclear documentation, please report an issue.


PyFlowReg provides high-accuracy motion correction for 2-photon microscopy videos and volumetric 3D scans using variational optical flow techniques. Dense motion information is explicitly computed, enabling both motion-corrected output and subsequent motion analysis or visualization.

This is a Python port of the Flow-Registration MATLAB toolbox, maintaining full algorithmic compatibility while adding modern Python features and optimizations.

Key Features#

  • Variational model optimized for motion statistics in 2P microscopy

  • Dense motion fields returned for analysis and visualization

  • Multi-channel support with automatic weight normalization

  • Multi-session processing for longitudinal studies with inter-sequence alignment

  • Parallel processing with threading and multiprocessing executors

  • HPC integration with array job support for cluster computing

  • Flexible I/O supporting HDF5, TIFF, MAT, and MDF formats

  • Reference pre-alignment via cross-correlation for improved robustness

  • MATLAB compatibility maintaining algorithmic parity with Flow-Registration

Getting Started#

import numpy as np
from pyflowreg.motion_correction import compensate_arr, OFOptions
from pyflowreg.util.io import get_video_file_reader

# Load video using PyFlowReg's video readers
reader = get_video_file_reader("my_video.tif")
video = reader[:]
reader.close()

# Create reference from frames 100-200
reference = np.mean(video[100:201], axis=0)

# Configure and run motion correction
options = OFOptions(alpha=4, quality_setting="balanced")
registered, flow = compensate_arr(video, reference, options)

Citation#

If you use PyFlowReg in your research, please cite:

“Pyflowreg,” (in preparation), 2025.

and for Flow-Registration:

P. Flotho, S. Nomura, B. Kuhn and D. J. Strauss, “Software for Non-Parametric Image Registration of 2-Photon Imaging Data,” J Biophotonics, 2022. doi:10.1002/jbio.202100330

Documentation#

License#

PyFlowReg is released under the CC BY-NC-SA 4.0 license.