nv-segment-ctmr
Original:🇺🇸 English
Translated
2 scripts
Used for running NV-Segment-CTMR on CT or MRI NIfTI volumes and recording label-map evidence. Not for clinical interpretation.
9installs
Sourcenvidia/skills
Added on
NPX Install
npx skill4agent add nvidia/skills nv-segment-ctmrTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →NV-Segment-CTMR
Purpose
- Used for running NV-Segment-CTMR on CT or MRI NIfTI volumes and recording label-map evidence. Not for clinical interpretation.
- Use the wrapper exactly as documented; do not replace the upstream entrypoint with a handwritten implementation.
- Manifest I/O: inputs are ; outputs are
ct_or_mr_volumeandlabel_map.result_json
Instructions
- Read before changing arguments, side effects, or validation gates.
skill_manifest.yaml - Run through the documented command below; keep outputs under a caller-provided run directory.
scripts/run_ctmr.py - If a host agent exposes , use
run_script; otherwise run the Bash/Python command shown below.run_script("scripts/run_ctmr.py", args=[...]) - Check the emitted JSON and paired verifier guidance before treating the run as evidence.
Available Scripts
| Script | Purpose | Arguments |
|---|---|---|
| Primary entrypoint declared by skill_manifest.yaml. | |
Prerequisites
- Runtime requirements: GPU/CUDA when declared by the manifest; Python packages listed in .
runtime.side_effects.pip_packages - Side effects: writes segmentation outputs under the caller's , may cache model assets under
--output-dir, and may contact~/.cache/huggingface/orhttps://github.comduring setup.https://huggingface.co - Run commands from the repository root unless an existing section below says otherwise.
Limitations
- This is a thin wrapper. Inference, preprocessing, and postprocessing are delegated entirely to the upstream MONAI bundle under $NV_SEGMENT_CTMR_ROOT or the repo-local fallback at .workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR.
- The default wrapper path runs automatic "segment everything" inference for CT_BODY, MRI_BODY, or MRI_BRAIN. MRI_BRAIN inputs must already follow the upstream brain preprocessing requirements.
- Label names are loaded from upstream configs when available. If a label dictionary is absent, the wrapper still records label IDs and marks only negative IDs as invalid.
- No clinical, diagnostic, regulatory, or treatment-planning claims.
- Not for clinical deployment, clinical interpretation, autonomous diagnosis, regulatory submission.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| Missing dependency or import error | Runtime package drift from | Install the packages declared in the manifest or use the documented setup command. |
| Empty or schema-invalid output | Wrong input path, unsupported modality, or upstream failure. | Re-run with a known fixture and inspect the wrapper JSON plus stderr. |
| Validation gate failure | Output violated a declared engineering invariant. | Keep the failed evidence pack and use the gate message to repair inputs or wrapper code. |
Wraps the upstream
CT/MRI segmentation bundle. The wrapper does not reimplement VISTA3D
inference. It shells out to the documented
entry point, then inspects the produced NIfTI label map.
NVIDIA-Medtech/NV-Segment-CTMRpython -m monai.bundle runExact Runnable Surface
For CT body segmentation user runs and benchmark answers, use this
fresh-environment-safe repo-root command shape exactly:
bash
export NV_SEGMENT_CTMR_ROOT="${NV_SEGMENT_CTMR_ROOT:-.workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR}" && \
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && \
python skills/nv-segment-ctmr/scripts/run_ctmr.py PATH_TO_IMAGE.nii.gz --modality CT_BODY --output-dir OUT_DIRDo not invent , , or commands. must be the user's supplied input path.
For benchmark/user run answers, the bash block is invalid if it includes
, , ,
, , or any other command that
creates, downloads into, or moves files inside the shared upstream checkout.
python -m nv_segment_ctmrinfer.pyMedical AI Skills runPATH_TO_IMAGE.nii.gzmkdir -p .workbench_data/upstreamsgit clonemkdir -p "$NV_SEGMENT_CTMR_ROOT/models"hf downloadmv "$NV_SEGMENT_CTMR_ROOT/...Preconditions
One-time maintainer setup only; do not include these commands in user answers
or benchmark commands. The benchmark environment already provides the
repo-local upstream cache and model files.
Clone and install the upstream bundle once. In this Medical AI Skills checkout, prefer
the repo-local cache path when it exists:
bash
mkdir -p .workbench_data/upstreams
test -d .workbench_data/upstreams/NV-Segment-CTMR/.git || \
git clone https://github.com/NVIDIA-Medtech/NV-Segment-CTMR.git \
.workbench_data/upstreams/NV-Segment-CTMR
export NV_SEGMENT_CTMR_ROOT=.workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && \
python -c "import monai, nibabel, numpy"
mkdir -p "$NV_SEGMENT_CTMR_ROOT/models"
test -e "$NV_SEGMENT_CTMR_ROOT/models/model.pt" || \
hf download nvidia/NV-Segment-CTMR --local-dir "$NV_SEGMENT_CTMR_ROOT/models/"
test -e "$NV_SEGMENT_CTMR_ROOT/models/model.pt" || \
mv "$NV_SEGMENT_CTMR_ROOT/models/vista3d_pretrained_model/model.pt" \
"$NV_SEGMENT_CTMR_ROOT/models/model.pt"The wrapper also searches
if is unset or points at a stale clone.
.workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMRNV_SEGMENT_CTMR_ROOTFor agent-generated user run commands, use the command in Usage. Do not copy
the one-time Preconditions block into the answer: do not create or write under
, do not run , and do not move files in the
shared upstream checkout during a benchmark or user run. Do not prepend
in a Python 3.12
environment; the upstream requirements pin NumPy 1.24.4, which does not build
cleanly there. In a fresh Python environment, install the minimal compatible
runtime shown above (, , , , ,
, , , , ) before the
wrapper. Cached models do not imply cached Python packages.
$NV_SEGMENT_CTMR_ROOThf downloadpip install -r "$NV_SEGMENT_CTMR_ROOT/requirements.txt"monai>=1.5,<1.6numpy<2nibabelscipytyperPyYAMLfirehuggingface_hubpytorch-igniteeinopsRuntime needs an NVIDIA GPU with CUDA. The upstream bundle may import on
CPU-only hosts, but this skill is declared as CUDA-required because the
published workflow is a 3D CT/MRI foundation model inference path.
Usage
From Medical AI Skills repo root:
bash
export NV_SEGMENT_CTMR_ROOT="${NV_SEGMENT_CTMR_ROOT:-.workbench_data/upstreams/NV-Segment-CTMR/NV-Segment-CTMR}" && \
python -m pip install "monai>=1.5,<1.6" "numpy<2" nibabel scipy typer PyYAML fire huggingface_hub pytorch-ignite einops && \
python skills/nv-segment-ctmr/scripts/run_ctmr.py PATH_TO_IMAGE.nii.gz \
--modality CT_BODY \
--output-dir runs/nv_segment_ctmr_demoReplace with the user's actual input path. Do not copy
the example fixture path into a user run. If the user provides an explicit
input path under , that path must be the first positional argument to
.
PATH_TO_IMAGE.nii.gzruns/scripts/run_ctmr.pySupported automatic segmentation modalities are , , and
. For , the upstream README requires brain-specific
preprocessing before bundle inference; pass an already preprocessed image to
this wrapper.
CT_BODYMRI_BODYMRI_BRAINMRI_BRAINPass to request specific upstream class IDs instead
of only the modality-level "segment everything" set. The evidence output
records input geometry, output mask path, observed label IDs, unexpected
labels, per-class voxel counts, per-class physical volumes from the mask
header spacing, runtime, upstream command, model inventory, and geometry
checks.
--label-prompts "3,14"Pass to record a reference label-map path under
. The skill does not compute Dice; that is the
paired verifier's job.
--ground-truth PATHinput.ground_truth_pathAnatomy plausibility and optional per-class Dice/IoU against the recorded
ground truth can be checked by for
CT-body outputs.
verifiers/ct_segmentation_quality_v1Not for clinical interpretation, production deployment, autonomous diagnosis,
or regulatory submission.