Changelog¶
All notable changes to Thyra are documented here. This project uses Semantic Versioning and Conventional Commits.
v1.17.2 (2026-03-10)¶
Bug Fixes¶
- Add
region_numberto.obsin streaming and 3D converters for consistent region tracking across all converter paths
v1.17.1 (2026-03-09)¶
Bug Fixes¶
- Store region info as JSON string in
uns["regions"]to preserve dict structure through AnnData/Zarr round-trip (previously stored as stringified numpy array)
v1.17.0 (2026-03-09)¶
Features¶
- Include area names from
.misfile in region info output, souns["regions"]now contains human-readable region names alongside numbers
v1.16.0 (2026-03-04)¶
Features¶
- Interactive dataset selection when a folder contains multiple
.ddatasets - Grouped
--helpoutput organising CLI options by category - Resample enabled by default (
--resample / --no-resample)
Bug Fixes¶
- Correct multi-brain optical alignment for shared TIFF slides -- each
.ddataset now matches its own.misfile
v1.15.1 (2026-02-26)¶
Bug Fixes¶
- Code quality sweep: mypy fixes, logging improvements, assert cleanup, zarr consolidation guards
v1.15.0 (2026-02-25)¶
Features¶
- Optical image alignment using teaching points from FlexImaging
.misfiles - Multi-region support with per-pixel
region_numberin.obs - Region metadata (names, spectra counts) stored in
uns["regions"] - Streaming converter fixes for large datasets
v1.14.1 (2026-02-18)¶
Bug Fixes¶
- Resolve all 287 mypy type errors across codebase
v1.14.0 (2026-02-13)¶
Versions 1.12 and 1.13 were skipped
The automated release pipeline (python-semantic-release) incremented
the version number during internal CI iterations that were not published
to PyPI. Published releases jump directly from 1.11.0 to 1.14.0.
Features¶
- Waters
.rawMSI reader with MassLynx native library support - Strategy pattern for instrument detection and continuous mode optimisation
- Intensity threshold filtering moved to reader level
Bug Fixes¶
- Handle
ResamplingConfigdataclass in streaming converter - Support datasets with >2.1 billion non-zeros in streaming converter
- Lower PCS threshold from 50 GB to 30 GB for memory efficiency
- Fix release workflow to properly detect and publish new versions
v1.11.0 (2026-01-23)¶
Features¶
- Add
streamingparameter toconvert_msi()Python API
v1.10.0 (2026-01-23)¶
Features¶
- Streaming converter for memory-efficient large dataset conversion
- No-cache CSC streaming for constant memory usage regardless of file size
Refactoring¶
- Remove dead code (zero_copy parameter,
_convert_with_scipy) - Reduce
_stream_build_coocomplexity
v1.9.0 (2025-12-15)¶
Features¶
- Unified Bruker MSI folder structure -- BrukerReader accepts parent directory
containing
.dfolder - FlexImaging (Rapiflex) reader for Bruker MALDI-TOF data
- Optical image (TIFF) integration for Bruker MSI data
- Teaching point alignment module for FlexImaging optical-MSI registration
- Bruker calibration metadata support with
--interactive-calibration - Click-based CLI replacing argparse, with grouped help output
- Configurable sparse matrix format (
--sparse-format csc|csr) --mass-axis-typeCLI parameter for manual axis type override- Physics-based mass axis binning with
--resample-width-at-mz
Bug Fixes¶
- Correct MSI-to-image coordinate transformation
- Use consistent pixel spacing to eliminate gaps between MSI pixels
- Prevent duplicate logging by disabling logger propagation
- Make
BrukerReader.close()idempotent to prevent duplicate cleanup messages - Resolve pixel size override bug with provenance tracking
- Eliminate multiple reader closures with metadata caching
- Resolve resampling mass axis override bug
Refactoring¶
- Reorganise reader package into logical subfolders (bruker/timstof, bruker/rapiflex)
- Rename FlexImaging to Rapiflex throughout codebase
- Reduce cyclomatic complexity in alignment and converter modules
- Split SpatialData converter into modular architecture
- Complete package rename from msiconvert to thyra
v1.8.3 (2025-07-24)¶
Bug Fixes¶
- Remove dry-run mode and fix failing unit tests
- Resolve failing metadata extractor tests
Refactoring¶
- Move BaseExtractor to core module for better architecture
v1.8.2 (2025-07-21)¶
Bug Fixes¶
- Correct pixel size detection metadata for interactive mode
v1.8.1 (2025-07-21)¶
Bug Fixes¶
- Correct constructor calls in reader implementations
- Resolve batch processing and double progress bar issues
Refactoring¶
- Consolidate duplicate base readers and clean up architecture
v1.8.0 (2025-07-20)¶
Features¶
- Automatic pixel size detection for ImzML and Bruker formats
- Pixel size detection provenance stored in SpatialData metadata
v1.7.0 (2025-07-20)¶
Features¶
- Add missing reader properties to fix dry-run functionality
v1.6.0 (2025-07-20)¶
Features¶
- Enhance package metadata and fix GitHub URLs
v1.5.0 (2025-07-19)¶
Features¶
- Reorganise Bruker reader and fix converter registration
v1.4.0 (2025-07-17)¶
Features¶
- Structured logging system with configurable levels and file output
v1.3.0 (2025-07-17)¶
Features¶
- Project planning documents for architecture and roadmap
v1.2.0 (2025-07-17)¶
Features¶
- Enhanced DLL loading logic for Bruker with cross-platform error handling
- MetadataExtractor class for extracting metadata from MSI readers
- Ontology checking tool with CLI support (
thyra-check-ontology)
v1.1.0 (2025-06-16)¶
Features¶
- CV term usage counting and reporting in validator
Documentation¶
- Updated documentation for SpatialData structure and average mass spectrum access
v1.0.0 (2025-06-16)¶
Features¶
- Initial stable release with automated versioning
v0.1.0 (2025-06-16)¶
- Initial release