Multi-Purpose Particle and Heavy Ion Transport code System

Slides:



Advertisements
Similar presentations
P HI T S 陽子ビームで雪だるまを溶かそう Multi-Purpose Particle and Heavy Ion Transport code System title 年 3 月改訂.
Advertisements

P HI T S α 線, β 線, γ 線,中性子線を止めるに は? Multi-Purpose Particle and Heavy Ion Transport code System title 年 5 月改訂.
P HI T S PSFC4PHITS の使い方 Multi-Purpose Particle and Heavy Ion Transport code System Title 年 2 月改訂.
P HI T S スクリプト言語を用いた PHITS の連続 実行 Multi-Purpose Particle and Heavy Ion Transport code System title 年 2 月改訂.
目次 このドキュメントについて・・・前提条件……………………………………… 2
ボクセルファントムを用いた X線治療のシミュレーション
配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
Multi-Purpose Particle and Heavy Ion Transport code System
Multi-Purpose Particle and Heavy Ion Transport code System
初年次セミナー 第8回 データの入力.
PHITS講習会 基礎実習(I): 体系及び線源の定義
記 憶 管 理(1) オペレーティングシステム 第9回.
強度変調回転放射線治療(VMAT)の シミュレーション
Multi-Purpose Particle and Heavy Ion Transport code System
Multi-Purpose Particle and Heavy Ion Transport code System
DICOM医療画像を使用したPHITSシミュレーション
Multi-Purpose Particle and Heavy Ion Transport code System
Multi-Purpose Particle and Heavy Ion Transport code System
ファーストイヤー・セミナーⅡ 第8回 データの入力.
Multi-Purpose Particle and Heavy Ion Transport code System
アプレット (Applet)について.
PHITSによるX線治療シミュレーション 基本操作復習編
軌跡とジオメトリー表示プログラム CGVIEW(Ver2.0)の高度化
ParaViewを用いたPHITS 計算結果の3次元表示
EGSに対応した粒子軌跡と 計算体系の3次元表示ソフト - CGVIEW -
軌跡とジオメトリー表示プログラム CGVIEW(Ver2.2)の改良
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
スクリプト言語を用いたPHITSの連続実行
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
管理画面操作マニュアル <ユーティリティ> 第8版 改訂 株式会社アクア 1.
Multi-Purpose Particle and Heavy Ion Transport code System
α線,β線,γ線,中性子線を止めるには?
京都大学大学院医学研究科 画像応用治療学・放射線腫瘍学 石原 佳知
Bottom-UpとTop-Down アプローチの統合による 単眼画像からの人体3次元姿勢推定
行列による画像処理 デジタル表現論 担当者:劉 雪峰 2017年6月1日.
応用実習用資料 Environmental radioactivity
Multi-Purpose Particle and Heavy Ion Transport code System
画像処理プログラムの説明.
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
応用実習用資料 Neutron target
IAEA phase space fileを用いた X線治療シミュレーション
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
通信機構合わせた最適化をおこなう並列化ンパイラ
デジタル画像とC言語.
Multi-Purpose Particle and Heavy Ion Transport code System
Multi-Purpose Particle and Heavy Ion Transport code System
Multi-Purpose Particle and Heavy Ion Transport code System
EGSに対応した粒子軌跡と 計算体系の3次元表示ソフト - CGVIEW -
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Multi-Purpose Particle and Heavy Ion Transport code System
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
Multi-Purpose Particle and Heavy Ion Transport code System
Multi-Purpose Particle and Heavy Ion Transport code System
Bottom-UpとTop-Down アプローチの組み合わせによる 単眼画像からの人体3次元姿勢推定
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング入門2 第13回、14回 総合演習 情報工学科 篠埜 功.
α線,β線,γ線,中性子線を止めるには?
Multi-Purpose Particle and Heavy Ion Transport code System
第5回 プログラミングⅡ 第5回
計算効率を上げるためのvariance reduction(粒子のウェイト)の利用 B
Make の使い方.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
プログラミング入門2 第5回 配列 変数宣言、初期化について
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

Multi-Purpose Particle and Heavy Ion Transport code System PHITS Multi-Purpose Particle and Heavy Ion Transport code System Voxelファントムの作り方 PHITS講習会 入門実習 2014年8月改訂 title 1

Voxelファントムとは? 直方体を積み重ねて生物など複雑な体系を再現したもの (マニュアル4.7.5.3) PHITSのUniverseとLattice構造を使って構築 (マニュアル4.7.3&4.7.4) 低分解能 高分解能 Introduction 2

Voxelファントムを用いた計算例 粒子線治療時の2次放射線被ばく線量評価 BNCTの治療効果推定 Introduction 3 T. Sato et al. Radiat. Res. (2009) BNCTの治療効果推定 H. Kumada et al. J. Phys.: Conf. Ser. (2007) Introduction 3

講習の流れ Universe Lattice 簡易Voxelファントム Dicom形式からの変換 まとめ Table of Contents PHITS講習会 入門実習 Table of Contents 4

Universeとは? → PHITSの中の仮想空間 PHITSでは,いくつもの仮想空間(universe)を定義できる Universe1 実際に粒子輸送の舞台となるのはメイン空間のみ メイン空間の一部を別のuniverseで満たすことにより入れ子構造を再現する メイン空間 メイン空間にある箱の中を,球が並んでいる別の宇宙(universe1)に置換 Universe 5

Universeの例 universe.inp Universe 6 満たす領域は常にvoid Universe1で満たす (Fillする) [ C e l l ] $ Main space 1 0 11 -12 13 -14 15 -17 FILL=1 2 0 11 -12 13 -14 17 -16 FILL=2 9 -1 #1 #2 $ Universe 1 101 1 -1.00 -10 13 -14 U=1 102 0 #101 U=1 $ Universe 2 201 2 -7.86 -10 13 -14 U=2 202 1 -1.00 #201 U=2 [ S u r f a c e ] 10 CY 5 11 PX -6 12 PX 6 13 PY -6 14 PY 6 15 PZ -6 16 PZ 6 17 PZ 0 Universe1で満たす (Fillする) Universe1を宣言 PX -3 PX 9 Universe 6

講習の流れ Universe Lattice 簡易Voxelファントム Dicom形式からの変換 まとめ Table of Contents PHITS講習会 入門実習 Table of Contents 7

Latticeとは? → PHITSの中で使う 格子(lattice,繰り返し)構造 同じ形状のものが繰り返し並んでいるときに,個々の形状を全て定義するのは大変! 基本構造のみ定義して,あとはその繰り返しで表現する 格子には直方体と六角柱があるが,基本的に使うのは直方体のみ Latticeの例 Lattice 8

Universeを2つ以上使った2重入れ子構造にする 格子の定義方法 格子空間には他の構造物は定義できない 格子の中身は直接定義できない メイン空間ではなく,universeの1つとして定義するのが便利 別のuniverseで満たす(fillする)必要がある Universeを2つ以上使った2重入れ子構造にする fill fill メイン空間 Universe1 Universe2 Lattice 9

格子の定義 lattice.inp 領域101 Lattice 10 (2,2,0) 基本格子 (0,0,0) (-2,-2,0) [ S u r f a c e ] 1 rpp -5 5 -5 5 -1 1 2 rpp -6 6 -6 6 -2 1 99 so 100 101 rpp -1 1 -1 1 -1 1 201 sph 0 0 0 1 [ C e l l ] $ Main space 1 3 -8.96 1 -2 2 0 -1 fill=1 98 0 -99 2 99 -1 99 $ Universe 1 101 0 -101 lat=1 u=1 fill=-2:2 -2:2 0:0 2 2 2 2 2 $ Universe 2 201 1 -19.32 -201 u=2 202 0 201 u=2 (2,2,0) -5  Y軸 5 基本格子 (0,0,0) (-2,-2,0) -5   X軸   5 領域101 直方体タイプのLatticeを宣言 基本格子の領域を定義 格子に物質を満たす領域を指定(0は基本格子) 各格子に満たすuniverse番号(5×5×1の行列) 基本格子と座標を合わせる必要有 メイン空間で使う領域は,必ず定義しておく必要有 Lattice 10

格子の中身の変更 lattice.inp 1つ目の格子のみVoidに変更 変更前 (lattice.inp) 変更後 [ C e l l ] $ Main space 1 3 -8.96 1 -2 2 0 -1 fill=1 98 0 -99 2 99 -1 99 $ Universe 1 101 0 -101 lat=1 u=1 fill=-2:2 -2:2 0:0 3 2 2 2 2 2 2 2 2 2 $ Universe 2 201 1 -19.32 -201 u=2 202 0 201 u=2 $ Universe 3 302 0 -99 u=3 変更前 (lattice.inp) 変更後 (lattice1.inp) Lattice 11

講習の流れ Universe Lattice 簡易Voxelファントム Dicom形式からの変換 まとめ Table of Contents PHITS講習会 入門実習 Table of Contents 12

簡易Voxelファントムの作り方 ① 単一の物質(骨・軟組織など)で満たされたuniverseを作る (void) Universe2 (water) Universe3 (Aluminum) ② ①で作ったuniverseをLatticeを使って組み合わせ,ボクセルファントムが入ったuniverseを作る ③ ②で作ったuniverseを メイン空間の一部にFillする Universe10 (Voxel Phantom) メイン空間 Simple Voxel Phantom 13

インプットファイル robot.inp x y z Simple Voxel Phantom 14 基本格子(この場合は1つ目に定義する領域)の面 [ C e l l ] $ Material universe 1 0 -99 u=1 2 1 -1.00 -99 u=2 3 2 -2.70 -99 u=3 $ Voxel universe 101 0 -101 lat=1 u=10 fill=0:4 0:4 0:4 1 1 1 1 1 1 2 1 2 1 … 以下,4回繰り返し $ Main space 201 0 -201 fill=10 202 0 201 -202 203 3 -8.96 202 -203 204 0 -99 201 203 205 -1 99 [ S u r f a c e ] $ fundamental voxel 101 rpp -5 -3 -5 -3 -5 -3 99 so 100 $ Main space 201 rpp -5 5 -5 5 -5 5 202 rcc 0 0 -5 0 0 4 8 203 rcc 0 0 -6 0 0 5 9 十分に大きい領域であればどこでもよい X正方向,Y正方向,Z正方向 (図の左下から始まる) x y z Simple Voxel Phantom 14

物質の追加・変更方法 robot.inp ファントムの頭を水から銅に変更する 変更前 (robot.inp) 変更後 [ C e l l ] $ Material universe 1 0 -99 u=1 2 1 -1.00 -99 u=2 3 2 -2.70 -99 u=3 4 3 -8.96 -99 u=4 $ Voxel universe 101 0 -2 1 3 -4 5 -6 lat=1 u=10 fill=0:4 0:4 0:4 … (始めの4ブロック) 1 1 1 1 1 1 1 4 1 1 $ Main space 201 0 -201 fill=10 202 0 201 -202 203 3 -8.96 202 -203 204 0 -99 201 203 205 -1 99 ファントムの頭を水から銅に変更する 変更前 (robot.inp) 変更後 (robot1.inp) Simple Voxel Phantom 15

線量計算結果 robot-heat-xz.eps robot-heat-reg.out regメッシュを用いた [t-heat]計算 x: Serial Num. of Region y: Heat [MeV/source] h: x n n y(total),l3 n # num reg volume heat r.err 1 2 1.0000E+00 9.5978E-01 0.1277 2 3 1.0000E+00 3.4847E+01 0.0000 3 4 1.0000E+00 5.1924E+01 0.0000 regメッシュを用いた [t-heat]計算 各領域別(手足・胴・頭)の 線量を計算 xyzメッシュを用いた [t-heat]計算 腫瘍部分や重要臓器などに ROIをかけた線量計算が可能 ファントム内の線量分布を可視化 Simple Voxel Phantom 16

講習の流れ Universe Lattice 簡易Voxelファントム Dicom形式からの変換 まとめ Table of Contents PHITS講習会 入門実習 Table of Contents 17

1つのスライスに対するデータ(sample001.dcm) Dicom形式(バイナリー) 1つのスライスに対するデータ(sample001.dcm) ① Header (撮影日時,ピクセルサイズなどの情報) ② CT値(1,1→2,1→3,1→ … → nx-1, ny → nx, ny)の順番 このファイルがスライス数入ったフォルダで1つの物体を表現 1つのファイルを表示 フォルダ全体のデータを3D表示 Dicom形式からPHITS入力形式に変換する必要有 (CT値・バイナリ) (Universe番号・テキスト) Dicom to PHITS 18

DICOM2PHITSの使い方の詳細は「DICOM2PHITSの使い方」を参照 phits/utility/dicom2phits/phits-lec-dicom2phits-jp.ppt ①入力ファイルを作成(dicom2phits.inp) "data/HumanVoxelTable.data"  変換テーブルの指定 "DICOM/"  指定ディレクトリ内に含まれるDICOMファイルを自動判別 "PHITSinputs/"   PHITSインプットを格納するディレクトリを指定 1 20   指定した番号範囲のスライスファイルを読み込む (1<=z<=20) 70 430 90 460   DICOMデータの一部を切り出してボクセル化 (70<=x<=430, 90<=y<=460) 4 4 1   画像を粗くする(分解能を下げる)ことが可能 (x方向4個、y方向4個で平均) 0   原点オプション 0:ボクセル中心 1:DICOMヘッダーから抽出 0   PHITSパラメータ最適化オプション 0:最少 1:x線治療 2:粒子線治療 1   スライス読み込む順指定 +1:昇べき -1:降べき 原点オプション1では無視 ②実行 (Windows) dicom2phits_win.batにdicom2phits.inpをドラッグ&ドロップ    (Mac) dicom2phits_mac.commnadをダブルクリック、現れる窓にdicom2phits.inpと入力 ⇒ PHITSinputs/ディレクトリにサンプルインプット生成 DICOM2PHITS HowTo 19

巨大なボクセルデータをあらかじめバイナリー化して読込時間短縮! 読込の高速化 目的 PHITSでは一度インプットファイルを全てバイナリー化してから再読込 巨大なボクセルデータをあらかじめバイナリー化して読込時間短縮! 手順 ① [Parameters]セクションのivoxelを有効にする(cを消す) 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} Dicom to PHITS 20

講習の流れ Universe Lattice 簡易Voxelファントム Dicom形式からの変換 まとめ Table of Contents PHITS講習会 入門実習 Table of Contents 21

まとめ Voxelファントムは,UniverseとLatticeを組み合 わせて作成 Dicom形式は,別プログラム(DICOM2PHITS)を 用いてPHITS入力形式(テキスト形式)に変換 ivoxelパラメータを設定することにより読込を高 速化 Summary 22

高分解能ファントム利用時の注意点 対策方法 メモリが(物理的に)足りない場合 23 全身を高分解能でボクセル化すると使用メモリが膨大になり実行できなくなる 例)全身(180cm×30cm×50cm)を1mm3でボクセル化すると,2億7000万個の   ボクセルが必要→ 1CPUあたり最低5.4GBのメモリが必要(約20Byte/ボクセル) 初期設定のPHITSは,約2GBしかメモリを使うことができない 対策方法 “src”フォルダにある”param.inc”を変更し,全てのファイルを再コンパイル*する mdasの変更: PHITSで使用する総メモリ数(Byte)/8 (32bit機は特に上限値に注意) latmaxの変更: 最も大きなlattice数+1(複数Latticeを使う場合は,その最大値) 必要に応じて型宣言及びコンパイラオプションを追加: 詳細は次ページ参照 メモリが(物理的に)足りない場合 ボクセル化する領域を頭・胴・足などに分割し,無駄な領域を小さくする 複数のピクセルをまとめてボクセル化し,分解能を下げる *Windowsの場合,Stack memoryの関係からIntel Fortranではエラーが起きる場合があるので,gfortranの方がよい。Linux&MacはIntel Fortranでも動作します 23

補足資料① Voxel数が約5000千万個を超える場合は,様々な対策が必要 Appendix 24 Fortranソースパラメータの変更 例)JMファントム(ボクセル数:約1.5億個)を6分割(最大セルのボクセル数:約4千万個)にした場合 Fortranソースパラメータの変更 param.inc integer*8 mdas,mcmx,mci,mmdas,mmmax,nbnds,mct ! 4バイト整数の最大値(2147483647)超え対策 parameter ( mdas = 500000000 ) ! PHITSで使用する総メモリ数(Byte)/8, 64bit機の導入必須 parameter ( latmax = 47000000 ) ! 1セルあたりの最大ボクセル数 angel00.inc integer*8 mdas,mmdas,mmmax ! 4バイト整数の最大値(2147483647)超え対策 parameter ( mdas = 350000000 ) ! ANGELで使用する総メモリ数(Byte)/8 コンパイラオプションの追加(Intel Fortranの場合) -i-dynamic : Libraryを動的リンク -mcmodel=large : メモリの使用制限なし ただしLinux版のみ対応なので,巨大ファントムを利用する場合はLinuxシステムが必須 makefile F77 = ifort FCFLAGS = -noautomatic -mcmodel=large -i-dynamic Appendix 24

補足資料② lattice.inp Lattice 25 Voxelファントムの向きを変えるには,基本単位となるvoxel を定義する際の順番を変える必要がある lattice.inp RPP, BOX と同じ [ S u r f a c e ] (一部抜粋) 101 px -1 102 px 1 103 py -1 104 py 1 105 pz -1 106 pz 1 [ C e l l ] (一部抜粋) $ Universe 1 101 0 -102 101 -104 103 -106 105 lat=1 u=1 fill=-2:2 -2:2 0:0 3 2 2 2 2 2 2 2 2 2 RPPを各面 に分解 -102 101 -104 103 -106 105 X正方向,Y正方向,Z正方向 101 -102 -104 103 -106 105 X負方向,Y正方向,Z正方向 順番が 重要! 先に書く面 が正方向 -102 101 103 -104 -106 105 X正方向,Y負方向,Z正方向 101 -102 103 -104 -106 105 X負方向,Y負方向,Z正方向 Lattice 25