(III): Making Voxel Phantom

advertisement
PHITS
Multi-Purpose Particle and Heavy Ion Transport code System
PHITS Tutorial
for making Voxel Phantom
Last revised 2014/8
title
1
What is Voxel Phantom?
Reproduce a complex structure
such as human body based on
repeated rectangles filled with
a certain material
(See Manual 5.7.5)
Low
resolution
High
resolution
You can make voxel
phantom in PHITS virtual
space using Universe and
Lattice functions
(See Manual 5.7.3 and 5.7.4)
Introduction
2
Examples of PHITS calculations
using voxel phantom
Biological dose estimation
for charged-particle therapy
T. Sato et al.
Radiat. Res. (2009)
Treatment planning for BNCT
H. Kumada et al. J. Phys.: Conf. Ser. (2007)
Introduction
3
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Table of Contents
4
What is Universe?
→ Virtual space in PHITS
Universe1
You can define many universes
in PHITS virtual space
But only 1 universe (main
space) is the stage of
particle transport simulation
Main space
Some parts of the main space (inside
the boxes) are filled with universe 1
Universe
Other universes are used
for replacing some parts of
the main space using “fill”
command
5
always void
universe.inp
Example of Universe
[Cell]
Filled with
$ Main space
1 0 11 -12 13 -14 15 -17 FILL=1 Universe1
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
Declare universe 1
$ Universe 2
201 2 -7.86 -10 13 -14 U=2
202 1 -1.00 #201 U=2
[Surface]
10 CY 5
PX -3
11 PX -6
12 PX 6
PX 9
13 PY -6
14 PY 6
15 PZ -6
16 PZ 6
17 PZ 0
Figure 5.13 (a) Two rectangular solids. (b) Cylinder filled with water. (c) Iron cylinder in water
Universe
6
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Table of Contents
7
What is Lattice?
→ Repeated structure used
in PHITS virtual space
It is troublesome to define all
surfaces and cells used in
repeated structure
Define only surfaces and
cells used in fundamental
structure
Examples of
Lattice in PHITS
Express the repeated structure
using “lat” command
Lattice
8
How to define lattice?
Only repeated structure can be
defined in lattice universe
You cannot directly define the
contents inside lattice
It is better to define lattice not
in main space but in a universe
You have to fill lattice with
other universe
Define repeated structure using more than 2 universes
fill
Main space
fill
Universe1
Universe2
(Lattice structure)
(fundamental structure)
Lattice
9
5
(2,2,0)
Y
[Surface]
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
[Cell]
$ 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
22222
22222
22222
22222
22222
$ Universe 2
201 1 -19.32 -201 u=2
202 0 201
u=2
PHITS input
Basic lattice(0,0,0)
(-2,-2,0)
-5
lattice.inp
-5
X
Region 101
5
Declare lattice type 1 (Rectangle)
Define the region of basic lattice
Define the number of repeated structure
Universe number to be filled with(5×5×1 matrix)
Location should be adjusted to that of
the basic lattice
Lattice
10
Change the contents of lattice
lattice1.inp
[Cell]
$ 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
32222
22222
22222
22222
22222
$ Universe 2
201 1 -19.32 -201 u=2
202 0 201
u=2
$ Universe 3
302 0 -99 u=3
Change 1st box from golden ball to void
Before
(lattice.inp)
Lattice
After
(lattice1.inp)
11
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Table of Contents
12
How to define voxel phantom?
① Make universes filled with
an unique material such as
bone and soft tissue
② Make voxel phantom by
repeating those universes
Universe1
(void)
Universe2
(water)
Universe3
(Aluminum)
③ Fill some part of the
main space with the voxel
phantom
Universe10
(Voxel Phantom)
Main
Space
Simple Voxel Phantom
13
PHITS input file
robot.inp
[Cell]
$ 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
11111
12121
12121
11111
11111
… repeat 4 times
$ 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
Surfaces for the basic lattice
Any large region is OK
Lattice order: X+, Y+, Z+
(start with left&lower voxel)
[Surface]
$ fundamental voxel
1 px -5
2 px -3
3 py 3
4 py 5
5 pz 3
6 pz 5
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
z y
x
Simple Voxel Phantom
14
robot1.inp
Change materials
[Cell]
$ 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
... last one
11111
11111
11411
11111
11111
… repeat 4 times
$ 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
Change the material of the phantom
head from water to copper
Before
(robot.inp)
Simple Voxel Phantom
After
(robot1.inp)
15
Example of dose calculation
robot-heat-xz.eps
robot-heat-reg.out
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
[t-heat] tally using
mesh = reg
Calculate dose for each region
(Head, torso, and arm&leg)
[t-heat] tally using
mesh = xyz
Visualize the dose distribution
Useful for calculating dose
inside tumor region
Simple Voxel Phantom
16
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Table of Contents
17
DICOM format (Binary)
Data for 1 slice (sample001.dcm)
① Header (Information on time, voxel size etc.)
② CT values(1,1→2,1→3,1→…→nx-1, ny → nx, ny)
Several files are contained in one folder to represent an object
3D view
cross sectional view
It is necessary to convert from DICOM to PHITS-input format
(CT value, binary) (Universe number, text)
Dicom to PHITS
18
Conversion (DICOM2PHITS)
Convert from Dicom data to PHITS input format (voxel phantom)
Refer to “PHITS Tutorial How to use DICOM2PHITS”
phits/utility/dicom2phits/phits-lec-dicom2phits-jp.ppt
1. Make an input file for DICOM2PHITS (dicom2phits.inp)
"data/HumanVoxelTable.data"
"DICOM/"
"PHITSinputs"
1 20
70 430 90 460
4 4 1
0
0
1
Conversion table
DICOM files are automatically identified in this directory
Directory for PHITS inputs to be created
Slices to be used (1<=z<=20)
Clipping (70<=x<=430, 90<=y<=460)
Coarse graining (Average on 4 times 4 voxels in x and y direction)
Origin option: 0:Center of data 1:Reading from DICOM header
PHITS parameter: 0:Minimal 1:Photon therapy 2:Particle therapy
Reading slice order: +1:Ascending order or -1:Descending order
2. Execute
Windows: Drag dicom2phits.inp and drop into dicom2phits.bat
Mac: Double click dicom2phits.command and type dicom2phits.inp + enter
A sample input file will be created in PHITSinputs/ directory
DICOM2PHITS HowTo
19
Reduce computational time
Purpose
It converts its input file to binary, and re-reads the binary file
Every time PHITS runs…
It is better to…
Make binary file of voxel phantom prior to the PHITS execution
Procedure
① Insert the following 2 lines in the [Parameters] section
ivoxel = 2
# Convert the “fill” part of lattice to binary and output to file(18)
file(18) = voxel.bin # Output file name for binary voxel phantom
② Execute PHITS → Binary file was successfully generated!!
③ Change “ivoxel = 1”, and comment out “infl” command
ivoxel = 1 # Read the “fill” part of lattice from file(18)
Speed up!
$ infl:{voxel1.inp}
Dicom to PHITS
20
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Table of Contents
21
Summary
① Voxel phantom can be implemented in
PHITS using Universe and Lattice concepts
② DICOM format must be converted into
PHITS input format using DICOM2PHITS
③ Computational time can be reduced by using
“ivoxel” parameter
Summary
22
Table of Contents
1. Universe
2. Lattice
3. Simple voxel phantom
4. Conversion from DICOM format
5. Summary
6. Appendix
Table of Contents
23
How to Deal with High-Resolution Phantom?
High resolution voxel phantom requires numerous memory
e.g.) Whole body voxel phantom (180cm×30cm×50cm) with 1mm3
resolution consists of 270,000,000 voxels, and costs 5.4 GByte
memory, since PHITS uses memory approximately 20 Byte / voxel
Default setting of PHITS is allowed to use memory only less than 2 Byte
How to deal with the situation?
Change “param.inc” included in “src” folder
• increase mdas: Maximum memory allowed to be used by PHITS (Byte) / 8
• increase latmax: Maximum number of lattice in a cell
• declare integer*8 for several parameters (see next page in detail)
Delete all object files (*.o) and re-compile PHITS*
Memory is insufficient?
Divide voxel phantom into several regions to reduce the area to be voxelized
Combine several CT pixels into one voxel to decrease the resolution of phantom
*For Windows PC, gfortran is recommended to be used for this purpose, because PHITS
executable file compiled by Intel Fortran may cause “stack overflow” for large voxel phantom
24
How to Deal with High-Resolution Phantom?
If #voxels is greater than 50 millions, many changes are necessary
e.g. total #voxel = 150 millions, max #voxel per cell = 40 millions
Change include files in “src” folder
param.inc
integer*8 mdas,mcmx,mci,mmdas,mmmax,nbnds,mct ! avoid overflow (integer*4 =< 2147483647)
parameter ( mdas = 500000000 ) ! Maximum memory allowed to be used by PHITS (Byte) / 8
parameter ( latmax = 47000000 ) ! Maximum number of lattice in a cell
angel00.inc
integer*8 mdas,mmdas,mmmax
! avoid overflow (integer*4 =< 2147483647)
parameter ( mdas = 350000000 ) ! Maximum memory allowed to be used by ANGEL (Byte) / 8
Add compiler options (e.g. for Intel Fortran in Linux)
makefile
F77
= ifort
FCFLAGS = -noautomatic -mcmodel=large -i-dynamic
-i-dynamic: Dynamic link to libraries
-mcmodel=large: no limitation in memory use
(this option is only valid for Linux)
Appendix
25
Change the order of lattice
lattice2.inp
[ S u r f a c e ] (pick up partially)
101 px -1
102 px 1
RPP is divided
103 py -1
104 py 1
into each surface
105 pz -1
106 pz 1
[ C e l l ] (pick up partially)
-102
$ Universe 1
101 0 -102 101 -104 103 -106 105
lat=1 u=1
Order is
fill=-2:2 -2:2 0:0
important!
32222
22222
22222
22222
22222
Same as
RPP, BOX
101 -104 103 -106 105
X:+, Y:+, Z:+
101 -102 -104 103 -106 105
X: –, Y:+, Z: +
Prior surface faces to -102 101 103 -104 -106 105
the forward direction
X: +, Y: –, Z:+
101 -102 103 -104 -106 105
X: –, Y: –, Z: +
Appendix
26
Download