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.
25 lines
No EOL
1.5 KiB
Markdown
25 lines
No EOL
1.5 KiB
Markdown
# AGENTS.md
|
|
|
|
## Environment
|
|
|
|
This project uses a conda environment named `longitudinal-313` (Python 3.13).
|
|
|
|
Activate with:
|
|
|
|
```bash
|
|
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. |