PHITS

PHITS
Multi-Purpose Particle and Heavy Ion Transport code System
DICOM2PHITSの使い方
2015年3月改訂
Title
1
Dicom形式(バイナリー)
1つのスライスに対するデータ(sample001.dcm)
① Header (撮影日時,ピクセルサイズなどの情報)
② CT値(1,1→2,1→3,1→ … → nx-1, ny → nx, ny)の順番
このファイルがスライス数入ったフォルダで1つの物体を表現
1つのファイルを表示
フォルダ全体のデータを3D表示
Dicom形式からPHITS入力形式に変換する必要有
(CT値・バイナリ) (Universe番号・テキスト)
What is DICOM
2
変換プログラム(dicom2phits)
Dicom形式のデータをPHITS形式のボクセルデータに変換
• CT値と物質密度・組成の関係はdata/HumanVoxelTable.data
[W. Schneider, Phys. Med. Biol. 45(2000)459-478]を参照
①入力ファイルを作成(dicom2phits.inp)⇒詳しくはREADME参照
"data/HumanVoxelTable.data"
"DICOM/"
"PHITSinputs/"
1 20
70 430 90 460
4 4 1
0
0
1
変換テーブルの指定
指定ディレクトリ内に含まれるDICOMファイルを自動判別
PHITSインプットを格納するディレクトリを指定
指定した番号範囲のスライスファイルを読み込む (1<=z<=20)
DICOMデータの一部を切り出してボクセル化 (70<=x<=430, 90<=y<=460)
画像を粗くする(分解能を下げる)ことが可能 (x方向4個、y方向4個で平均)
原点オプション 0:ボクセル中心 1:DICOMヘッダーから抽出
PHITSパラメータ最適化オプション 0:最少 1:x線治療 2:粒子線治療
スライス読み込む順指定 +1:昇べき -1:降べき 原点オプション1では無視
②実行 (Windows) dicom2phits_win.batにdicom2phits.inpをドラッグ&ドロップ
(Mac) dicom2phits_mac.commnadをダブルクリック、現れる窓にdicom2phits.inpと入力
DICOM2PHITS HowTo
3
DICOM2PHITS実行結果
PHITSのサンプルインプットphits.inpを指定ディレクトリ(PHITSinputs/)に生成
併せて、以下のインクルードファイルを同時に生成
・material.inp 材質データを格納するファイル
・universe.inp 各材質のユニバースデータを指定するファイル
・voxel.inp PHITS形式に変換したボクセルデータを格納するファイル
・libpath.inp 核データ、光子データのパスを指定するファイル
但し、libpath.inpは必要時(PHITSオプションの最適化1or2)且つ既に存在しない場合に
file(7)とfile(20)のサンプルパスを作成する。ユーザーの環境に合わせて変更する必要が
あるが、指定ディレクトリに一度作成すれば毎回変更する必要は無い。
DICOM2PHITS outputs
4
PHITSインプットファイル
phits.inp
file=phits.inp
必ず1行目!
[ Parameters ]
inflコマンドを使う時のおまじない
…
set: c81[ 90] $ number of x pixel
set: c82[ 92] $ number of y pixel
set: c83[ 20] $ number of z pixel
ボクセルファン
set: c84[ 0.18800] $ unit voxel x
トムのピクセル
set: c85[ 0.18800] $ unit voxel y
set: c86[ 0.50000] $ unit voxel z
数や大きさは
…
DICOMのヘッ
[ Surface ]
ダーから自動
$ Unit voxel
5000 rpp -c87 -c87+c84 -c88
的に設定
-c88+c85 -c89 -c89+c86
$ Outer region
ボクセルファントム
99 so 500
の中心がxyz座標
$ Main Space
97 rpp -c87+c90 c87-c90 -c88+c90 の原点にくるように
c88-c90 -c89+c90 c89-c90
配置されている
[Cell]
$ Material universe
infl:{universe.inp}
$ Voxel universe
5000 0 -5000 lat=1 u=5000
fill= 0: 89 0: 91 0: 19
infl: {voxel.inp}
$ Main space
97 0 -97 trcl=500 fill=5000
98 0 -99 #97 $ Void
99 -1 99
$ Outer region
Include fileコマンド
ファントムを回転・
平行移動が可能
PHITS形式詳細は phits/lecture/voxel/phits-lec-voxel-jp.ppt 「Voxelファントムの作り方」を参照
DICOM2PHITS output (phits.inp)
5
CT値⇔物質密度・組成変換表
data/HumanVoxelTable.data サンプル表 [W. Schneider, Phys. Med. Biol. 45(2000)459を参照]
2行目:分割数
1行目:実行時に画面に表示するコメント
Table for human voxel based on W. Schneider, Phys.…
24
! Number of universe di…
3行目:物質1の定義
-1000.0d0 -1.21e-3 3
! Lowest
CT value, Dens
-950.0d0 -0.26
10 ! Universe 2
最小CT値
-120.0d0 -0.927
8
! Universe 3
-1000  物質1 < -950 -82.0d0 物質密度
-0.958
8
! Universe
4 NOTE: Den …
構成元素数
-52.0d0
-0.985
9
! Universe 5
[10^…
-22.0d0
-1.012
8
! Universe 6
[g/…
最後の物質
…
の最大CT値
1500.0d0 -1.935
11 ! Universe 24
1600.0d0
! Highest CT value for…
#1 Air :: Air density is used
! Composition
元素名
仕切り行:#で始まる必要あり
14N -75.5
! Element, Ele…
16O -23.2
!
物質1の組成
40Ar
-1.3
!
#2 Lung :: Lung density is used ! Composition
o…
仕切り行:#で始まる必要あり
1H
-10.3
12C -10.5
組成割合: >0 = 粒子密度比、< 0 =質量比
14N -3.1
…
物質1の最小CT値よりも小さい ⇒ ワーニングを出して物質1で代用
最後の物質の最大CT値よりも大きい ⇒ ワーニングを出して最後の物質で代用
Conversion table
21
ジオメトリの確認
icntl = 11
icntl = 8
CT3D.eps
deposit-xy.eps
Geometry check
7
ボクセル化する範囲の変更
dicom2phits.inp
"data/HumanVoxelTable.data"
"DICOM/"
"PHITSinputs/"
1 10
70 270 90 270
4 4 1
0
0
1
! File for conversion of human voxel data
! DICOM file directory
! Filename for voxel include file
! Minimum slice number, Maximum slice number
! Clipping: Nxmin, Nxmax, Nymin, Nymax
! Coarse graining: Nxc, Nyc, Nzc
! Origin 0:Center 1:Lab
! PHITS parameter: 0:Minimal 1:PhotonTherapy …
! Z direction +1:forward or -1:backward
変更後(phits.inp)
CT3D.eps
Region specification
deposit-xy.eps
8
線量計算結果
icntl = 0
unit = 2
⇒ MeV/source 単位
unit = 0
⇒ Gy/source 単位
deposit-xy.eps
xyzメッシュを用いた[t-deposit]の結果
Dose calculation
9
DICOM2PHITS応用例
① dicom2phits.inpを以下のように変更して実行
"data/HumanVoxelTable-KumamotoUniv.data" ! File for conversion of human voxel data
"DICOM-KumamotoUniv/"
! DICOM file directory
"PHITSinputs/"
! Filename for PHITS input
1 148
! Minimum slice number, Maximum slice number
1 512 1 512
! Clipping: Nxmin, Nxmax, Nymin, Nymax
8 8 4
! Coarse graining: Nxc, Nyc, Nzc
1
! Origin 0:Center 1:Lab
2
! PHITS parameter: 0:Minimal 1:PhotonTherapy 2:ParticleTherapy
1
! Z direction +1:forward or -1:backward
⇒ phits.inp
[ Transform ]
$ Transform system according to DICOM header
tr500 -32.50000 -32.50000 -29.75100
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000
1
[ Parameters ]
…
$ Optimized for Particle Therapy
emin(2) = 1.000000000E-10
…
$ Library data paths for file(7) & file(14)
infl:{libpath.inp}
② libpath.inpを環境に合わせて変更
file(7) = c:/phits/data/xsdir.jnd
file(20) = c:/phits/XS/egs
Windowsデフォルトインストール
の場合変更不要
Further application
10
応用例:ジオメトリの確認
icntl = 8
deposit-xz.eps
deposit-xy.eps
Application: Geometry check
11
読込の高速化
目的
PHITSでは一度インプットファイルを全てバイナリー化してから再読込
巨大なボクセルデータをあらかじめバイナリー化して読込時間短縮!
手順
① [Parameters]セクションのivoxelを有効にする($を消す)
ivoxel = 2
# LatticeのFill部分をバイナリー化としてfile(18)に出力させるオプション
file(18) = voxel.bin # 出力するバイナリーファイルのファイル名
② PHITSを実行する → Binary file was successfully generated!!
③ ivoxel = 1に変更し,Latticeを定義するinflコマンドをコメントアウト
ivoxel = 1 # LatticeのFill部分をfile(18)から読み込むオプション
$ infl:{voxel1.inp}
Binary generation
高速化!
12
応用例:線量計算結果
icntl = 0
deposit-xz.eps
deposit-xy.eps
Application: Dose calculation
13
応用例:線源の変更
[ Source ]
s-type = 1
x0 = c87+c81*c84/2
y0 = c88+c82*c85/2
z0 =
-1.00000
z1 =
-1.00000
r0 =
45.96193
dir = 1.0
proj = proton
e0 = 1000.0
trcl = 500
下方から体全体に照射
[ Source ]
s-type = 2
x0 = 35.0
x1 = 40.0
y0 = 10.0
y1 = 10.0
z0 = 15.0
z1 = 25.0
dir = 0.0
phi = 90.0
proj = proton
e0 = 100.0
trcl = 500
ビームを絞って体正面から照射
Modification of beam profile
14
応用例:線源変更後の線量
icntl = 0
deposit-xy.eps
肺の密度が小さいの
でレンジが伸びている
Application: Dose calculation with modified beam 15
高分解能ファントム利用時の注意点
全身を高分解能でボクセル化すると使用メモリが膨大になり実行できなくなる
例)全身(180cm×30cm×50cm)を1mm3でボクセル化すると,2億7000万個の
ボクセルが必要→ 1CPUあたり最低5.4GBのメモリが必要(約20Byte/ボクセル)
初期設定のPHITSは,約640MBしかメモリを使うことができない
対策方法
“src”フォルダにある”param.inc”を変更し,全てのファイルを再コンパイル*する
• mdasの変更: PHITSで使用する総メモリ数(Byte)/8 (32bit機は特に上限値に注意)
• latmaxの変更: 最も大きなlattice数+1(複数Latticeを使う場合は,その最大値)
• 必要に応じて型宣言及びコンパイラオプションを追加: 詳細は次ページ参照
メモリが(物理的に)足りない場合
ボクセル化する領域を頭・胴・足などに分割し,無駄な領域を小さくする
複数のピクセルをまとめてボクセル化し,分解能を下げる
*Windowsの場合,Stack memoryの関係からIntel Fortranではエラーが起きる場合
があるので,gfortranの方がよい。Linux&MacはIntel Fortranでも動作します
16