Release Notes
2.1.9_1.0.20250506 [2025-08-13]
Fixes:
- Added explicit error handling for archive file type input with informative error message directing users to correct the file type before re-running
Maintenance:
- Updated
fw-gear-file-metadata-importerto>=1.5.9 - Removed explicit dependency on
flywheel-gear-toolkit(now handled byfw-gear-file-metadata-importer) - Removed explicit dependencies on
numpy,pydicom,matplotlib, andjinja2(now handled transitively)
2.1.8_1.0.20250506 [2025-08-12]
Enhancements:
- Added filetype validation to fail earlier when invalid filetype is provided as gear input
Maintenance:
- Enabled PyPI publishing in CI configuration by setting
PUBLISH_POETRYtotrue
2.1.7_1.0.20250506 [2025-07-15]
Fixes:
- Resolved HIGH and CRITICAL security vulnerabilities in container image dependencies
Maintenance:
- Updated upstream
dcm2niixfrom1.0.20240202to1.0.20250506 - Pinned
jqto1.8.0-r0andgitto2.50.1-r0for security patches - Migrated from
poetrytouvfor dependency management - Updated
pyproject.tomlto use PEP 621 format withhatchlingbuild backend - Moved
gitfrom build-time to runtime dependencies for improved layer caching - Updated pre-commit hook from
poetry_exporttopyproject_export
2.1.6_1.0.20240202 [2025-06-13]
Maintenance:
- Added
eolfixhook to.pre-commit-config.yamlto ensure consistent line endings across the codebase - Removed trailing whitespace from documentation and configuration files
- Fixed inconsistent line endings in
Dockerfile,README.md,CONTRIBUTING.md, and shell scripts
2.1.5_1.0.20240202 [2025-06-09]
Fixes:
- Improved support for
PAR/RECfiles by adding proper DICOM file detection - Fixed
file.infoobject handling for non-DICOM NIfTI files to prevent empty metadata headers - Improved DICOM metadata extraction to only process valid DICOM files
Maintenance:
- Migrated base image to
flywheel/python:3.12-alpine - Upgraded
pythonruntime from3.11to3.12 - Updated
pytestfrom^6.1.2to^8 - Updated
ipythonfrom^7.22.0to^8.10.0 - Updated
jinja2to^3.1.5to resolve security vulnerabilities - Restructured Dockerfile to use multi-stage builds with base, build, dev, and production stages
- Migrated from
apttoapkpackage manager for Alpine Linux - Updated CI configuration to increase coverage requirement to 80% and enable classification validation
- Updated
.pre-commit-config.yamlhooks reference from commit hash tossebranch - Updated
.gitlab-ci.ymlreference from commit hash tossebranch - Added
show-job,uid, andgidfields to manifest configuration - Removed
tests/Dockerfilein favor of unified build process
Documentation:
- Clarified metadata extraction behavior in README for BIDS sidecar and
file.infopopulation - Updated description of DICOM metadata extraction to specify it applies to input DICOM headers
- Fixed markdown link formatting in CONTRIBUTING.md
2.1.4_1.0.20240202 [2024-09-26]
Fixes:
- Fixed metadata upload issue where gear attempted to upload nonexistent JSON sidecar files when
bids_sidecarconfig option was set ton - Added warning log when both
bids_sidecarandsave_sidecar_as_metadataare set ton, alerting users that no BIDS sidecar information will be saved
Maintenance:
- Updated CI/CD configuration to migrate from
sse-qa-citoqa-ciproject - Disabled
PYTEST_COV_FAIL_UNDERrequirement (set to0) in CI variables - Disabled PyPI package publishing in CI by default
- Enhanced test coverage to verify metadata object is not returned for JSON sidecar files when
bids_sidecarisn - Added test coverage to verify warning is logged when both
bids_sidecarandsave_sidecar_as_metadataaren - Updated pre-commit hooks configuration: added
hadolint,jsonlint,linkcheck, andmarkdownlinthooks - Simplified
ruffpre-commit arguments by removing inlineE501ignore
2.1.3_1.0.20240202 [2024-09-17]
Maintenance:
- Updated
fw-gear-file-metadata-importerfrom^1.4.0to^1.5.2to limitPerFrameFunctionalGroupsSequencemetadata to first frame - Upgraded
pythonversion requirement from^3.9to^3.10 - Added
matplotlibat version3.9.0 - Removed
nibabelandfw-fileexplicit dependencies (now handled transitively)
2.1.2_1.0.20240202 [2024-08-06]
Fixes:
- Fixed classification preservation when using the
tagconfiguration option. Previously, providing a tag would cause any existing.metadata.jsonfile to be lost. The tag is now added to.metadata.jsonalongside existing data. - Fixed metadata attachment for NIfTI files when using
save_sidecar_as_metadata. Data from sidecar is now correctly attached as metadata instead of DICOM tags (which had different units since BIDS uses seconds while DICOM uses milliseconds).
Maintenance:
- Pinned
numpyto<2.0to maintain compatibility - Refactored metadata generation to return dictionary instead of creating file directly
- Removed unused
pprintimport from metadata module - Improved metadata handling by updating container metadata through gear context instead of file-based approach
2.1.1_1.0.20240202 [2024-06-28]
Fixes:
- Fixed metadata structure to only include sidecar info in the
infofield, removing duplicate DICOM data when sidecar is present
2.1.0_1.0.20240202 [2024-04-30]
Enhancements:
- Added
save_sidecar_as_metadataconfig option to maintain backwards compatibility with previous BIDS workflow - Automatically detect BIDS workflow version from
project.infowhensave_sidecar_as_metadatais not explicitly set - Improved logging for
bids_sidecarconfig option handling
Fixes:
- Fixed
bids_sidecarconfig optionsnandoto work as expected by ensuring sidecar is always generated during conversion, then handling user preference during resolve stage
Maintenance:
- Updated
fw-filefrom1.3.3to3.0.1 - Updated
fw-gear-file-metadata-importerfrom1.2.5to1.4.0 - Upgraded
dcm2niixfrom1.0.20230411to1.0.20240202 - Updated
pythonfrom3.8to3.11 - Replaced deprecated
distutils.utilwith inline boolean conversion - Migrated linting from
blackandisorttoruffandruff_format - Updated test suite to remove unused variables and improve assertion patterns
- Improved code formatting and type hints throughout codebase
- Refactored
generate_gear_argsinto separate stage-specific functions:generate_prep_args,generate_dcm2niix_args, andgenerate_resolve_args
2.0.3_1.0.20230411 [2023-09-22]
Enhancements:
- Changed default value of
bids_sidecarconfiguration option fromntoy
Fixes:
- Fixed handling of
bids_sidecaroption when set tonto properly exclude JSON sidecar files from output
Documentation:
- Updated
bids_sidecarconfiguration description to reflect new default value ofy(yes)
2.0.2_1.0.20230411 [2023-06-29]
Enhancements:
- Added automatic tagging of input file with
dcm2niix-failuretag when gear execution fails (controlled bytag_on_failureconfig option) - Added automatic removal of
dcm2niix-failuretag from input file when gear completes successfully after previous failure
Fixes:
- Fixed argument duplication in interface method call by correcting parent class reference in
_format_argmethod
Documentation:
- Added documentation for
tagandtag_on_failureconfig options explaining tagging behavior
2.0.1_1.0.20230411 [2023-05-18]
Enhancements:
- Added
tag_on_failureconfiguration option to automatically tag input files withdcm2niix-failurewhen conversion fails
Maintenance:
- Updated
dcm2niixfromv1.0.20220720tov1.0.20230411
2.0.0_1.0.20220720 [2023-04-10]
Enhancements:
- Added support for
.mvecfile output when applicable, matching.bvaland.bvechandling
Fixes:
- Fixed metadata storage location to
file.info.header.dicomfor better organization
Maintenance:
- Migrated from
poetrytopipwithrequirements.txtfor dependency management - Updated Docker base image from
neurodebiantoflywheel/python - Updated
nipypefrom1.5.0to1.8.4 - Pinned
flywheel-gear-toolkitto0.6.10 - Pinned
fw-fileto1.3.3andfw-gear-file-metadata-importerto1.2.5 - Added version pinning for system packages in Docker
- Improved test coverage with additional unit tests
Documentation:
- Updated README with reformatted gear documentation
- Added FAQ and changelog files
- Updated CONTRIBUTING guide with development workflow
- Added merge request template
Breaking Changes:
- Removed PyDeface functionality (now available as separate gear)
- Removed PyDeface configuration options (
pydeface,pydeface_cost,pydeface_nocleanup,pydeface_verbose) - Removed PyDeface input options (
pydeface_template,pydeface_facemask) - Changed metadata storage location from duplicate sidecar to
file.info.header.dicom - Sidecar information no longer duplicated in metadata; set
bids_sidecartoyto maintain BIDS information
1.4.4_1.0.20220720 [2023-04-17]
Enhancements:
- Added support for
.mvec(motion vector) files indcm2niixoutput by extendingDcm2niixOutputSpecwithmvecsoutput field
Fixes:
- Fixed
dcm2niixinterface to properly include.mvecfiles in conversion output alongside.bvaland.bvecfiles
Maintenance:
- Refactored
Dcm2niixEnhanced._parse_stdout()method into_parse_files()and_list_outputs()methods for improved file type handling - Updated file type handling logic to recognize and process
.mvecfiles throughout the codebase infw_gear_dcm2niix/dcm2niix/interfaces.py:72-111 - Updated docstrings in
metadata.pyandresolve.pyto document.mvecfile support
1.4.2_1.0.20220720 [2023-01-23]
Enhancements:
- Updated
dcm2niixfrom version1.0.20211006to1.0.20220720 - Added support for
%dicom%filename template option to use input DICOM filename as output filename
Fixes:
- Fixed handling of empty strings in DICOM
SeriesDescriptionfield - Fixed conditional logic in
convert_directory()forcompression_levelvalidation - Fixed handling of
bids_sidecarconfiguration for bothnandooptions - Fixed unused import and variable assignments throughout codebase
- Corrected subprocess context managers to properly handle process cleanup
Maintenance:
- Migrated CI configuration to use
flywheel-io/scientific-solutions/etc/sse-qa-citemplates - Updated pre-commit hooks configuration with additional linters (
hadolint,markdownlint,yamllint,jsonlint,pylint,pydocstyle,mypy,shellcheck,linkcheck) - Added
.markdownlint.yamlconfiguration file - Updated base Docker image from
neurodebian:bionictoneurodebian@sha256:d3d3a46841d5247a03f3368db37ad21c84f9d6ba8d1cce2716559970aa3 c1de3(Focal) - Improved Dockerfile with
hadolintcompliance, including proper layer caching,--no-install-recommendsflags, and cleanup commands - Added
SHELLdirective andLABELinstruction following best practices - Enhanced code quality with
pylintcompliance improvements across all modules - Improved logging with f-string to
%formatting conversion for better performance - Refactored error handling and conditional logic for better readability
- Added docstrings to
__init__.pyfiles for all sub-modules - Updated
poetrydependencies inpyproject.toml
Documentation:
- Reformatted README with improved line wrapping and readability
- Updated CONTRIBUTING with proper shell code block syntax
- Enhanced release notes formatting and organization
- Updated code comments with proper grammar and formatting
- Added clarifications for complex logic in inline comments
1.4.1_1.0.20211006 [2022-04-28]
Enhancements:
- Added
sanitize_filenameconfiguration option to sanitize output filenames when using infile name - Added
debugconfiguration option to enable debug logging mode
Fixes:
- Fixed metadata extraction to be compatible with
file-metadata-importerby usingfw-gear-file-metadata-importerfor DICOM header processing
Maintenance:
- Enabled PyPI publishing in CI configuration
- Updated
flywheel-gear-toolkitfrom^0.1.3to^0.5.0 - Updated
nibabelfrom~3.1.0to~3.2.0 - Updated
pydicomfrom~2.0.0to^2.1.0 - Updated
blackfrom^20.8b1to^22.1.0 - Updated
mypyfrom^0.790to^0.910 - Added
fw-gear-file-metadata-importerdependency at^1.2.1 - Updated pre-commit hooks to pinned versions instead of
masterbranch - Added
yamllintdisable directives for line length rules in CI configuration files - Changed system package from
bsdtartolibarchive-toolsinDockerfile - Added
-DUSE_GIT_PROTOCOL=OFFflag tocmakeconfiguration fordcm2niixbuild - Protected
mainbranch in addition tomasterin pre-commit hooks
Documentation:
- Reformatted indentation in metadata list in
README.md - Removed extra blank lines and trailing whitespace in multiple files
- Fixed markdown formatting in
tests/assets/README.md
1.4.0_1.0.20211006 [2022-02-22]
Enhancements:
- Changed default filename template from
%fto%f_%p_%t_%sto align withdcm2niixtool defaults - Changed default lossless scaling from
n(no, but uint16->int16) too(original) to align withdcm2niixtool defaults
Fixes:
- Fixed issue where files were not correctly saved when rescaling was happening due to incorrect filepath extraction from
dcm2niixstdout - Fixed parsing of
dcm2niixoutput to handle malformed lines containingscale/slopein warning messages
Maintenance:
- Optimized
Dockerfilelayer ordering to improve build time by moving frequently-changing code layers to the bottom
1.3.4_1.0.20211006 [2022-02-15]
Fixes:
- Fixed
merge2doption to use integer type instead of string, resolving argument handling issues - Corrected
merge2dparameter processing to use proper NiPype interface instead of raw command-line arguments
Maintenance:
- Extended NiPype
Dcm2niixInputSpecto supportmerge_imgsparameter with proper trait definition - Updated
merge2dconfiguration schema to usenumbertype with enum values0,1,2instead of string values - Reformatted release notes structure for improved readability
- Removed unused commented code from
convert_directory()function
Documentation:
- Clarified
merge2dparameter description to use numeric options (0=no,1=yes,2=auto) instead of string values
1.3.3_1.0.20211006 [2022-01-25]
Enhancements:
- Series Description is now optional for DICOM processing
merge2doption default now set toauto(merge2d="2")- JSON sidecar now included by default (
bids_sidecar='y')
Fixes:
- Escaped metacharacters in filename to prevent gear breakage when fields used for output name contain special characters (
[]*) - Adjusted check for sidecar to output image matching and switched metadata generation to use naming fix
Maintenance:
- Upgraded
dcm2niixfrom1.0.20201102to1.0.20211006 - Upgraded
pythonfrom3.6to3.9.0 - Added CI/CD pipeline configuration with GitLab CI
- Added pre-commit hooks configuration for code quality checks
- Light refactoring of wrapper code and package structure
- Renamed package directory from
dcm2niix_geartofw_gear_dcm2niix
1.3.0_1.0.20201102 [2021-04-09]
Enhancements:
- Added support for nested DICOM archives with multiple subdirectories, flattening hierarchical structures for processing
- Added
tally_files()function to profile directory contents and map file paths - Added
flatten_directory()function to convert nested directory structures to flat layouts
Fixes:
- Fixed handling of archives with multiple subdirectories by flattening contents before processing
- Added collision detection to prevent overwriting files with identical names from different subdirectory levels
Maintenance:
- Refactored archive extraction logic to handle multiple subdirectory levels (
>=1instead of==1) - Enhanced test coverage with parametrized tests for nested DICOM archives
- Added test assets for nested directory structures (one level, two levels, uneven nesting)
- Added collision detection test cases for nested archives
Documentation:
- Added
CONTRIBUTING.mdwith Docker-based development environment setup instructions - Enhanced test docstrings with detailed descriptions of test purposes and parameters
1.2.2_1.0.20201102 [2021-02-05]
Maintenance:
- Reorganized project structure into
dcm2niix_gearpackage - Added
setup.pyfor package distribution withfw-gear-dcm2niixname - Updated imports across all modules to reference new
dcm2niix_gearpackage structure - Replaced deprecated
nibabelget_data()method withget_fdata()in test files
1.2.1_1.0.20201102 [2021-01-15]
Fixes:
- Fixed command execution by converting
Pathobjects to strings inpydeface_run.pybefore passing to command-line arguments - Fixed handling of
output.outputs.bidsto properly support both string and list types inrun.py - Fixed metadata generation to correctly pass
output_sidecar_filestoresolve.setup()instead of incorrectwork_dirparameter inrun.py - Fixed metadata capture to correctly handle
.bvalsand.bvecsoutputs by adding them tooutput_image_fileslist inrun.py - Fixed
submit_instance_runs.pyto properly quotefind_one()argument - Added JSON serialization handler for bytes objects with UTF-8 and Latin-1 fallback decoding in
metadata.py
Maintenance:
- Refactored
metadata.pyby splittinggenerate()function into separatecapture()andcreate_file()functions for improved modularity - Refactored metadata file association logic to use
Path(sidecar).stemmatching instead of regex-based string substitution inmetadata.pyandresolve.py - Refactored
retain_gear_outputs()to iterate over sidecars first, then match files by stem name inresolve.py - Changed default value of
retain_sidecarparameter fromTruetoFalseinmetadata.generate()andresolve.setup()functions - Updated test files to reference development version
1.2.1_1.0.20201102_dev1and1.2.1_1.0.20201102_dev2inassess_instance_runs.py,submit_instance_runs.py, andbuild_gear.sh - Removed unused
reimport frommetadata.py - Improved code organization by moving try-except block for nipype output handling in
run.py - Replaced
glob.glob()withos.listdir()for better clarity inresolve.setup()when moving files to output directory - Changed variable name from
fto more descriptive names inparse_config.pyfor improved code clarity
1.2.0_1.0.20201102 [2020-12-10]
Enhancements:
- Added support for case-insensitive PAR/REC file extensions (
image.parandimage.rec) - Added workflow diagram to documentation (
gear_workflow.svg) - Renamed configuration option
compress_niftitocompress_imagesfor clarity - Updated documentation with improved formatting and structure throughout README
Fixes:
- Fixed error handling when
dcm2niixproduces no outputs - Fixed filename parsing issues for files with path separators and non-ASCII characters
- Fixed validation logic for mutually exclusive
retain_niftiandoutput_nrrdparameters - Fixed NRRD file pattern matching in metadata generation to include
.nrrdextension
Documentation:
- Expanded README with detailed configuration descriptions and usage tips
- Added notes about
.nrrdoutput requiringcompress_imagesset to'n' - Clarified
bids_sidecarmetadata handling behavior - Added implementation notes for
comment,filename, andignore_errorsoptions - Updated manifest descriptions for clearer input file specifications
- Added tip about using
%ffilename template for downstream BIDS curation
1.1.0_1.0.20201102 [2020-11-13]
Enhancements:
- Added
commentconfiguration option to store comments (up to 24 characters) in NIfTIaux_fileand JSON sidecars - Added
dcm2niix_verboseconfiguration option to include verbose output fromdcm2niixcall - Added
output_nrrdconfiguration option to export as NRRD format instead of NIfTI - Added internal compression option
'i'tocompress_nifticonfiguration - Expanded
filenametemplate options to include%b(basename),%o(mediaObjectInstanceUID),%r(instance number), and%q(sequence name tag(0018,1020)) - Changed
lossless_scalingfrom boolean to string with options'y'(scale),'n'(no, but uint16->int16),'o'(original) for finer control - Changed
bids_sidecardefault from'y'to'n' - Added comprehensive metadata documentation listing all DICOM tags extracted by
dcm2niixandpydicom
Maintenance:
- Updated
dcm2niixfromv1.0.20200331tov1.0.20201102
Documentation:
- Updated
filenameconfiguration description with complete list of template variables and their meanings - Updated
compress_nifticonfiguration description to include'i'(internal) option - Updated
lossless_scalingconfiguration description to reflect string-based options - Updated
merge2dconfiguration description to clarify it merges regardless of echo, exposure, etc. - Added metadata section documenting DICOM tags extracted via
dcm2niixandpydicom - Updated
convert_only_seriesexample formatting to use inline code formatting
1.0.0_1.0.20200331 [2020-10-07]
Enhancements:
- Added CircleCI configuration for automated build and test workflows
- Added GitHub release drafter workflow for automated release note generation
- Added support for DICOM decompression via
gdcmconvbefore conversion withdecompress_dicomsconfig option - Added support for removing incomplete trailing volumes with
remove_incomplete_volumesconfig option - Added support for coil combined data extraction with
coil_combineconfig option - Added support for PAR/REC file pairs as direct inputs without archive packaging
- Added
ignore_errorsconfig option to preserve outputs whendcm2niixexits with errors - Added PyDeface integration for facial structure removal from NIfTI files
- Added optional PyDeface template and facemask inputs for customized defacing
- Added comprehensive metadata extraction from DICOM headers including acquisition parameters
- Added BIDS sidecar generation with anonymization support via
anonymize_bidsconfig option - Added automatic retention of associated files (
.bval,.bvec) when present
Maintenance:
- Added
dcm2niixversionv1.0.20200331 - Added
python3,pip3, and scientific computing dependencies (nibabel,pydicom,pydeface) - Added
FSL 5.0for PyDeface support - Added
gdcmconvfor DICOM decompression capabilities - Added
nipypefordcm2niixinterface - Added
flywheel-gear-toolkitfor gear framework
Documentation:
- Added comprehensive README with gear description, input specifications, and configuration options
- Added test suite with
pytestfor validation of arrange, PyDeface, and utility functions