Skip to main content
skill CX Codex

dicom-series-to-volume — Claude Code skill: DICOM to NIfTI

Turns one CT DICOM series folder into an HU NIfTI volume plus a JSON summary with the affine. Handy before feeding scans to a segmentation model.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a claude-code
Open on GitHub

What dicom-series-to-volume does

The skill reads a single DICOM series, sorts slices by ImagePositionPatient, applies RescaleSlope and RescaleIntercept, and builds an affine from the orientation and spacing tags. You get a .nii.gz file and a JSON summary with n_slices, series_instance_uid, output.shape, output.spacing, output.axcodes, output.affine, hu_range and conversion time.

Everything runs through one script, scripts/series_to_volume.py, declared in skill_manifest.yaml. The call is python scripts/series_to_volume.py PATH_TO_DICOM_DIR --output PATH_TO_OUT.nii.gz. If your host agent exposes run_script, use that instead. Keep outputs under a run directory you provide.

You need Python with the packages listed in runtime.side_effects.pip_packages, and NiBabel 5.4 or newer so extreme-oblique axes stay labeled consistently across reorientation. Multi-series input is rejected at preflight; multi-frame DICOM and compressed transfer syntaxes (JPEG, JPEG2000, RLE) are out of scope. There is no voxel reorientation — the affine comes from the headers, so a downstream gate such as expected_axcodes should assert orientation before the volume reaches a segmentation model. For clinical work use a vetted converter like dcm2niix.

What it helps with

  • convert one CT DICOM series into an HU NIfTI volume
  • get the affine and voxel spacing in machine-readable JSON
  • sort slices by patient position before building the volume
  • check conversion quality with the paired dicom_volume_quality_v1 verifier
  • catch unsupported input at preflight instead of mid-pipeline

Example prompts for the agent

  • Convert this CT series folder to an HU NIfTI volume and show me the JSON summary
  • Run scripts/series_to_volume.py on PATH_TO_DICOM_DIR with output to runs/ct_volume.nii.gz
  • Verify the run with the paired dicom_volume_quality_v1 verifier

How to install dicom-series-to-volume

1Skills CLI (Vercel)

npx skills add NVIDIA/skills --skill dicom-series-to-volume -a claude-code

2Manually: put the files in place

~/.claude/skills/dicom-series-to-volume/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/dicom-series-to-volume/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about dicom-series-to-volume

How do I install dicom-series-to-volume in Claude?

Run npx skills add NVIDIA/skills --skill dicom-series-to-volume -a claude-code. The skill lands at ~/.claude/skills/dicom-series-to-volume/SKILL.md.

What does dicom-series-to-volume do?

It reads one CT DICOM series, sorts the slices, applies RescaleSlope and RescaleIntercept, and writes an HU volume as .nii.gz along with a JSON report on the affine.

Can I pass multi-frame DICOM or several series at once?

No. Multi-series input is rejected at preflight, and files with NumberOfFrames greater than 1 are not supported.

Source text

SKILL.md · Apache-2.0
---
name: dicom-series-to-volume
description: Used for converting one CT DICOM series folder to a HU NIfTI volume with affine evidence. Not for multi-frame DICOM or clinical use.
license: Apache-2.0
allowed-tools: Bash
metadata:
  author: 'NVIDIA MedTech Team'
  tags:
    - MedTech
    - DICOM
    - NIfTI
---

# dicom_series_to_volume

## Purpose
- Used for converting one CT DICOM series folder to a HU NIfTI volume with affine evidence. Not for multi-frame DICOM or clinical use.
- Use the wrapper exactly as documented; do not replace the upstream entrypoint with a handwritten implementation.
- Manifest I/O: inputs are `dicom_dir`; outputs are `nifti_volume` and `result_json`.

## Instructions
- Read `skill_manifest.yaml` before changing arguments, side effects, or validation gates.
- Run `scripts/series_to_volume.py` through the documented command below; keep outputs under a caller-provided run directory.
- If a host agent exposes `run_script`, use `run_script("scripts/series_to_volume.py", args=[...])`; otherwise run the Bash/Python command shown below.
- Check the emitted JSON and the paired `dicom_volume_quality_v1` verifier before treating the run as evidence.

## Available Scripts
| Script | Purpose | Arguments |
|---|---|---|
| `scripts/series_to_volume.py` | Primary entrypoint declared by skill_manifest.yaml. | `PATH_TO_DICOM_DIR [--output OUT.nii.gz]` |

## Prerequisites
- Runtime requirements: Python packages listed in `runtime.side_effects.pip_packages`.
- NiBabel 5.4 or newer is required so extreme-oblique axes remain labeled consistently across reorientation.
- Run commands from the repository root unless an existing section below says otherwise.

## Limitations
- Single-series only; multi-series input is rejected at preflight.
- Multi-frame DICOM (NumberOfFrames > 1 per file) not supported.
- Compressed transfer syntaxes (JPEG / JPEG2000 / RLE) not supported.
- No voxel reorientation. The affine is derived from DICOM headers and represented in NIfTI/RAS coordinates; a downstream gate (e.g. expected_axcodes) is expected to assert orientation before this volume is fed to a segmentation model.
- Not for clinical deployment, autonomous diagnosis, regulatory submission, production inference (use a vetted converter such as dcm2niix for that).

## Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| Missing dependency or import error | Runtime package drift from `skill_manifest.yaml`. | 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. |

Reads one DICOM series, sorts slices by `ImagePositionPatient`, applies
`RescaleSlope` and `RescaleIntercept`, builds an affine from orientation and
spacing tags, and writes a `.nii.gz` plus JSON summary.

```bash
python scripts/series_to_volume.py PATH_TO_DICOM_DIR --output PATH_TO_OUT.nii.gz
```

For a trusted run with the paired verifier:

```bash
python -m eval_engine.run_trusted skills/dicom-series-to-volume \
  --fixture PATH_TO_DICOM_DIR \
  --out runs/dicom_series_to_volume_trusted
```

Key output fields: `n_slices`, `series_instance_uid`, `output.path`,
`output.shape`, `output.spacing`, `output.axcodes`, `output.affine`,
`hu_range`, and `runtime.conversion_seconds`.

Scope limits: single-series CT only; no multi-frame DICOM, compressed transfer
syntax handling, RT structure sets, auto-reorientation, or clinical use.

© NVIDIA MedTech Team · Apache-2.0 · NVIDIA/skills

Similar skills

Everything for AI and ML →

From the same set178

digital-health-clinical-asr-finetune Skill for running stock NeMo SFT on Parakeet TDT v2 and measuring post-training KER. Useful at Stage 4 when priority Keyword Error Rate exceeds 0.3. CX Codex +1 1,900installs digital-health-clinical-asr-eval Scores a NeMo manifest for clinical ASR, computes WER, CER, KER and SER, and builds a five-section leaderboard. Use it when you need to decide between fine-tuning and fixing pronunciation coverage. CX Codex +1 1,900installs digital-health-clinical-asr-build Curates clinical terms, synthesizes eval audio through Magpie TTS and writes a NeMo manifest. Stage 2 of the Clinical ASR Flywheel. CX Codex +1 1,900installs digital-health-clinical-asr-setup Sets up the environment for NVIDIA's Clinical ASR Flywheel, verifies the NVIDIA_API_KEY, installs Python dependencies, and runs an end-to-end smoke test. CX Codex +1 1,900installs dicom-series-preflight Reads DICOM headers in a single series folder and returns JSON with a pass, warn or fail verdict before conversion or inference. CX Codex +1 1,900installs dicom-metadata-extract Runs a pydicom script on a single DICOM file to extract metadata and detect standard PHI tags. Useful for quick agent inspections of medical imaging files. CX Codex +1 1,900installs nemotron-policy-generator Turn moderation requirements or an existing policy into structured artifacts for NVIDIA Nemotron safety models. Useful when a project needs its rules prepared for model inference. CX Codex +1 1,900installs holoscan-install-source Builds and verifies NVIDIA Holoscan SDK 5.x from source using the repository container wrapper. Helps with Early Access branches and custom SDK components. CX Codex +1 1,800installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor