[Gate-users] Stationary phantom with associated time-activity-curves

Ida Häggström ida.haggstrom at radfys.umu.se
Tue Jan 10 16:23:20 CET 2012


Hello!
I'm trying to implement time-activity-curves into my simulation, but have
some questions. I have been able to implement it before when I was using a
real-time-motion (interfile) phantom (i.e. defining the baseFileName,
timeSampling and so on for the phantom which consisted of a lot of files -
one per time-sample). Now I want to use a single, stationary phantom (still
interfile) but define TACs for the different tissues. I've tried using the
codes below, but only get the output (cut to only relevant parts) as below.
It seems the phantom is correctly read, but when reading the same interfile
for the source, I get "Voxel reader ----------> number of voxels: 0" which
must mean that it was not read properly.
I've used dos2unix on all TAC-files and phantom files.

Any ideas anyone? Thanks a lot!
Ida

---------------------------parts of GATE output---------------------------
...
 Header read from       'phantom.h33'
 Data file name         'phantom.i33'
 Nb of planes:           110
 Nb of pixels per plane: 201 201
 Pixel size:             1 1
 Slice thickness:        2
 Matrix size:            201 201
 Data type:              UNSIGNED INTEGER

nx ny nz: 201 201 110
dx dy dz: 1 1 2
...
 Voxel reader type ---> interfileReader
  Geom. voxel reader ---->
  file name              : phantom.h33
  Geom. voxel store ----->
  position  (mm)         : 0.000e+00 0.000e+00 0.000e+00
  voxel size  (mm)       : 1.000e+00 1.000e+00 2.000e+00
  number of voxels       : 4444110
  Compression achieved   : 9.999e+01 %
GateCompressedVoxelParamInserter::ConstructOwnPhysicalVolumes voxelSize
 voxelNumber  (1.000e+00,1.000e+00,2.000e+00)
 (2.010e+02,2.010e+02,1.100e+02)
...
==== Source Voxel Reader Time Activity Translation Table ====
number of couples to be read : 2
 activity range  [1.000e+00 - 1.000e+00] is associated  to Time Activity
Curve read from file tissue.dat
==== Source Voxel Reader Time Activity Curve Read From File tissue.dat  ====
number of couples to be read : 1801
At 0.000e+00 seconds corresponds an Activity of 1.000e+02 Bcq
At 1.000e+00 seconds corresponds an Activity of 1.000e+02 Bcq
...
GateSourceVoxelImageReader::ReadFile : fileName: phantom.h33
 Header read from       'phantom.h33'
 Data file name         'phantom.i33'
 Nb of planes:           110
 Nb of pixels per plane: 201 201
 Pixel size:             1.000e+00 1.000e+00
 Slice thickness:        2.000e+00
 Matrix size:            2.010e+02 2.010e+02
 Data type:              UNSIGNED INTEGER

 Ignoring confine condition
Source ---------------> voxelSource
  ID                  : 0
  type                :
  startTime (s)       : 0.000e+00
  time (s)            : 0.000e+00
  forcedUnstable      : 0
  verboseLevel        : 0
-----------------------
  Voxel reader ---------->   number of voxels       : 0
  total activity (Bq)    : 0.000e+00
  position  (mm)         : 0.000e+00 0.000e+00 0.000e+00
  voxel size  (mm)    : 1.000e+00 1.000e+00 2.000e+00
    GPS info ---------------->
    particle                 : e+
    SourcePosType            : Point
    Shape                    : NULL
    Positron Range           : NULL
    halfx,halfy,halfz  (mm)  : 0.000e+00 0.000e+00 0.000e+00
    Radius             (mm)  : 0.000e+00
    Radius0            (mm)  : 0.000e+00
    CentreCoords       (mm)  : 0.000e+00 0.000e+00 0.000e+00
    Direction         : (1.000e+00,0.000e+00,0.000e+00)
    Confine                  : 0
    VolName                  : NULL
    EnergyDisType            : Fluor18
    MonoEnergy         (MeV) : 1.000e+00
    MinTheta, MaxTheta (deg) : 0.000e+00 1.800e+02
    MinPhi, MaxPhi     (deg) : 0.000e+00 3.600e+02
    --------------------------

GateSourceMgr::ListSources: List of the sources in the source managaer
Source ---------------> voxelSource
  ID                  : 0
  type                :
  startTime (s)       : 0.000e+00
  time (s)            : 0.000e+00
  forcedUnstable      : 0
  verboseLevel        : 0
-----------------------
...

---------------------------phantom.h33---------------------------
!INTERFILE :=
;
!GENERAL DATA :=
!name of data file := phantom.i33
;
!GENERAL IMAGE DATA :=
imagedata byte order := LITTLEENDIAN
!number of images/energy window := 1
!matrix size [1] := 201
!matrix size [2] := 201
!number format := unsigned integer
!number of bytes per pixel := 2
scaling factor (mm/pixel) [1] := +1
scaling factor (mm/pixel) [2] := +1
;
!SPECT STUDY (reconstructed data) :=
!number of slices := 110
slice thickness (pixels) := +2
;
!END OF INTERFILE :=

---------------------------phantom.mac---------------------------
# V O X E L I Z E D   P H A N T O M   M A T R I X

/gate/world/daughters/name voxelPhantom
/gate/world/daughters/insert compressedMatrix
/gate/voxelPhantom/geometry/insertReader interfile

# READ IMAGE MATRIX
/gate/voxelPhantom/interfileReader/insertTranslator range
/gate/voxelPhantom/interfileReader/rangeTranslator/readTable attRange.dat
/gate/voxelPhantom/interfileReader/readFile phantom.h33
/gate/voxelPhantom/interfileReader/rangeTranslator/describe 1
/gate/voxelPhantom/interfileReader/describe 1
/gate/voxelPhantom/attachVoxelPhantomSD

# POSITION
/gate/voxelPhantom/placement/setTranslation  0. 0. 0. mm

-----------------------------source.mac----------------------------
# V O X E L I Z E D   S O U R C E   M A T R I X

# Declaration of the fact that a voxellized source will be used.
/gate/source/addSource voxelSource voxel

# Declaration that the voxellized source will be entered
# using interfile data.
/gate/source/voxelSource/reader/insert interfile

#TIME-ACTIVITY
/gate/source/voxelSource/interfileReader/translator/insert range
/gate/source/voxelSource/interfileReader/rangeTranslator/readTable
actRange.dat
/gate/source/voxelSource/interfileReader/SetTimeActivityTablesFrom
tacTable.dat
/gate/source/voxelSource/interfileReader/SetTimeSampling 1 s

# The following line allows you to insert the ASCII file
# that contains all necessary numbers for all pixels
/gate/source/voxelSource/interfileReader/readFile phantom.h33

# The deafult position of the voxellized source is in the 1^{st}
# quarter. So the voxellized source has to be shifted over half its
# dimension in the negative direction on each axis
/gate/source/voxelSource/setPosition -100 -100 -110 mm

# The following lines characterize the size
# no difference with an analytical source
/gate/source/voxelSource/gps/particle e+
/gate/source/voxelSource/gps/energytype Fluor18
/gate/source/voxelSource/setForcedUnstableFlag false
/gate/source/voxelSource/setForcedHalfLife 6586.2 s #Fluor-18
/gate/source/voxelSource/gps/angtype iso
/gate/source/voxelSource/gps/mintheta 0. deg
/gate/source/voxelSource/gps/maxtheta 180. deg
/gate/source/voxelSource/gps/minphi     0. deg
/gate/source/voxelSource/gps/maxphi   360. deg
/gate/source/voxelSource/gps/confine NULL

/gate/source/voxelSource/dump 1
/gate/source/voxelSource/visualize 5000 red 2
/gate/source/list

----------------------------attRange.dat----------------------------
  3
  0      0       Air       false 0.0  0.0  0.0  0.2
  1      1       Water  true 1.0  0.0  0.0  0.2
  2      2       Water  true 0.0  1.0  0.0  0.2

----------------------------actRange.dat---------------------------
3
0    0     0
1    1     0
2    2     0

----------------------------tacTable.dat----------------------------
2
1 1 tissue.dat
2 2 blood.dat

-------------------------------blood.dat------------------------------
1801
0.000 100.000
1.000 100.000
2.000 100.000
3.000 100.000
4.000 100.000
5.000 100.000
6.000 261735.322
7.000 799437.142
8.000 1392774.647
9.000 1924313.214
10.000 2340585.194
11.000 2626275.065
...

-----------------------------tissue.dat-------------------------------
1801
0.000 100.000
1.000 100.000
2.000 100.000
3.000 100.000
4.000 100.000
5.000 100.000
6.000 2591179.683
7.000 7934941.213
8.000 13871621.300
9.000 19242942.553
10.000 23514693.069
11.000 26526180.613
...

---------------------------------------------------------------------------


More information about the Gate-users mailing list