longitudinal/AGENTS.md
Furen Xiao a65189cd33 feat(pipelines): integrate niftyreg and adopt Mattes MI as the benchmark headline score
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.
2026-09-29 09:47:28 +08:00

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-313 conda environment.
  • GPU is available (CUDA 12.6); use torch.device('cuda') when appropriate. Multi-GPU stages of Pipelines A and C run via torchrun --standalone --nproc_per_node N (rank = GPU).
  • No lint/test tooling is configured yet; run scripts directly with python <script> from the repo root.