dicom-series-to-volume

Par nvidia · skills

Utilisé pour convertir un dossier de série CT DICOM en volume NIfTI HU avec preuve affine. Non destiné aux DICOM multi-frames ni à un usage clinique.

npx skills add https://github.com/nvidia/skills --skill dicom-series-to-volume

dicom_series_to_volume

Objectif

  • Utilisé pour convertir un dossier de série DICOM CT en un volume NIfTI HU avec preuve d'affine. Non destiné aux DICOM multi-frame ou à un usage clinique.
  • Utiliser le wrapper exactement comme documenté ; ne pas remplacer le point d'entrée upstream par une implémentation écrite à la main.
  • Manifest I/O : les entrées sont dicom_dir ; les sorties sont nifti_volume et result_json.

Instructions

  • Lire skill_manifest.yaml avant de modifier les arguments, les effets de bord ou les portes de validation.
  • Exécuter scripts/series_to_volume.py via la commande documentée ci-dessous ; garder les sorties dans un répertoire d'exécution fourni par l'appelant.
  • Si un agent hôte expose run_script, utiliser run_script("scripts/series_to_volume.py", args=[...]); sinon exécuter la commande Bash/Python affichée ci-dessous.
  • Vérifier le JSON émis et le vérificateur dicom_volume_quality_v1 associé avant de traiter l'exécution comme preuve.

Scripts Disponibles

Script Objectif Arguments
scripts/series_to_volume.py Point d'entrée principal déclaré par skill_manifest.yaml. PATH_TO_DICOM_DIR [--output OUT.nii.gz]

Prérequis

  • Exigences runtime : packages Python listés dans runtime.side_effects.pip_packages.
  • Exécuter les commandes depuis la racine du repository sauf indication contraire ci-dessous.

Limitations

  • Série unique uniquement ; l'entrée multi-série est rejetée en préflight.
  • DICOM multi-frame (NumberOfFrames > 1 par fichier) non supporté.
  • Syntaxes de transfert compressées (JPEG / JPEG2000 / RLE) non supportées.
  • Pas de réorientation de voxels. L'affine est dérivée des en-têtes DICOM et représentée en coordonnées NIfTI/RAS ; une porte en aval (p. ex. expected_axcodes) est attendue pour asserter l'orientation avant que ce volume ne soit alimenté à un modèle de segmentation.
  • Non destiné au déploiement clinique, au diagnostic autonome, à la soumission réglementaire, à l'inférence en production (utiliser un convertisseur vérifié tel que dcm2niix pour cela).

Dépannage

Erreur Cause Correction
Dépendance manquante ou erreur d'import Dérive du package runtime par rapport à skill_manifest.yaml. Installer les packages déclarés dans le manifest ou utiliser la commande de configuration documentée.
Sortie vide ou invalide selon le schéma Mauvais chemin d'entrée, modalité non supportée ou défaillance upstream. Réexécuter avec une fixture connue et inspecter le JSON du wrapper plus stderr.
Défaillance de la porte de validation La sortie a violé un invariant d'ingénierie déclaré. Conserver le pack de preuve défaillant et utiliser le message de la porte pour réparer les entrées ou le code du wrapper.

Lit une série DICOM, trie les coupes par ImagePositionPatient, applique RescaleSlope et RescaleIntercept, construit une affine à partir des balises d'orientation et d'espacement, et écrit un .nii.gz plus un résumé JSON.

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

Pour une exécution fiable avec le vérificateur associé :

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

Champs de sortie clés : n_slices, series_instance_uid, output.path, output.shape, output.spacing, output.axcodes, output.affine, hu_range, et runtime.conversion_seconds.

Limites de portée : CT à série unique uniquement ; pas de DICOM multi-frame, gestion de syntaxe de transfert compressée, jeux de structures RT, réorientation automatique ou usage clinique.

Skills similaires