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
© Copyright 2024 ExpyDoc