Release Notes
0.1.0 [2026-09-28]
Enhancements:
- Initial release of the
lesion-location-classifiergear, which classifies the coarse anatomical site of a lesion on CT using the FMCIB foundation model's fine-tuned Task-1 arm (Pai et al., Nature Machine Intelligence 2024). - Accepts a CT series (
ct-dicom) and a DICOM RT Structure Set (lesion-rtstruct) as inputs and outputs a per-lesion probability distribution over eight anatomical site classes as CSV and JSON. - Supports configurable ROI selection via
roi_pattern(regex), minimum lesion volume filtering viamin_lesion_volume_mm3, and confidence thresholding viamin_confidence. - Validates CT inputs against DICOM headers (not just Flywheel metadata), ensuring modality
CTis confirmed from the file itself before inference. - Cross-checks the RT Structure Set's referenced
SeriesInstanceUIDagainst the loaded CT series, failing fast on a mismatched input pair. - Derives lesion seed points from RTSTRUCT contours via rasterisation and connected-component analysis, reporting one prediction per component.
- Runs inference on GPU when available, falling back to CPU automatically.
- Bakes the FMCIB fine-tuned Task-1 checkpoint (~777 MB) into the Docker image at build time, requiring no network egress at runtime.
- Outputs are named after the
ct-dicominput stem and carry aResearch_Use_Onlysuffix; results include the full 8-class probability distribution alongsidepredicted_siteandconfidence. - Exits
0with astatus=no_lesionsrow when no ROI matchesroi_patternor every connected component is belowmin_lesion_volume_mm3.
Maintenance:
- Built on
pytorch/pytorch:2.8.0-cuda12.6-cudnn9-runtimebase image withpython3.11. - Uses
uvfor dependency management and virtual environment setup. - Configured CI via
.gitlab-ci.ymlwith coverage threshold and large-runner override for the gear test job. - Added
pre-commithooks includingruff,hadolint,pytest, andgearcheck.
Documentation:
- Added
README.mdwith full gear overview, inputs, config, outputs, workflow diagram, and FAQ. - Added
CONTRIBUTING.mdwith setup, dependency management, linting, and merge request guidelines.
0.1.0-rc.1 [2026-08-28]
Initial development release (pre-release).
Enhancements:
- Create a skeleton of the gear with all components and package
fw_gear_nsclc_anatomy_classifierand check all CI-CD steps pass. - Dockerfile with the FMCIB inference stack (torch 2.8.0+cu126, torchvision 0.23.0, monai 1.6.0,
foundation-cancer-image-biomarkerinstalled--no-deps) and the fine-tuned Task-1 checkpoint (~741MB, CC-BY-4.0) baked into the image. - Manifest with
ct-dicomandlesion-rtstructDICOM inputs anddebug/min_confidence/min_lesion_volume_mm3/roi_patternconfig options. model.predictreturns the full 8-class softmax distribution per lesion rather than an argmax, so results stay relabellable without re-running inference.- New
sites.pymodule owning the class vocabulary, so the ordering is stated in one place rather than assumed acrossmodelandoutput.