dicom-series-to-volume について
単一の CT DICOM シリーズを HU スケールの NIfTI ボリュームと JSON サマリーに変換するスクリプト型スキルです。スライス順序やアフィン情報を必要とするデータ処理向けで、臨床用途ではありません。
主な機能
- 01単一 CT シリーズを NIfTI に変換
- 02画像位置に基づくスライス順序の整理
- 03Rescale Slope と Intercept の適用
- 04方向と間隔からアフィンを算出
- 05ボリューム情報を JSON に記録
活用シーン
- 01後続処理向けの単一シリーズ CT ボリューム作成
- 02出力形状、間隔、方向コードの確認
- 03アフィンと HU 範囲の変換情報の記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill dicom-series-to-volumeインストール後、Claude Code で/dicom-series-to-volumeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill_manifest.yamlskill-card.mdskill.oms.sigevals/evals.jsonfixtures/generate_fixtures.pyscripts/series_to_volume.pyvalidators/output_schema.json詳細
dicom_series_to_volume
目的
- 1 つの CT DICOM シリーズフォルダーを、アフィン情報の根拠を含む HU NIfTI ボリュームに変換するために使用します。マルチフレーム DICOM や臨床用途には使用しないでください。
- ラッパーはドキュメントの記載どおりに使用してください。上流のエントリーポイントを手書きの実装に置き換えないでください。
- マニフェスト I/O:入力は
dicom_dir、出力はnifti_volumeとresult_jsonです。
手順
- 引数、副作用、検証ゲートを変更する前に、
skill_manifest.yamlを読んでください。 - 以下に記載されたコマンドで
scripts/series_to_volume.pyを実行してください。出力は呼び出し元が指定した実行ディレクトリ内に保持してください。 - ホストエージェントが
run_scriptを公開している場合は、run_script("scripts/series_to_volume.py", args=[...])を使用してください。それ以外の場合は、以下に示す Bash/Python コマンドを実行してください。 - 実行結果を根拠として扱う前に、出力された JSON と、対になる
dicom_volume_quality_v1検証ツールを確認してください。
利用可能なスクリプト
| スクリプト | 目的 | 引数 |
|---|---|---|
scripts/series_to_volume.py | skill_manifest.yaml で宣言された主要なエントリーポイントです。 | PATH_TO_DICOM_DIR [--output OUT.nii.gz] |
前提条件
- 実行時の要件:
runtime.side_effects.pip_packagesに記載された Python パッケージ。 - 以下のセクションで別途指定されていない限り、リポジトリのルートからコマンドを実行してください。
制限事項
- 単一シリーズのみ対応します。複数シリーズの入力は事前チェックで拒否されます。
- マルチフレーム DICOM(ファイルごとの NumberOfFrames > 1)には対応していません。
- 圧縮転送構文(JPEG / JPEG2000 / RLE)には対応していません。
- ボクセルの再配向は行いません。アフィンは DICOM ヘッダーから導出され、NIfTI/RAS 座標で表現されます。このボリュームをセグメンテーションモデルに渡す前に、下流のゲート(例:expected_axcodes)で向きを検証することを想定しています。
- 臨床導入、自律診断、規制当局への申請、本番推論には使用しないでください(その用途には、dcm2niix など、適切に検証されたコンバーターを使用してください)。
トラブルシューティング
| エラー | 原因 | 修正方法 |
|---|---|---|
| 依存関係の欠落またはインポートエラー | skill_manifest.yaml から実行時パッケージが乖離しています。 | マニフェストに記載されたパッケージをインストールするか、ドキュメントに記載されたセットアップコマンドを使用してください。 |
| 出力が空、またはスキーマが無効 | 入力パスの誤り、未対応のモダリティ、または上流でのエラーです。 | 既知のフィクスチャを使って再実行し、ラッパーの JSON と stderr を確認してください。 |
| 検証ゲートの失敗 | 出力が宣言されたエンジニアリング上の不変条件に違反しています。 | 失敗したエビデンスパックを保持し、ゲートのメッセージを参考に入力またはラッパーコードを修正してください。 |
1 つの DICOM シリーズを読み込み、ImagePositionPatient でスライスを並べ替え、RescaleSlope と RescaleIntercept を適用し、向きと間隔のタグからアフィンを構築して、.nii.gz と JSON の概要を書き出します。
python scripts/series_to_volume.py PATH_TO_DICOM_DIR --output PATH_TO_OUT.nii.gz
対になる検証ツールを使って信頼できる実行を行う場合:
python -m eval_engine.run_trusted skills/dicom-series-to-volume \
--fixture PATH_TO_DICOM_DIR \
--out runs/dicom_series_to_volume_trusted
主な出力フィールド:n_slices、series_instance_uid、output.path、output.shape、output.spacing、output.axcodes、output.affine、hu_range、runtime.conversion_seconds。
適用範囲の制限:単一シリーズの CT のみ対応します。マルチフレーム DICOM、圧縮転送構文の処理、RT structure sets、自動再配向、臨床用途には対応していません。
コメント
Markdown 対応