Add tof, sub, and subtraction tokens to the Lee T1c exclusion regex.
This prevents time-of-flight MRA and post/pre subtraction sequences
from matching T1-based names.
Fiesta/CISS/SSFP are balanced-SSFP (T2-dominant) sequences whose
short TE fools the seq/TE fallback, causing T1c misclassification.
Add them to the exclusion regex and guard against empty candidates.
Expand write_excluded_notes to enumerate all series in a timepoint
(not just T1c candidates) and parse DICOM txt metadata for each
series' description and protocol, producing richer no-T1c reports.
- Updated regex patterns for improved matching of series names and tags.
- Added functionality to reject non-head series based on study and series descriptions.
- Implemented max voxel spacing check to filter out series with excessive spacing.
- Enhanced the reconstruction script to handle dynamic-frame series exclusions and artifact pruning.
- Modified output paths for reconstructed NIfTI files and added QA screenshot generation.
- Improved argument parsing in benchmark and pseudo-labeling scripts for better flexibility.
- Introduced a new script for generating QA screenshots from reconstructed volumes.
Add a new benchmarking script and documentation to facilitate
performance comparisons between the different implemented pipelines.
- Create `scripts/benchmark_pipelines.py` for automated evaluation
- Add `BENCHMARKING.md` to outline benchmarking procedures and metrics
Update the nnU-Net pipeline to operate on native (unprocessed) volumes
instead of preprocessed ones. This allows nnU-Net to utilize its own
`plan_and_preprocess` logic for resampling, cropping, and normalization,
ensuring Pipeline B remains distinct from Pipelines A and C.
- Update `scripts/05_build_splits.py` to include native `img` and `label`
paths in the manifest rows.
- Modify `scripts_nnu/01_nnu_prepare_dataset.py` to symlink native
volumes and implement a label fix-up mechanism for non-conforming grids.
- Update `scripts_nnu/04_nnu_pseudo_label.py` and `05_nnu_eval_test.py`
to use native image paths and perform selection/evaluation in physical
mm on the native grid.
- Refactor `scripts_nnu/nnu_common.py` to handle native-grid label
alignment and volume-based selection gates.
- Update `README.md` to document the preprocessing differences between
Pipelines A/C and Pipeline B.
Enhance the training pipeline with stateful checkpointing and improve
the resilience of the data loading process against filesystem latency
and transient I/O errors.
- Implement auto-resuming in `train_ddp` by loading model, optimizer,
and scheduler states from `state.pt`.
- Add atomic state saving using temporary files to prevent corruption.
- Introduce `_read_nii` with exponential backoff retries to handle
transient NFS/filesystem failures during NIfTI reading.
- Add explicit error handling for missing or unreadable label files in
`PatchDataset`.
- Update `sliding_window_probs` to conditionally apply Test-Time
Augmentation (TTA) based on the `tta` parameter.
- Add `scripts/test_dataloader.py` for verifying dataset integrity.
Refactor the data loading and preprocessing pipeline to handle edge cases in
medical imaging data, including NaN/Inf values, shape mismatches, and
numerical instability during training.
- Update `01_build_ntuh_manifest.py` with improved regex for T1c detection,
spine exclusion, and deduplication logic based on acquisition timestamps.
- Enhance `PatchDataset` in `src/dataset.py` to handle NaN/Inf values,
clip intensity ranges, and ensure label/image shape alignment via
padding/trimming.
- Add a zero-gradient fallback in `src/training.py` to prevent DDP
synchronization failures when encountering NaN/Inf losses.
- Add `scripts/scan_procs.py` for process monitoring.
- Increase DataLoader timeout to prevent hangs during heavy I/O.