Releases: nipy/nibabel
5.4.1
Release notes
Bug-fix release in the 5.4.x series.
This release addresses test failures on shallow clones or when run with python -m pytest in Python 3.14+.
Bug fixes
- Adjust tests to not depend on how pytest is run, or deep clones (#1478) (CM)
Maintenance
- Consolidate environment management for development tasks to ensure tox and pre-commit stay in sync. (#1475) (CM, reviewed by Rémi Gau)
- Update pre-commit and ruff configurations (#1467) (Rémi Gau, reviewed by CM)
New Contributors
Full Changelog: 5.4.0...5.4.1
5.4.0
Release notes
New feature release in the 5.4.x series.
This release requires a minimum Python of 3.10 and NumPy 1.25, and has been tested up to Python 3.14 and NumPy 2.4.
New features
- Add mode parameter to nibabel.processing.conform (#1396) (Clorindo Notte, reviewed by CM)
Enhancements
- Label image axes consistently in cases of extreme obliquity (#1450) (Leonardo Ayala, reviewed by CM)
- Use compressionzstd or
backports.zstdin preference topyzstd(#1444) (PM, reviewed by CM) - Support PAR/REC files generated by Philips R11 consoles (#1430) (Alex Daniel, reviewed by CM)
- Add stub file for top-level nibabel module, improving support in code analyzers (#1436) (Jon Cluce, reviewed by CM)
- Use informative error message for missing file attribute in TCKFile header (#1422) (Jon Haitz Legarreta Gorroño, reviewed by CM)
- Support
ushortdatatypes in MGH/MGZ files (#1415) (Benjamin Thyreau, reviewed by CM) - Simplify nibabel.cmdline.utils.table2string implementation (#1403) (CM)
Bug fixes
- Fix type-checking errors in nibabel.volumeutils.rec2dict (#1424) (Jon Haitz Legarreta Gorroño, reviewed by CM)
- Adapt to functools.partial becoming a method descriptor in Python 3.14 (#1391) (Benjamin Beasley, reviewed by CM)
Maintenance
- Split pre-release tests into cron job (#1466) (CM, reviewed by Remi Gau)
- Adapt to numpy 2.5 deprecation of setting shape attributes (#1452) (CM)
- Document and test support for osPathLike objects in streamlines APIs (#1435) (Jon Haitz Legarreta Gorroño, reviewed by CM)
- Drop CI tests on Intel Macs (#1439) (Dimitri Papadopoulos, reviewed by CM)
- Update license metadata using SPDX expression (#1425) (Dimitri Papadopoulos, reviewed by CM)
- Test on Python 3.14, us locking tox runners (#1431, #1447) (CM)
- Update style checker (ruff) and address new complaints (#1405, #1406, #1433) (CM, Dimitri Papadopoulos)
- Add broad testing for Python 3.13 (#1381) (CM)
- Build docs on PRs with ReadTheDocs to permit quick inspection. (#1398) (CM)
API changes and deprecations
- Drop support for Python 3.9, Numpy < 1.25 (#1448) (CM)
New Contributors
- @musicinmybrain made their first contribution in #1391
- @nightwnvol made their first contribution in #1396
- @bthyreau made their first contribution in #1415
- @shnizzedy made their first contribution in #1436
- @alexdaniel654 made their first contribution in #1432
- @leoyala made their first contribution in #1450
Full Changelog: 5.3.3...5.4.0
5.3.3
Release notes
Bug-fix release in the 5.3.x series.
Bug fixes
- Fix frame order for single-frame DICOM files (pr/1387) (Brendan Moloney, reviewed by CM)
- Replace :class:
dictliteral with :class:setin test. (pr/1382) (CM)
Full Changelog: 5.3.2...5.3.3
5.3.2
5.3.1
5.3.0
Release notes
This release primarily adds support for Python 3.13 and Numpy 2.0.
NiBabel 6.0 will drop support for Numpy 1.x.
New features
- Update NIfTI extension protocol to include
.content : bytes,.text : strand.json : dictproperties for accessing extension contents. Exceptions will be raised on.textand.jsonif conversion fails. (#1336) (CM)
Enhancements
- Ability to read data from many multiframe DICOM files that previously generated errors (#1340) (Brendan Moloney, reviewed by CM)
nib-nifti-dxnow supports NIfTI-2 files with a--nifti2flag (#1323) (CM)- Update nibabel.streamlines.tractogram to support ragged arrays. (#1291) (Serge Koudoro, reviewed by CM)
- Filter numpy
UserWarningonnp.finfo(np.longdouble). This can occur on Windows systems, but it's done in the context of checking for the problem that is being warned against, so there's no need to be noisy. (#1310) (Joshua Newton, reviewed by CM) - Improve error message for for dicomwrapper errors in shape calculation (#1302) (YOH, reviewed by CM)
- Support "flat" ASCII-encoded GIFTI DataArrays (#1298) (PM, reviewed by CM)
Bug fixes
- Fix location initialization/update in OrthoSlicer3D for permuted axes (#1319, #1350) (Guillaume Becq, reviewed by CM)
- Fix DICOM scaling, making frame filtering explicit (#1342) (Brendan Moloney, reviewed by CM)
- Fixed multiframe DICOM issue where data could be flipped along slice dimension relative to the affine (#1340) (Brendan Moloney, reviewed by CM)
- Fixed multiframe DICOM issue where
image_positionand the translation component in theaffinecould be incorrect (#1340) (Brendan Moloney, reviewed by CM)
Maintenance
- Numpy 2.0 compatibility and addressing deprecations in numpy API (#1304, #1330, #1331, #1334, #1337) (Jon Haitz Legarreta Gorroño, CM)
- Python 3.13 compatibility (#1315) (Sandro from the Fedora Project, reviewed by CM)
- Testing on Python 3.13 with free-threading (#1339) (CM)
- Testing on ARM64 Mac OS runners (#1320) (CM)
- Proactively address deprecations in coming Python versions (#1329, #1332, #1333) (Jon Haitz Legarreta Gorroño, reviewed by CM)
- Replace nose-era
setup()andteardown()functions with pytest equivalents (#1325) (Sandro from the Fedora Project, reviewed by Étienne Mollier and CM) - Transitioned from blue/isort/flake8 to ruff. (#1289) (Dimitri Papadopoulos, reviewed by CM)
- Vetted and added various rules to the ruff configuration for auto-formatting and style guide enforcement. (#1321, #1351, #1352, #1353, #1354, #1355, #1357, #1358, #1359, #1360, #1361, #1362, #1363, #1364, #1368, #1369) (Dimitri Papadopoulos, reviewed by CM)
- Fixing typos when found. (#1313, #1370) (MB, Dimitri Papadopoulos)
- Applied Repo-Review suggestions (Dimitri Papadopoulos, reviewed by CM)
API changes and deprecations
- Raise HeaderDataError from set_qform if the affine fails to decompose. This would previously result in numpy.linalgLinAlgError. (#1227) (CM)
- The nibabel.onetime.auto_attr module can be replaced by functoolscached_property in all supported versions of Python. This alias may be removed in future versions. (#1341) (CM)
- Removed the deprecated
nisext(setuptools extensions) package. (#1290) (CM, reviewed by MB)
New Contributors
- @joshuacwnewton made their first contribution in #1310
- @gjpcbecq made their first contribution in #1319
Full Changelog: 5.2.1...5.3.0
5.2.1
Release notes
Bug-fix release in the 5.2.x series.
Enhancements
- Support "flat" ASCII-encoded GIFTI DataArrays (#1298) (PM, reviewed by CM)
Bug fixes
- Tolerate missing
gitwhen reporting version info (#1286) (CM, reviewed by Yuri Victorovich) - Handle Siemens XA30 derived DWI DICOMs (#1296) (CM, reviewed by YOH and Mathias Goncalves)
Maintenance
- Add tool for generating GitHub-friendly release notes (#1284) (CM)
- Accommodate pytest 8 changes (#1297) (CM)
Full Changelog: 5.2.0...5.2.1
5.2.0
Release notes
New feature release in the 5.2.x series.
This release requires a minimum Python of 3.8 and NumPy 1.20, and has been tested up to Python 3.12 and NumPy 1.26.
New features
- Add generic Pointset and regularly spaced Grid data structures in preparation for coordinate transformation and resampling (#1251) (CM, reviewed by Oscar Esteban)
Enhancements
- Add copy method to ArrayProxy (#1255) (CM, reviewed by Paul McCarthy)
- Permit to_xml to pass keyword arguments to tostring (#1258) (CM)
- Allow user expansion (e.g.,
~/...) in strings passed to functions that accept paths (#1260) (Reinder Vos de Wael, reviewed by CM) - Expand CIFTI-2 brain structures to permit synonyms (#1256) (CM, reviewed by Mathias Goncalves)
- Annotate SpatialImage as accepting
affine=Noneargument (#1253) (Blake Dewey, reviewed by CM) - Warn on invalid MINC2 spacing declarations, treat as missing (#1237) (Peter Suter, reviewed by CM)
- Refactor find_private_section for improved readability and maintainability (#1228) (MB, reviewed by CM)
Bug fixes
- Resolve test failure related to randomly generated invalid case (#1221) (CM)
Documentation
- Remove references to NiPy data packages from documentation (#1275) (Dimitri Papadopoulos, reviewed by CM, MB)
Maintenance
- Quality of life improvements for CI, including color output and OIDC publishing (#1282) (CM)
- Patch for NumPy 2.0 pre-release compatibility (#1250) (Mathieu Scheltienne and EL, reviewed by CM)
- Add spellchecking to tox, CI and pre-commit (#1266) (CM)
- Add py312-dev-x64 environment to Tox to test NumPy 2.0 pre-release compatibility (#1267) (CM, reviewed by EL)
- Resurrect tox configuration to cover development workflows and CI checks (#1262) (CM)
- Updates for Python 3.12 support (#1247, #1261, #1273) (CM)
- Remove uses of deprecated
numpy.compat.py3kmodule (#1243) (Eric Larson, reviewed by CM) - Various fixes for typos and style issues detected by Codespell, pyupgrade and refurb (#1263, #1269, #1270, #1271, #1276) (Dimitri Papadopoulos, reviewed by CM)
- Use stable argsorts in PARREC tests to ensure consistent behavior on systems with AVX512 SIMD instructions and numpy 1.25 (#1234) (CM)
- Resolve CodeCov submission failures (#1224) (CM)
- Link to logo with full URL to avoid broken links in PyPI (#1218) (CM, reviewed by Zvi Baratz)
API changes and deprecations
- The nibabel.pydicom_compat module is deprecated and will be removed in NiBabel 7.0. (#1280)
- The int_to_float and as_int functions are no longer needed to work around NumPy deficiencies and have been deprecated (#1272) (CM, reviewed by EL)
New Contributors
- @petsuter made their first contribution in #1237
- @blakedewey made their first contribution in #1253
- @ReinderVosDeWael made their first contribution in #1260
- @mscheltienne made their first contribution in #1250
Full Changelog: 5.1.0...5.2.0
5.1.0
New feature release in the 5.1.x series.
Most work on NiBabel so far has been by Matthew Brett (MB), Chris Markiewicz (CM), Michael Hanke (MH), Marc-Alexandre Côté (MC), Ben Cipollini (BC), Paul McCarthy (PM), Chris Cheng (CC), Yaroslav Halchenko (YOH), Satra Ghosh (SG), Eric Larson (EL), Demian Wassermann, Stephan Gerhard and Ross Markello (RM).
References like "pr/298" refer to github pull request numbers.
Enhancements
- Make
imagestatsavailable withimport nibabel(pr/1208) (Fabian Perez, reviewed by CM) - Use symmetric threshold for identifying unit quaternions on qform calculations (pr/1182) (CM, reviewed by MB)
- Type annotations for
nibabel.loadsave(pr/1213) andnibabel.spatialimages.SpatialImageAPIs (pr/1179),nibabel.deprecated,nibabel.deprecator,nibabel.onetimeandnibabel.optpkgmodules (pr/1188),nibabel.volumeutils(pr/1189),nibabel.filename_parserandnibabel.openers(pr/1197) (CM, reviewed by Zvi Baratz)
Bug fixes
- Require explicit overrides to write GIFTI files that contain data arrays with data types not permitted by the GIFTI standard (pr/1199) (CM, reviewed by Alexis Thual)
Maintenance
- Move compression detection logic into a private
nibabel._compressionmodule, resolving unexpected errors from pyzstd. (pr/1212) (CM) - Improved consistency of docstring formatting (pr/1200) (Zvi Baratz, reviewed by CM)
- Modernized README text (pr/1195) (Zvi Baratz, reviewed by CM)
- Updated README badges to include package distributions (pr/1192) (Horea Christian, reviewed by CM)
- Removed all dependencies on distutils and setuptools (pr/1190) (CM, reviewed by Zvi Baratz)
- Add a
_version.pyistub to allow mypy to run without building nibabel (pr/1210) (CM)
New Contributors
- @TheChymera made their first contribution in #1192
- @Factral made their first contribution in #1208
Full Changelog: 5.0.1...5.1.0
5.0.1
Bug-fix release in the 5.0.x series.
Most work on NiBabel so far has been by Matthew Brett (MB), Chris Markiewicz (CM), Michael Hanke (MH), Marc-Alexandre Côté (MC), Ben Cipollini (BC), Paul McCarthy (PM), Chris Cheng (CC), Yaroslav Halchenko (YOH), Satra Ghosh (SG), Eric Larson (EL), Demian Wassermann, Stephan Gerhard and Ross Markello (RM).
References like "pr/298" refer to github pull request numbers.
Bug fixes
- Support ragged voxel arrays in
ParcelsAxis(pr/1194) (Michiel Cottaar, reviewed by CM) - Return to cwd on exception in
InTemporaryDirectory(pr/1184) (CM)
Maintenance
- Add
py.typedto module root to enable use of types in downstream projects (pr/1196) (CM, reviewed by Fernando Pérez-Garcia) - Cache git-archive separately from Python packages in GitHub Actions (pr/1186) (CM, reviewed by Zvi Baratz)