Release Notes
1.0.2 [2026-08-21]
Fixes:
- Fixed repository merge settings to better align with CI expectations.
1.0.1 [2026-08-19]
Fixes:
- Fixed SSRF vulnerability in
download_modelby restricting URL schemes tohttpandhttpsonly.
Maintenance:
- Added
.gitattributesfor Git LFS tracking of pre-trained model.zipfiles. - Updated manifest classification and gear metadata.
1.0.0 [2026-04-23]
Enhancements:
- Upgraded from
nnunetv1tonnunetv2for inference, enabling the use of the latest nnU-Net architecture (nnUNetResEncUNetMPlans). - Bundled ten pre-trained weights (Medical Segmentation Decathlon datasets
Dataset001_BrainTumourthroughDataset010_Colon) directly into the gear, eliminating the need to download models at runtime. - Added
pretrained_models/hierarchy_curator_training.pyscript for trainingnnunetv2models on Flywheel using the Hierarchy Curator. - Added
get_pretrained_model()utility to install bundled pre-trained model zip archives at inference time.
Fixes:
- Fixed
process_file_name()to castinput_pathtostrbefore applying the regex matcher, preventing aTypeErroronPathobjects. - Fixed nested
else/ifinsplit_input_as_needed()to useelif, removing unreachable code path. - Copied input files to the work directory before processing to work around Flywheel's restriction on modifying the input directory.
Maintenance:
- Migrated from
flywheel-gear-toolkit/GearToolkitContexttofw-gear/GearContext. - Migrated from
poetrytouvfor dependency management and build system (hatchling). - Upgraded base image from
flywheel/nnunetv1_base:0.2.0toflywheel/python:3.12-wolfi-buildwith a multi-stageDockerfile. - Upgraded
pythonruntime from3.11to3.12. - Renamed package from
fw_gear_nnunetv1tofw_gear_nnunetthroughout. - Updated CI configuration to use a larger runner with a
4htimeout for gear tests. - Updated tests to use
fw-gearmocks and added@pytest.mark.skipifguard fornnunetv2-dependent tests. - Added
LICENSEandNOTICESfiles.
Documentation:
- Rewrote
README.mdto documentnnunetv2models, updated dataset list, workflow steps, and license references. - Updated
CONTRIBUTING.mdto replacepoetryinstructions withuvequivalents and expanded pre-commit hook descriptions.
Breaking Changes:
- Renamed gear from
nnunetv1tonnunet; any workflows referencing the gear by name will need to be updated. - Renamed Python package from
fw_gear_nnunetv1tofw_gear_nnunet.
0.1.2 [2024-11-07]
Enhancements:
- Added support for up to 4 input modalities (
modality_0throughmodality_3), enabling multi-modal inference workflows. - Expanded
pretrained_modeloptions 1 to 10, covering Tasks 001–010 (brain tumour, heart, liver, hippocampus, prostate, lung, pancreas, hepatic vessel, spleen, and colon). - Added automatic 4D NIfTI input splitting into separate 3D modality volumes via new
split_input_as_needed()utility. - Added automatic input filename correction to comply with
.*_000[0-9].nii.gzformat required bynnUNet_predict. - Added model download functionality via new
download_model()utility, fetching pre-trained models from Zenodo at runtime. - Added input validation to ensure the number of provided modalities matches the selected model's expected count before inference.
- Added dynamic
model_urlto QC metadata output, replacing a hardcodedTask004_HippocampusURL.
Fixes:
- Fixed
nnUNet_predictsubprocess call to usesubprocess.check_output()with error handling, replacing silentsubprocess.run()that did not detect failures. - Fixed
parse_configto skip modality inputs that are not provided (i.e., whencontext.get_input_path()returnsNone), preventingNonevalues from entering the modality inputs dictionary.
Maintenance:
- Updated base Docker image from
flywheel/nnunetv1_base:0.1.0toflywheel/nnunetv1_base:0.2.0. - Extracted input preparation and filename correction logic from
main.pyinto newfw_gear_nnunetv1/utils.pymodule. - Refactored
run()inmain.pyto accept a pre-preparedinput_folderinstead of rawmodality_inputsandwork_folderarguments. - Updated
run.pyto orchestrate input preparation and model download before callingrun(). - Updated and expanded test coverage in
tests/test_main.pyandtests/test_parser.py; added newtests/test_utils.pywith comprehensive tests for utility functions. - Updated
pyproject.tomllicense field to reflect dual-license (Apache 2.0 for nnUNet source, MIT for the remainder of the gear).
Documentation:
- Updated
README.mdto document all 4 input modalities, 10 pretrained model options,debugconfig option, and improved workflow description. - Updated
README.mdcitations to include two additional references for pretrained models and the Medical Segmentation Decathlon dataset. - Added license section to
README.mdclarifying dual-license terms. - Updated
manifest.jsoncitation field to include all three references.
0.1.1 [2024-09-26]
Enhancements:
- Added nnUNet v1 inference gear supporting
Task004_Hippocampuspretrained model onNIfTIinput files. - Added automatic filename normalization to comply with nnUNet's
.*_0000.nii.gzinput format requirement. - Added QC metadata attachment to output files with pass/fail state based on inference exit code. Maintenance:
- Added
Dockerfileusingflywheel/nnunetv1_base:0.1.0as base image withpython 3.11runtime. - Added CI/CD pipeline configuration via
.gitlab-ci.yml. - Added
pre-commithooks for linting and testing withruff,pytest,hadolint,markdownlint,yamllint, andjsonlint. - Added
pyproject.tomlwithpoetrybuild system, depending onflywheel-gear-toolkit ^0.6andflywheel-sdk ^18. - Added unit tests for
run()andparse_config()functions.
Documentation:
- Added
README.mdwith gear overview, inputs, config, outputs, and workflow. - Added
CONTRIBUTING.mdwith development setup and contribution guidelines. - Added
FAQ.mdas a placeholder for frequently asked questions.