医療応用実習6:強度変調放射線治療のシミュレーション

Download Report

Transcript 医療応用実習6:強度変調放射線治療のシミュレーション

PHITS
Multi-Purpose Particle and Heavy Ion Transport code System
治療応用実習(VI)
強度変調放射線治療のシミュレーション
2015年2月改訂
title
1
本実習の目標
時間変化を考慮した複数回のPHITSを連続実行す
ることにより、強度変調放射線治療(IMRT;
intensity-modulated radiotherapy)のシミュレーション
ができるようになる。
時間変化するマルチリーフコリメーターを通して
水ファントムにX線を照射した場合の吸収線量分布
Purpose
2
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
3
IMRT.inp
30 cm
Collimator
5 cm
Input file
4
30 cm
Water
phantom
20 cm
Photon
8 MeV
半径5cm幅の
一様なビーム
(上流部分を簡略化)
約80 cm
10 cm
初期設定の体系
体系の確認
はじめに、このインプットファイルで構築している
3次元体系を描画機能を用いて把握しましょう。
Icntl=8としてPHITSを実行すると2つの[t-track]から2次
元平面図がそれぞれ出力され、 icntl=11として実行する
と[t-3dshow]の結果が出力されます。
[T-Track]
title = Track in xyz mesh
・・・・・・
axis = xz
file = track_xz.out
・・・・・・
[ T - 3Dshow ]
title = Geometry check using [T-3dshow]
file = 3dshow.out
・・・・・・
・・・・・・
・・・・・・
[T-Track]
title = Track in xyz mesh
・・・・・・
axis = yz
file = track_yz.out
・・・・・・
Geometry
5
体系の確認
track_xz.eps
3dshow.eps
水ファントム
コリメーター
Geometry
6
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
7
課題1
サイズを変えたドーナツ型のコリメーターを
z=-78~-70cmの位置に追加してみましょう。
11 -12 13 -14
[Surface]
・・・・・・
11
pz -85.0
12
pz -80.0
13
cz
5.0
14
cz 10.0
track_xz.eps
30 cm
[Cell]
・・・・・・
11
3 -11.34
10 cm
IMRT.inp
8 cm
コピーしてコリメーターを追加
*円柱の厚さや内半径、外半径が
どの数字と対応するのかを考える
Geometry
8
課題1の答え合わせ
サイズを変えたドーナツ型のコリメーターを
z=-78~-70cmの位置に追加してみましょう。
[Surface
・・・・・・
11
pz
12
pz
13
cz
14
cz
15
pz
16
pz
17
cz
18
cz
]
11 -12 13 -14
15 -16 17 -18
track_xz.eps
30 cm
[Cell]
・・・・・・
11
3 -11.34
12
3 -11.34
10 cm
IMRT.inp
8 cm
-85.0
-80.0
5.0
10.0
-78.0
-70.0
5.0
15.0
Geometry
9
課題2
マルチリーフコリメーターをz=-60cmの位置に
追加してみましょう。
• Cell.inp, RemovedCell.inp, Surfacex1.inp , Surfacey.inp ,
Surfacez.inpをinflコマンドを用いて取り込む
• IMRT.inpの一行目に“file = IMRT.inp”
• 変数c1からc6を設定
track_xz.eps
Geometry
10
Cell.inp, RemovedCell.inp, Surfacex1(y,z).inp:
治療計画装置により得られたある状態にあるマルチ
リーフコリメーターの情報をPHITS形式に変換した
データファイル(変換方法については後述)
Surfacex1(y,z).inp
Cell.inp
1001 px -3.00*(-1)*c1-c2
2001 px -3.00*(-1)*c1
・・・・・・
1001 3 -11.34 1001 -2001 3000 -3001 4001 -4002
1002 3 -11.34 1002 -2002 3001 -3002 4001 -4002
1003 3 -11.34 1003 -2003 3002 -3003 4001 -4002
・・・・・・
3000 py c3+c4*0
3001 py c3+c4*1
・・・・・・
追加したセルを空気の領域(セル
番号998)より取り除くため
4001 pz c6
4002 pz c6+c2
RemovedCell.inp
#1001
#1002
#1003
・・・・・・
変数c1~c6
set:
set:
set:
set:
set:
set:
c1[50/100]
c2[10]
c4[0.25]
c5[120]
c3[-c4*c5/4]
c6[-65]
Geometry
$ Scaling factor
$ width of leaves [cm]
$ thickness of leaves [cm]
$ Number of leaves
$ y-coordinate of the first leaf [cm]
$ z-coordinate of multi-leaf collimator
11
課題2の答え合わせ
マルチリーフコリメーターをz=-60cmの位置に
追加してみましょう。
IMRT.inp
file = IMRT.inp
・・・・・・
・・・・・・
・・・・・・
[Cell]
1
1 -1.0
1 -2 3 -4 5 -6
998 2 -1.20e-3 -999 #1 #11 #12
infl: {RemovedCell.inp}
999
-1
999
11
3 -11.34
11 -12 13 -14
12
3 -11.34
15 -16 17 -18
infl: {cell.inp}
[Surface]
・・・・・・
・・・・・・
・・・・・・
17
cz
5.0
18
cz 15.0
set: c1[50/100] $ Scaling factor
set: c2[10] $ width of leaves [cm]
set: c4[0.25] $ thickness of leaves [cm]
set: c5[120] $ Number of leaves
set: c3[-c4*c5/4] $ y-coordinate of the first leaf [cm]
set: c6[-65] $ z-coordinate of multi-leaf collimator
infl: {surfacex1.inp}
infl: {surfacey.inp}
infl: {surface.zinp}
Geometry
12
課題2の答え合わせ
マルチリーフコリメーターをz=-60cmの位置に
追加してみましょう。
track_xz.eps
Geometry
13
課題3
マルチリーフコリメーターの状態をxy断面図で
見てみましょう。
• axis=xzの[t-track]をコピー&ペーストして、axis=xyの[t-track]を
追加する
• xとyの範囲を-10cmから+10cmとし、nxとnyは100とする
• zの範囲は-65cmから-60cmとし、nzは1とする
• ファイル名をtrack_xy-1.outに変更
track_xz.eps
この位置の断面図
Geometry
14
課題3の答え合わせ
マルチリーフコリメーターの状態をxy断面図で
見てみましょう。
IMRT.inp
[T-Track]
title = Track in xyz mesh
mesh = xyz
x-type = 2
xmin = -10.0
xmax = 10.0
nx = 100
y-type = 2
ymin = -10.0
ymax = 10.0
ny = 100
z-type = 2
zmin = -65.0
zmax = -60.0
nz = 1
・・・・・・
axis = xy
file = track_xy-1.out
・・・・・・
track_xy.eps
Geometry
15
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
16
課題4
エネルギー分布をもつ線源を設定してみましょう。
•
•
•
•
[source]セクションにおいてs-typeを4に変更
e0の行をコメントアウト
e-type = 1とし、ne = 28とする
その下の行にinflコマンドを用いてspectrum.inp
を読み込む
• Icntl=0として輸送計算を実行
スペクトル(spectrum.inp)
Source
17
課題4の答え合わせ
エネルギー分布をもつ線源を設定してみましょう。
IMRT.inp
[Source]
s-type = 4
proj = photon
$
e0 = 8.0
r0 = 5.00
x0 = 0.0
y0 = 0.0
z0 = -100.0
z1 = -100.0
dir = 1.0
e-type = 1
ne = 28
infl:{spectrum.inp}
track_xz.eps(2ページ目)
Source
18
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
19
課題5
[t-deposit]を用いて水ファントムの表面付近にお
ける吸収線量を調べてみましょう
IMRT.inp
[T-Track]
・・・・・・
nx = 100
y-type = 2
ymin = -10.0
ymax = 10.0
ny = 100
z-type = 2
zmin = -65.0
zmax = -60.0
nz =
1
e-type = 1
ne = 1
0.0 1000.0
unit = 1
axis = xy
file = track_xy-1.out
part = electron ・ ・ ・
•
•
•
•
•
•
Axis=xyの[t-track]セクションをコピー&ペースト
Xとyの範囲はそのままで、nxとnyは60とする
zの範囲は-15cmから0cmとし、nzは1とする
E-typeサブセクションはコメントアウト
fileはdeposit_xy-1.outとする
この領域を
Partはallに変更する
タリーする
Dose distribution
20
課題5の答え合わせ
[t-deposit]を用いて水ファントムの表面付近にお
ける吸収線量を調べてみましょう
IMRT.inp
deposit_xy-1.eps
[ T - deposit ]
・・・・・・
nx = 60
y-type = 2
ymin = -10.0
ymax = 10.0
ny = 60
z-type = 2
zmin = -15.0
zmax = 0.0
nz =
1
$ e-type = 1
$
ne = 1
$
0.0 1000.0
unit = 1
axis = xy
file = deposit_xy-1.out
part = all
コリメーターの隙間
と対応している
Dose distribution
21
課題6
マルチリーフコリメーターが別の状態にある場合
の吸収線量を調べてみましょう
• [surface]セクションでinflしているsurfacex1.inpを
surfacex9.inpに変更
• Axis=xyとしている[t-track]のfileをtrack_xy-9.outに
変更
• Axis=xyとしている[t-deposit]のfileをdeposit_xy-9.out
に変更
• まずはicntl=8としてtrack_xy-9.epsを見てマルチリー
フコリメーターの形状を確認し、次にicntl=0として
deposit_xy-9.epsの吸収線量の分布を調べる
Dose distribution
22
課題6の答え合わせ
マルチリーフコリメーターが別の状態にある場合
の吸収線量を調べてみましょう
IMRT.inp
[Surface]
・・・・・・
infl: {surfacex9.inp}
infl: {surfacey.inp}
infl: {surface.zinp}
・・・・・・
・・・・・・
[T-Track]
・・・・・・
axis = xy
file = track_xy-9.out
・・・・・・
[ T - deposit ]
・・・・・・
axis = xy
file = deposit_xy-9.out
part = all
track_xy-9.eps
deposit_xy-9.eps
コリメーターの隙間
と対応している
Dose distribution
23
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
24
課題7
Sumtally機能を使って、2つのマルチリーフコリメー
ターの結果を足しあわせましょう
• [t-deposit]の最後でsumtally.inpをinflコマンドを
用いることでsumtally subsectionを設定する
• [parameters]セクションにおいてicntlを13とする
Sumtally.inp
Sumtally
subsection
の始まりと
終わり
sumtally start
isumtally = 2
nfile = 2
deposit_xy-1.out 3.0
deposit_xy-9.out 1.0
sfile = result.out
sumfactor = 1.0
sumtally end
足し合わせるファイル数
足し合わせるファイル名
と重み付けの値
足し合わせた結果のファ
イル名
規格化定数
sumtally
25
課題7の答え合わせ
Sumtally機能を使って、2つのマルチリーフコリメー
ターの結果を足しあわせましょう
IMRT.inp
result.eps
[Parameters]
icntl =
13
・・・・・・
・・・・・・
・・・・・・
[ T - deposit ]
・・・・・・
axis = xy
file = deposit_xy-9.out
part = all
gshow = 1
epsout = 1
infl: {sumtally.inp}
Surfacex1.inpとSurfacex9.inpの結果が
3:1で足しあわせられている
sumtally
26
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
27
課題8
スクリプト言語によるプログラムautorun.batを用いて、
複数回PHITSを実行しましょう
• PHITSで計算した結果をコピーするためにoutputという名前
のフォルダを作成する
• [surface]セクションでinflしているsurfacex9.inpをsurfacex.inp
に変更
• Axis=xyとしている[t-deposit]のfileをdeposit_xy.outに変更
• Icntlを0に戻す
• Autrun.batを実行
– (Windowsの場合)Autrun.batをダブルクリック
– (Macの場合) autorun_mac.commandをダブルクリック
Auto-run program
28
Autrun.bat (autorun_mac.command):
1. フォルダ”MultiLeafCollimator”にあるsurfacex***.inpをコピー
2. その情報を用いてPHITSを実行
3. PHITSの計算終了後、出力ファイルであるphits.outと
deposit_xy.outをフォルダ”output”に移動
autorun.bat
@echo off
echo Calculating %%i ...
SET PHITSEXE=“C:\phits\bin\phits274_win.exe"
SET OUTDIR="output"
①
copy MultiLeafCollimator\surfacex%%i.inp
surfacex.inp
copy MultiLeafCollimator\cell.inp .
copy MultiLeafCollimator\sumtally.inp .
copy MultiLeafCollimator\RemovedCell.inp .
②
%PHITSEXE% < IMRT.inp
for /l %%i in (1, 1, 9) do (
For文の中は→
)
pause
exit
③
move phits.out
%OUTDIR%\phits-%%i.out
move deposit_xy.out
%OUTDIR%\deposit_xy-%%i.out
move deposit_xy_err.out
%OUTDIR%\deposit_xy-%%i_err.out
初期値1、変化量1として、
9まで変数%%iの数字を
変えながら動作する
Auto-run program
29
課題8の答え合わせ
スクリプト言語によるプログラムautorun.batを用いて、
複数回PHITSを実行しましょう
Outputフォルダ内
deposit_xy-1.out
deposit_xy-1_err.out
deposit_xy-2.out
deposit_xy-2_err.out
deposit_xy-3.out
・・・・・・
deposit_xy-9_err.out
phits-1.out
phits-2.out
phits-3.out
phits-4.out
phits-5.out
・・・・・・
phits-9.out
9個のdeposit_xy.outと
deposit_xy_err.out、phits.outが
出力されていればOK
もし時間が掛かるようであれば、
IMRT.inpのmaxcasを100にして
実行してみてください
Auto-run program
30
実習内容
1.
2.
3.
4.
5.
6.
7.
体系の確認
コリメーターのモデリング
線源の設定
吸収線量の空間分布の評価
Sumtallyによるタリー結果の足しあわせ
スクリプト言語を用いたPHITSの連続実行
強度変調放射線治療シミュレーションにお
ける線量分布
Table of contents
31
課題9
Sumtally機能を使って、autorun.batにより得られた複
数のタリー結果を加重平均により足し合わせましょう
• [parameters]セクションにおいてicntlを13とする
• sumtally.inpが更新されているのを確認する
Sumtally.inp
sumtally start
isumtally = 2
nfile = 9
output/deposit_xy-1.out 0.2000-0.0000
output/deposit_xy-2.out 0.3000-0.2000
output/deposit_xy-3.out 0.4000-0.3000
・・・・・・
output/deposit_xy-9.out 1.0000-0.9000
sfile = result.out
sumfactor = 1.0
sumtally end
sumtally
32
課題9の答え合わせ
Sumtally機能を使って、autorun.batにより得られた複
数のタリー結果を加重平均により足し合わせましょう
result.eps
Sumtally.inp
sumtally start
isumtally = 2
nfile = 9
output/deposit_xy-1.out
output/deposit_xy-2.out
output/deposit_xy-3.out
・・・・・・
output/deposit_xy-9.out
sfile = result.out
sumfactor = 1.0
sumtally end
0.2000-0.0000
0.3000-0.2000
0.4000-0.3000
1.0000-0.9000
これらの重み付けで
各マルチリーフコリメーター
の計算結果が足しあわせ
られている
sumtally
33
まとめ
• マルチリーフコリメーターをモデリングし、時間変化
により様々な形状をとった場合の計算ができるよう
になった。
• Sumtally機能を用いて複数のタリー結果を足し合わ
せることにより、強度変調放射線治療を模擬した吸
収線量の空間分布を求めた。
• スクリプト言語を用いて、複数回のPHITS計算を実
行した。
Summary
34