✅ 전체 Batch Pipeline 개요[ch] ADNI 스타일 MONAI + Slicer + PET SUVr

 실제 연구·임상 워크플로우에 맞는:

ADNI 스타일 MONAI + Slicer + PET SUVr “Batch Processing 파이프라인”

으로 가는 것이 정확한 다음 단계입니다.

아래는 현장에서 그대로 쓰는 구조 기준으로 정리했습니다:

MRI 여러 명 → 자동 parcellation → PET 정합 → SUV → ROI 평균 → SUVr → Excel


✅ 전체 Batch Pipeline 개요[ch] ADNI 스타일 MONAI + Slicer + PET SUVr

Subjects/ ├─ sub001/ │ ├─ MRI.nii.gz │ ├─ PET.nii.gz │ └─ DICOM/ ├─ sub002/ │ └─ ...

1 MONAI Parcellation 2 MRIPET Registration 3 ROI Transfer 4 SUV Computation 5 ROI Mean Extraction 6 SUVr Calculation 7 Excel Export

전부 Slicer Python으로 자동화.


🧠 STEP 1 — MONAI Brain Parcellation (Batch)

CLI 호출 방식

Slicer 실행:

Slicer.exe --no-main-window --python-script monai_batch.py

monai_batch.py (핵심 구조)

import slicer, os, glob root = r"D:/Subjects" for subj in glob.glob(root+"/*"): mri = subj+"/MRI.nii.gz" slicer.cli.runSync( slicer.modules.brainparcellation, None, { "inputVolume": mri, "outputSegmentation": subj+"/seg.nii.gz" } )

결과:

seg.nii.gz


🧠 STEP 2 — MRI → PET Registration

BRAINSFit 사용:

slicer.cli.runSync( slicer.modules.brainsfit, None, { "fixedVolume": mri, "movingVolume": pet, "outputVolume": subj+"/PET_reg.nii.gz", "useRigid": True } )


🧠 STEP 3 — Segmentation PET space 이동

slicer.cli.runSync( slicer.modules.transforms, None, { "inputImage": subj+"/seg.nii.gz", "referenceImage": subj+"/PET_reg.nii.gz", "outputImage": subj+"/seg_pet.nii.gz", "interpolation": "NearestNeighbor" } )

(중요: 반드시 Nearest Neighbor)



🧠 STEP 4 — SUV Computation

slicer.cli.runSync( slicer.modules.petstandarduptakevaluecomputation, None, { "PETVolume": subj+"/PET_reg.nii.gz", "VOIVolume": subj+"/seg_pet.nii.gz", "OutputCSV": subj+"/SUV.csv" } )


🧠 STEP 5 — SUVr 계산 (Python)

import pandas as pd df = pd.read_csv(subj+"/SUV.csv") ref = df[df["LabelName"]=="WholeCerebellum"]["SUVMean"].values[0] df["SUVr"] = df["SUVMean"] / ref df.to_excel(subj+"/SUVr.xlsx")


📁 최종 산출물

각 subject:

seg.nii.gz PET_reg.nii.gz seg_pet.nii.gz SUV.csv SUVr.xlsx


⭐ 실무 최적화 팁

✔ 병렬 처리

Windows:

for /L %i in (1,1,8)

✔ Reference erosion

MONAI 후:

slicer.modules.segmenteditorlogic.Erode(...)

✔ 로그 남기기

open("log.txt","a").write(subj+"\n")


🧪 ADNI 구조 자동 ROI 생성

Logical Union 자동화:

frontal = ["LeftSupFrontal","RightSupFrontal"...]

(이전 메시지 ROI mapping 사용)



📊 전체 다이어그램

MRI → MONAI → Seg ↓ PET → Register → PET_reg ↓ Seg → Resample → Seg_PET ↓ PET + Seg_PET → SUV ↓ SUV / Cerebellum → SUVr.xlsx


📚 참고

  • ADNI PET Core

  • Slicer CLI docs

  • MONAI Label

  • BRAINSFit

  • PET SUV module


✨ 요약

  • MONAI batch

  • PET rigid

  • NN resample

  • SUV CLI

  • Python SUVr

  • Excel export


이제 다음 단계로 자연스럽게 연결 가능합니다:

✅ Dockerized pipeline
✅ GPU MONAI batch
✅ QC 자동 snapshot
✅ ADNI style PDF report
✅ BIDS PET integration

댓글

이 블로그의 인기 게시물

히브리인, 이스라엘인, 유대인 성경 속 이름에 숨겨진 소름 돋는 비밀

작은 틈이 무너뜨린다 왜 우리는 ‘사소한 분열’을 극도로 경계해야 하는가

작은 틈이 무너뜨린다 왜 성경은 ‘분열의 시작’을 그렇게 경고하는가