Recent Releases of motila
motila -
MotilA v1.0.7 Release Notes
🐞 Critical Bugfix: PyStackReg Support in Batch Processing
This release fixes a critical issue that prevented PyStackReg from being used in batch processing, along with a minor metadata filtering correction.
🚨 Critical Bug Fixed
- Missing
usepystackregparameter inbatch_process_stacks: Theusepystackregparameter was not being passed through to theprocess_stackfunction during batch processing. This meant that even whenusepystackreg=Truewas set, the batch processor would always use phase cross-correlation instead of PyStackReg for 2D registration. This has been fixed and PyStackReg now works correctly in batch mode.
🐞 Minor Bug Fixed
- Metadata file filtering: Fixed hardcoded "metadata.xls" string in the batch processor's metadata file search. The function now correctly uses the
metadata_fileparameter, allowing for flexible metadata file naming (e.g., "metadata.xlsx", "parameters.xls", etc.).
Technical Details
- The
usepystackregparameter is now properly passed frombatch_process_stackstoprocess_stack. - Metadata file filtering now uses the configurable
metadata_fileparameter instead of a hardcoded string. - Both single-file and batch processing now consistently support PyStackReg registration.
Critical upgrade recommended for all users who rely on PyStackReg for 2D registration in batch processing.
Thank you for using MotilA! If you encounter any issues, please open
- Python
Published by FabrizioMusacchio 7 months ago
motila -
MotilA v1.0.6 Release Notes
🐞 Bugfix: Skip Processing for Invalid Projection Ranges
This release adds an important safety check to prevent processing of files with invalid projection parameters.
Bug Fixed
- Added file skipping for invalid projection ranges: The main processing pipeline now properly checks if
calc_projection_rangereturns zero projection layers and skips processing the current file instead of continuing with invalid parameters. This prevents errors and wasted processing time when projection parameters are incompatible with the image stack dimensions.
Technical Details
- When
projection_centeris out of bounds or results in an invalid projection range,calc_projection_rangereturnsprojection_layers = 0. - The main processing function now detects this condition and logs a warning message before safely skipping the file.
- This ensures robust handling of edge cases where projection parameters don't match the available z-dimension of image stacks.
Upgrade recommended for all users to ensure robust file processing.
Thank you for using MotilA! If you encounter any issues, please open an issue
- Python
Published by FabrizioMusacchio 7 months ago
motila -
MotilA v1.0.5 Release Notes
🐞 Bugfix: Projection Range and Layer Count Consistency
This release fixes an important consistency issue in the projection range calculation logic.
Bug Fixed
- Corrected
calc_projection_rangeoutput consistency: Fixed an issue where theprojection_layerscount could become inconsistent with the actualprojection_rangewhen the requested range exceeded the image stack's z-dimension boundaries. The function now properly updates and returns the correctedprojection_layerscount to match the adjusted projection range, ensuring accurate layer counting for downstream processing steps.
Technical Details
- When a projection range exceeds the available z-layers in an image stack, MotilA now correctly adjusts both the range boundaries AND the layer count to maintain consistency.
- This prevents potential errors or unexpected behavior in subsequent processing steps that rely on accurate layer counts.
Upgrade recommended for all users to ensure consistent projection handling.
Thank you for using MotilA! If you encounter any issues, please open
- Python
Published by FabrizioMusacchio 7 months ago
motila -
MotilA v1.0.4 Release Notes
🐞 Bugfix & 🚀 New Feature: Registration Improvements
This release includes a critical bugfix for subvolume extraction and registration, along with an exciting new registration option for enhanced flexibility.
🐞 Bug Fixes
- Fixed Shift Application in Subvolume Extraction
- Corrected shift application logic in
extract_and_register_subvolumefunction to ensure proper alignment of extracted subvolumes. - Updated dataset creation for full Zarr 3.0+ compatibility within the same function, resolving potential data handling issues.
- Corrected shift application logic in
🚀 New Features
- PyStackReg Support for 2D Registration
- Added support for PyStackReg (StackReg) as an alternative method for 2D image registration of projected stacks.
- Enhanced
reg_2D_imagesandprocess_stackfunctions with new parameterusepystackreg. - Users can now choose between phase cross-correlation (default) and PyStackReg for 2D registration:
- Set
usepystackreg=Falsefor phase cross-correlation (default behavior) - Set
usepystackreg=Trueto use PyStackReg registration - PyStackReg may provide more robust registration in certain imaging conditions, particularly for images with low contrast or minimal features.
Parameter Updates
The following new parameter is available in both single-file and batch processing:
| Parameter | Values | Description |
|-----------|---------|-------------|
| usepystackreg | bool (True or False) | If True, use PyStackReg (StackReg) for 2D registration instead of phase cross-correlation. |
- Python
Published by FabrizioMusacchio 7 months ago
motila -
MotilA v1.0.3 Release Notes
🐞 Bugfix: Zarr v3+ Compatibility
This release brings important fixes to ensure MotilA works seamlessly with Zarr version 3 and higher.
Highlights
Zarr v3+ Support:
- Fixed all known compatibility issues with Zarr v3 and above.
- Ensured correct handling of shape and chunk arguments (now always plain Python
int). - Updated all Zarr array and group creation/access patterns to match the new Zarr v3 API.
- Improved detection and handling of Zarr store attributes (
.urlfor v3,.pathfor v2). - Fixed assignment and reading issues that could cause sync errors in async environments (e.g., Jupyter, pytest).
- Tests and code now use
zarr.Arrayfor type checks, compatible with both v2 and v3.
General Robustness:
- The codebase is now more robust to future Zarr changes and works with both Zarr v2 and v3.
Thank you to all users who reported Zarr v3 issues and helped test the fixes!
If you encounter any further problems, please open an issue on GitHub.
Upgrade recommended for all users, especially those using Zarr v3 or newer.
- Python
Published by FabrizioMusacchio 9 months ago
motila -
MotilA v1.0.2 Release Notes
🐞 Bugfix & Improvement: Projection Range Calculation
This release focuses on a critical bugfix and improvements to the projection range logic in MotilA's core image processing pipeline.
Highlights
- Projection Range Calculation Overhaul
- Removed the unnecessary
projection_layers_correctionvariable. - Simplified and clarified the logic to ensure the projection range always includes exactly the requested number of layers (
projection_layers), even when the projection center is near the image boundaries. - The projection range is now symmetrically expanded around the center when possible, and boundaries are correctly handled if the range would exceed the image stack's z-dimension.
- Improved the robustness and readability of the
calc_projection_rangefunction for more accurate and predictable behavior.
- Removed the unnecessary
Bug Fixed
- Fixed an issue where the projection range could be off by one or not include the correct number of layers, especially when the projection center was close to the start or end of the z-stack.
Other
- Test folders generated during automated testing are now deleted after tests complete, keeping your workspace clean.
Thank you to all users who reported issues and contributed feedback!
If you encounter any further problems, please open an issue on GitHub.
Upgrade recommended for all users.
- Python
Published by FabrizioMusacchio 9 months ago
motila -
🚀 MotilA v1.0.0 – Initial public release
We are pleased to release MotilA v1.0.0, the first versioned and archived release of the MotilA analysis pipeline.
MotilA is designed for automated and scalable analysis of 4D and 5D multi-photon time-lapse imaging data, with a particular focus on quantifying microglial motility. This release introduces a stable and tested version of the core pipeline, including:
✨ Features
- Support for single-stack and batch analysis of 4D and 5D imaging data
- Automated extraction and quantification of motility from segmented stacks
- Full integration with the
- Included example dataset (via Zenodo) for testing and teaching
- Jupyter-based tutorials for easy onboarding and reproducibility
- Modular pipeline structure for future extensions
📦 Dataset and Tutorials
You can find the example dataset accompanying this release here:
👉 https://zenodo.org/records/15061566
A hands-on tutorial notebook is included in the tutorials/ folder of this repository.
- Python
Published by FabrizioMusacchio 11 months ago