dicom-series-to-volume — скилл для Claude Code: DICOM в NIfTI
Превращает папку с одной CT-серией DICOM в HU-том NIfTI и JSON-отчёт с аффином. Пригодится, когда нужно скормить снимки модели сегментации.
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a claude-codeЧто делает dicom-series-to-volume
Скилл читает одну серию DICOM, сортирует срезы по ImagePositionPatient, применяет RescaleSlope и RescaleIntercept и собирает аффин из тегов ориентации и шага. На выходе — .nii.gz и JSON со сводкой: n_slices, series_instance_uid, output.shape, output.spacing, output.axcodes, output.affine, hu_range и время конвертации.
Внутри один скрипт scripts/series_to_volume.py, объявленный в skill_manifest.yaml. Запуск: python scripts/series_to_volume.py PATH_TO_DICOM_DIR --output PATH_TO_OUT.nii.gz. Если хост-агент умеет run_script, вызывайте через него. Выходные файлы держите в отдельной папке прогона.
Нужен Python с пакетами из runtime.side_effects.pip_packages и NiBabel 5.4 или новее — иначе оси при сильном наклоне разметятся непоследовательно. Мультисерийный вход отсекается на префлайте, мультикадровые DICOM и сжатые transfer syntax (JPEG, JPEG2000, RLE) не поддерживаются. Переориентации вокселей нет: аффин берётся из заголовков, поэтому ориентацию должен проверить отдельный гейт вроде expected_axcodes до подачи тома в модель. Для клинической задачи берите проверенный конвертер вроде dcm2niix.
Какие задачи решает
- собрать HU-том NIfTI из одной CT-серии DICOM
- получить аффин и шаг сетки в машинночитаемом JSON
- отсортировать срезы по позиции пациента перед сборкой
- проверить качество конвертации парным верификатором
dicom_volume_quality_v1 - поймать неподдерживаемый вход на префлайте, а не в середине пайплайна
Примеры запросов агенту
- Конвертируй папку с CT-серией в HU-том NIfTI и покажи JSON-сводку
- Запусти
scripts/series_to_volume.pyнаPATH_TO_DICOM_DIRс выводом вruns/ct_volume.nii.gz - Проверь результат прогона парным верификатором
dicom_volume_quality_v1
Как установить dicom-series-to-volume
1Через Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a claude-code2Вручную: положить файлы
~/.claude/skills/dicom-series-to-volume/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/dicom-series-to-volume/
1Через Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a codex2Вручную: положить файлы
.agents/skills/dicom-series-to-volume/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a cursor2Вручную: положить файлы
.cursor/skills/dicom-series-to-volume/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install NVIDIA/skills dicom-series-to-volume2Вручную: положить файлы
.github/skills/dicom-series-to-volume/SKILL.md1Через Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a gemini-cli2Командой платформы
gemini skills install https://github.com/NVIDIA/skills --path skills/dicom-series-to-volumeВручную: положить файлы
.devin/skills/dicom-series-to-volume/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add NVIDIA/skills --skill dicom-series-to-volume -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о dicom-series-to-volume
Как установить dicom-series-to-volume в Claude?
Выполните npx skills add NVIDIA/skills --skill dicom-series-to-volume -a claude-code. Скилл появится по пути ~/.claude/skills/dicom-series-to-volume/SKILL.md.
Что делает dicom-series-to-volume?
Читает одну CT-серию DICOM, сортирует срезы, применяет RescaleSlope и RescaleIntercept и пишет HU-том в .nii.gz вместе с JSON-отчётом об аффине.
Можно ли подать мультикадровый DICOM или несколько серий сразу?
Нет. Мультисерийный вход отклоняется на префлайте, а файлы с NumberOfFrames больше 1 не поддерживаются.
Исходный текст
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