๐Ÿง  PET-IndiC ํ™•์žฅ์œผ๋กœ SUVr ๊ณ„์‚ฐ ์ƒ์„ธ ๋‹จ๊ณ„ [pe]

๐Ÿง  PET-IndiC ํ™•์žฅ์œผ๋กœ SUVr ๊ณ„์‚ฐ ์ƒ์„ธ ๋‹จ๊ณ„ [pe] 

์•„๋ž˜๋Š” **3D Slicer ํ™•์žฅ์ธ PET-IndiC์„ ์ด์šฉํ•œ PET SUVr ๊ณ„์‚ฐ๊ณผ ๊ด€๋ จ๋œ ์ƒ์„ธ ๋‹จ๊ณ„ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

PET-IndiC์€ PET์˜์ƒ์—์„œ ROI๋ณ„ ์ •๋Ÿ‰์ง€ํ‘œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ž๋™ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ™•์žฅ์ž…๋‹ˆ๋‹ค. (3D Slicer)


✅ PET-IndiC ํ™•์žฅ ๊ธฐ๋ฐ˜ PET SUVr ๊ณ„์‚ฐ ์‹ค์ „ ์ ˆ์ฐจ์„œ [pe]

3D Slicer GUI/Python ์—ฐ๋™ ๋ฒ„์ „


๐Ÿ“Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ 3D Slicer ๋ฒ„์ „

  • 3D Slicer 5.6.1 Stable ์ด์ƒ

  • PET-IndiC Extension ์„ค์น˜ ํ•„์š”

    • Extensions Manager → PET-IndiC

    • ์„ค์น˜ ํ›„ restart ํ•„์š” (3D Slicer)


⭐ PET-IndiC ํ™•์žฅ์ด๋ž€?

PET-IndiC์€ PET SUV ์˜์ƒ๊ณผ ๋ ˆ์ด๋ธ” ์˜์ƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋Ÿ‰์ง€ํ‘œ(quantitative indices) ๋ฅผ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ํ™•์žฅ์ž…๋‹ˆ๋‹ค.
์ด ํ™•์žฅ์€ Segment Editor์˜ ๋ผ๋ฒจ์„ ์ˆ˜์ •ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ธก์ •๊ฐ’ ํ…Œ์ด๋ธ”์„ ๊ฐฑ์‹ ํ•˜๋ฉฐ, CLI๋กœ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (3D Slicer)

๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์ง€ํ‘œ ์˜ˆ์‹œ

์ง€ํ‘œ์„ค๋ช…
Mean SUVROI ๋‹จ์œ„ ํ‰๊ท  SUV
Peak SUVROI ์ตœ๋Œ€ ๊ฐ•์กฐ SUV
Total Lesion Glycolysis (TLG)ROI์˜ ๋Œ€์‚ฌ ํ™œ์„ฑ ์ด๋Ÿ‰
VolumeROI ๋ถ€ํ”ผ

์ด ์ค‘ SUV Mean / Peak๋Š” SUVr ๊ณ„์‚ฐ์˜ ๊ธฐ๋ณธ์ด ๋ฉ๋‹ˆ๋‹ค. (QIICR)


๐Ÿ“Œ PET-IndiC ์„ค์น˜

1. 3D Slicer ์‹คํ–‰
2. Extensions Manager ์—ด๊ธฐ
3. PET-IndiC ๊ฒ€์ƒ‰ → Install
4. Restart Slicer


๐Ÿง  PET-IndiC ๊ธฐ๋ฐ˜ SUVr ๊ณ„์‚ฐ ์ž์„ธํ•œ ๋‹จ๊ณ„


1️⃣ PET ์˜์ƒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๋ฉ”๋‰ด

File → Add Data
  • PET DICOM ๋˜๋Š” NIfTI ์˜์ƒ ๋กœ๋“œ

  • SUV๋กœ ๋ณ€ํ™˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด PET DICOM Extension์œผ๋กœ ๋จผ์ € SUV ๋ณ€ํ™˜ ํ•„์š” (QIICR)


2️⃣ Segment Editor๋กœ ๊ด€์‹ฌ์˜์—ญ ๋งŒ๋“ค๊ธฐ

PET-IndiC์€ PET ์˜์ƒ๊ณผ Label Map์„ ์ด์šฉํ•˜๋ฏ€๋กœ ๋จผ์ € PET ROI ๋ผ๋ฒจ ์ƒ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ ˆ์ฐจ

Modules → Segment Editor
  • PET๋ฅผ ๋ฐฐ๊ฒฝ์œผ๋กœ ์„ค์ •

  • ROI๋ฅผ ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ทธ๋ฆฌ๊ธฐ (manual ๋˜๋Š” PET-TumorSegmentation ํ™•์žฅ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) (QIICR)


3️⃣ PET-IndiC ์‹œ์ž‘

Modules → PET-IndiC

PET-IndiC ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:

์ž…๋ ฅ์„ค๋ช…
Input PET VolumeSUV๋กœ ๋ณ€ํ™˜๋œ PET ์˜์ƒ
Label ImageSegment Editor๋กœ ์ƒ์„ฑํ•œ Label Map
Quantitative Measures๊ณ„์‚ฐํ•  ์ •๋Ÿ‰์ง€ํ‘œ ์„ ํƒ

4️⃣ ์ •๋Ÿ‰์ง€ํ‘œ ์ž๋™ ๊ณ„์‚ฐ

  • ์„ธ๊ทธ๋จผํŠธ ์ƒ์„ฑ ๋˜๋Š” ์ˆ˜์ • ์‹œ ์ž๋™ ๊ณ„์‚ฐ

  • ๊ฒฐ๊ณผ๋Š” ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ

์˜ˆ์‹œ ์ถœ๋ ฅ ํ•ญ๋ชฉ:

SegmentName, MeanSUV, PeakSUV, Volume, TLG, ...

์ด ํ…Œ์ด๋ธ”์„ copy/paste ๋˜๋Š” CSV๋กœ ์ €์žฅ ๊ฐ€๋Šฅ (3D Slicer)

์ฃผ์˜: PET-IndiC์€ Segment Statistics์™€ ์—ฐ๋™ํ•˜์—ฌ ๋” ์ƒ์„ธํ•œ ์ •๋Ÿ‰๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.


5️⃣ SUVr ๊ณ„์‚ฐ ๊ณต์‹ ์ ์šฉ

PET-IndiC์€ Mean SUV, Peak SUV ๋“ฑ SUV ๊ด€๋ จ ๊ฐ’์„ ์ถœ๋ ฅํ•˜์ง€๋งŒ SUVr์€ ์ง์ ‘ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SUVr = SUV(target ROI) / SUV(reference ROI) (์œ„ํ‚ค๋ฐฑ๊ณผ)

์˜ˆ) ์†Œ๋‡Œ(Reference) ๊ธฐ์ค€ SUVr

SUVr(target) = MeanSUV(target) / MeanSUV(cerebellum)

6️⃣ Batch ๋ชจ๋“œ ๋ฐ CLI ์‚ฌ์šฉ

PET-IndiC์—๋Š” CLI ๋ชจ๋“ˆ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ:

QuantitativeIndicesCLI

์ด ๋ช…๋ น์–ด๋กœ ๋‹ค์ˆ˜์˜ PET ์˜์ƒ + label map์„ ์ˆœ์ฐจ ์ฒ˜๋ฆฌํ•˜์—ฌ CSV ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (3D Slicer)

์˜ˆ:

slicer --no-main-window --python-script batch_quant.py

batch_quant.py ๋‚ด๋ถ€์—์„œ CLI ํ˜ธ์ถœ ์‹œ:

slicer.cli.runSync(slicer.modules.quantitativeindicescli,None,{
    "inputVolume":petNode,
    "labelVolume":labelNode,
    "outputTable":subject+"_petindic.csv"
})

7️⃣ ๊ฒฐ๊ณผ ์ •๋ฆฌ

CSV ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

SegmentMeanSUVPeakSUVVolume

์ด ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ:

  1. ROI๋ณ„ SUV ๊ฐ’ ์ถ”์ถœ

  2. ๊ธฐ์ค€(reference) region (ex. cerebellum) MeanSUV ์ฐพ๊ธฐ

  3. SUVr ๊ณ„์‚ฐ

  4. ์—‘์…€ ํŒŒ์ผ๋กœ ์ €์žฅ


๐Ÿงช ์˜ˆ์‹œ SUVr ์ž๋™ ๊ณ„์‚ฐ ํŒŒ์ด์ฌ

import pandas as pd

df = pd.read_csv(subject+"_petindic.csv")

ref_val = df[df["Segment"]=="Cerebellum"]["MeanSUV"].values[0]

df["SUVr"] = df["MeanSUV"] / ref_val
df.to_excel(subject+"_SUVr.xlsx",index=False)

๐Ÿ“Œ ์ถ”๊ฐ€ ํŒ

✔ PET SUV ์ž…๋ ฅ ์ค€๋น„

PET์„ SUV ์ด๋ฏธ์ง€๋กœ ์ฝ์–ด์˜ค๊ธฐ ์œ„ํ•ด:

  • PET-DICOM Extension์„ ์ด์šฉํ•ด PET DICOM์„ SUV๋กœ ๋ณ€ํ™˜

  • PET-IndiC์—์„œ SUV ์ด๋ฏธ์ง€๋กœ ์ฒ˜๋ฆฌ (3D Slicer)


๐Ÿ“ˆ PET-IndiC ๊ณ„์‚ฐ ๊ฒฐ๊ณผ ์˜ˆ์‹œ

SegmentMeanSUVPeakSUVSUVr (reference=cer)
lesion15.28.03.0
region22.13.21.2

๐Ÿ“š ์ •๋Ÿ‰์ง€ํ‘œ ์ดํ•ด

  • MeanSUV: ROI ๋‚ด ํ‰๊ท  ์„ญ์ทจ

  • PeakSUV: ROI ์ตœ๊ณ  ํ”ฝ์…€ ์„ญ์ทจ

  • Volume: ROI ๋ถ€ํ”ผ

  • TLG: ROI ๋Œ€์‚ฌ ํ™œ์„ฑ ์ด๋Ÿ‰

  • SUVr: ๊ธฐ์ค€ ์˜์—ญ ๋Œ€๋น„ ํ‘œ์ค€ํ™” ๊ฐ’ (QIICR)


๐Ÿ“Œ ์š”์•ฝ

PET-IndiC์€:

✔ ๋น ๋ฅธ ROI ์ •๋Ÿ‰ ์ธก์ •
✔ SegmentStatistics ์—ฐ๋™
✔ GUI/CLI ๋ชจ๋‘ ์ง€์›
✔ Batch ๋ช…๋ น์ค„ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ

๋‹จ, SUVr ๊ณ„์‚ฐ์€ ์ง์ ‘ ๊ณต์‹ ์ ์šฉ ํ•„์š”์ž…๋‹ˆ๋‹ค. (3D Slicer)


๐Ÿ“Œ ์ฐธ๊ณ ์ž๋ฃŒ

  1. PET-IndiC ๊ณต์‹ 3D Slicer ํ™•์žฅ ์„ค๋ช… (3D Slicer)

  2. PET-IndiC ์ ์šฉ ์˜ˆ: FDG PET uptake ์ธก์ • ๋…ผ๋ฌธ (link.springer.com)

  3. SUV ๊ฐœ๋… (์ •๋Ÿ‰ ๊ธฐ์ค€ ์„ค๋ช…) (์œ„ํ‚ค๋ฐฑ๊ณผ)



๋‹ค์Œ๋‹จ๊ณ„:

PET-IndiC CLI ์ž๋™ Batch ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ๋„ ๋‹จ๊ณ„๋ณ„ ์ฝ”๋“œ๋กœ ์ •๋ฆฌ



๊ด€๋ จ๋œ

MONAI Label ์„œ๋ฒ„ ์‹œ์ž‘ ๋ฐ 3D Slicer ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•

MONAI Auto3DSeg ํ™•์žฅ ์„ค์น˜์™€ ๋‡Œ ์˜์—ญ ๋ถ„ํ•  ํŠœํ† ๋ฆฌ์–ผ

MONAI Parcellation ๋ชจ๋ธ ์„ ํƒ๊ณผ ์ž๋™ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ์‹คํ–‰

3D Slicer์—์„œ MONAI Label ์„ค์ • ์˜ต์…˜ ์ตœ์ ํ™” ํŒ

MONAI Label๋กœ brain tumor ๋˜๋Š” organ parcellation ์˜ˆ์ œ

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

ํžˆ๋ธŒ๋ฆฌ์ธ, ์ด์Šค๋ผ์—˜์ธ, ์œ ๋Œ€์ธ ์„ฑ๊ฒฝ ์† ์ด๋ฆ„์— ์ˆจ๊ฒจ์ง„ ์†Œ๋ฆ„ ๋‹๋Š” ๋น„๋ฐ€

์ž‘์€ ํ‹ˆ์ด ๋ฌด๋„ˆ๋œจ๋ฆฐ๋‹ค ์™œ ์šฐ๋ฆฌ๋Š” ‘์‚ฌ์†Œํ•œ ๋ถ„์—ด’์„ ๊ทน๋„๋กœ ๊ฒฝ๊ณ„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€

์ž‘์€ ํ‹ˆ์ด ๋ฌด๋„ˆ๋œจ๋ฆฐ๋‹ค ์™œ ์„ฑ๊ฒฝ์€ ‘๋ถ„์—ด์˜ ์‹œ์ž‘’์„ ๊ทธ๋ ‡๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋Š”๊ฐ€