Release notes
New feature release in the 5.5.x series.
This release requires a minimum Python of 3.11 and NumPy 2.0, and has been tested up to Python 3.15 and NumPy 2.5.
New features
- The FilterMultiOrient frame filter allows extracting a volume of consistent orientation from a DICOM containing mixed orienations (#1485) (Michael Krause, reviewed by Basile Pinsard and CM)
Enhancements
- get_fdata now returns complex128 arrays by default for complex images. Note that passing float64 explicitly still results in
float64arrays. (#1592) (Bhaskar Gurram, reviewed by CM) - Cifti2
*Axisclasses now accept any Integral indices, allowing them to be indexed by NumPy integers (#1581) (Don Yin, reviewed by CM) - Update Nifti1Image.as_reoriented to reorient sform and qform independently and preserve (q/s)form codes (#1546) (Cedric Conday, reviewed by CM)
- Validate SpatialHeader zooms are positive in spatial dimensions, non-negative in other dimensions (Siddhardha Nanda, reviewed by CM) (#1596)
- Improved errors for malformed PAR/REC headers (#1573, #1574) (Erfan Mohamadboland, reviewed by CM)
- Support for empty BrainModelAxis (#1555) (Nathan Suttie, reviewed by CM)
- Support for rescaling N-to-N affines in rescale_affine (#1553) (Siddhardha Nanda, reviewed by CM)
- Improved documentation of iter_structures (#1550) (Nagizaaz Shaik, reviewed by CM)
- Documentation has been modernized with a new theme and improved navigation (#1484) (Leonardo Ayala, reviewed by CM)
Bug fixes
- Preserve array shape for single-vertex labels in read_label (#1582) (Jeffrey Cooney, reviewed by CM)
- Validate common shapes when calling append with
cache_build=True(#1583) (Jeffrey Cooney, reviewed by CM) - Fix slicing of SeriesAxis to match slicing its underlying NumPy array (#1580) (Don Yin, reviewed by CM)
- Avoid overflow when passing integer affines to voxel_sizes (#1586) (Gabriel Lafis, reviewed by CM)
- Fix handling of negative slices and steps in slicer (#1534) (Duy Dong Nguyen, reviewed by Arthur031221 and CM)
- Handle data arrays with complex infinities correctly during write (#1588) (Gabriel Lafis, reviewed by CM)
- Calculate orientation from float64-cast affine to avoid SVD issues on 32-bit systems (#1601) (CM, reviewed by Andreas Tille)
- Reject undersized NIfTI extensions before reading payloads (#1568) (Jeffrey Cooney, reviewed by CM)
- Validate affine shape in set_sform, matching set_qform (#1562) (Siddhardha Nanda, reviewed by CM)
- Fix docstrings that mismatched function signatures (#1552) (Venish Paneliya, reviewed by CM)
- Fix rendering of docstrings of deprecated functions/classes (#1545) (CM, reviewed by Mathias Goncalves)
- Correct dtype of ECAT
patient_birth_datefield (int32) (#1522) (Cedric Conday, reviewed by CM) - Set the gzip compression level to the default for the current Python version, which changed from 9 to 6 in Python 3.15 (#1509) (Karolina Surma, reviewed by CM)
- Outdated references to Travis CI were removed from our developer docs (#1506) (Dimitri Papadopoulos, reviewed by CM)
- Typos in documentation (#1499) (Dimitri Papadopoulos, reviewed by CM) and (#1500) (Kabilar Gunalan, reviewied by CM)
Maintenance
- Additional pre-commit hooks and linting rules (#1598, #1599, #1600, #1602, #1603, #1604, #1605, #1607, #1609) (Dimitri Papadopoulos, reviewed by CM)
- Set minimum tested
indexed-gzipversion to 1.9.1 (#1554) (CM) - Testing on ARM64 Linux runners (#1496) (Leonardo Ayala, reviewed by CM)
- Transitioned from
.zenodo.jsontoCITATION.cff(#1494) (CM, at least discussed with Rémi Gau) - Remove deprecated use of
__package__constant (#1487) (Dimitri Papadopoulos, reviewed by CM) - Publish docs automatically on tags or triggers (#1482) (CM)
- Mark thread-unsafe tests as such, and run a weekly multithreaded test job (#1455) (Rémi Gau, reviewed by CM)
API changes and deprecations
- Drop support for Python 3.10, Numpy < 2.0 (#1570) (CM)
New Contributors
- @kabilar made their first contribution in #1500
- @octomike made their first contribution in #1485
- @befeleme made their first contribution in #1509
- @CedricConday made their first contribution in #1522
- @shaikn6 made their first contribution in #1550
- @VenishPaneliya made their first contribution in #1552
- @natesute made their first contribution in #1556
- @Erfouni made their first contribution in #1573
- @jdotc1 made their first contribution in #1568
- @galafis made their first contribution in #1588
- @wterrr made their first contribution in #1534
- @Don-Yin made their first contribution in #1580
- @vera-rubin made their first contribution in #1575
- @bhaskargurram-ai made their first contribution in #1592
Full Changelog: 5.4.2...5.5.0