Add `register_niftyreg` as the sixth rigid CT→T1c pipeline using `reg_aladin` (symmetric block matching + trimmed least squares, NCC similarity). Runs natively via `conda install -c conda-forge niftyreg`; no Docker required. Change the benchmark's primary reported metric from geometric skull-ring QA to the achieved Mattes MI (`mi_ct_mr`, nats) between the warped CT and the original MR over the MR head. Geometric QA fields are still recorded per case in the JSON output. Raise the SimpleITK benchmark-mode optimizer budget from 150 to 2000 iterations per pyramid level so all toolkits are compared on an equal iteration footing. Update `REGISTRATION_BENCHMARK.md` (five→six pipelines, niftyreg row, elastix bin count 10→32), `AGENTS.md` (toolkit list), and `bench_registration.py` docstrings/usage accordingly.
1.5 KiB
AGENTS.md
Environment
This project uses a conda environment named longitudinal-313 (Python 3.13).
Activate with:
source /opt/conda/etc/profile.d/conda.sh && conda activate longitudinal-313
Key packages: torch 2.14 (+cu126), torchvision, monai 1.6 (pip, Pipeline C), numpy, scipy, pandas, scikit-learn, scikit-image, matplotlib, nibabel, SimpleITK. Registration toolkits (benchmark, see REGISTRATION_BENCHMARK.md): itk + itk-elastix, antspyx, niftyreg 1.5.69 (conda install -c conda-forge niftyreg, provides reg_aladin), plus Docker images freesurfer/synthmorph and vboussot/elastix_impact.
Project
Longitudinal (repeated-measures) analysis of medical imaging data. Repo is at an early stage — see README.md for any project notes.
All path config lives in config/paths.json — the external data roots the code reads or writes (data, lee, m6, ntuh_register_inv). Code resolves them through src.common (PATHS dict, path(name) lookup, DATA/d() for data/... paths). To move any dataset, only edit config/paths.json; the repo root is derived from the code location (override with LONGITUDINAL_ROOT if needed).
Conventions
- All Python commands must run inside the
longitudinal-313conda environment. - GPU is available (CUDA 12.6); use
torch.device('cuda')when appropriate. Multi-GPU stages of Pipelines A and C run viatorchrun --standalone --nproc_per_node N(rank = GPU). - No lint/test tooling is configured yet; run scripts directly with
python <script>from the repo root.