[Gate-users] Time-activity curves for voxelized phantom/source
AliAsghar Parach
aaparach at gmail.com
Wed Oct 14 00:39:54 CEST 2009
Dear Ida,
It seems in this case activityrange.dat file contains the background value
for each voxel and TAC file contains real activity in time.
though, you can at first disable the activityrange.dat file and secondly
enable it and compare their results. one parameter for comparing this is
total activity that can be seen in gate running page.
if you can't see head of scanner, maybe you defined scanner incorrect or
disabled it's colors(if there is no error in output page).
regards.
2009/10/13 Ida Häggström <ida.haggstrom at radfys.umu.se>
> Dear Ali,
> thank you for your reply! I converted my binary files from 32bit floats to
> uint16 using matlab, and changed the header accordingly, and now I can run
> my simulation! Thank you! I do have another question though, and I can't get
> my head around it by only looking in the users guide. I also briefly asked
> this in my last post:
>
> For the voxelized, dynamic source, why do you use BOTH a range translator
> and the TACs? From the users guide (page 112):
> -----------------------------------------
> # TIME ACTIVITY option
> #
> /gate/source/voxel/interfileReader/rangeTranslator/readTable
> activityRange.dat
> /gate/source/voxel/interfileReader/SetTimeActivityTablesFrom
> TimeActivity_Tables.dat
> .
> .
> .
> The activityRange.dat is a text file where the user defines the label or
> pixel range value included
> activity. In this ascii file example, we consider that the activity is define
> for voxel values 46 and 261. With no background activity in the voxel value
> 46 and 10 Bq/voxel for voxel value 261.
> 2
> 46 46 0
> 261 261 10
> The TimeActivity_Tables.dat will define the TACs files which are associated
> to the voxel values
> defined in the previous data file.
> 2
> 46 46 lesion.dat
> 261 261 liver.dat
> -------------------------------------
>
> What does it mean to for example set voxel value 261 to 10 Bq via the
> rangeTranslator, and then set voxel value 261 to the time activity curve
> described in liver.dat? Is the first (range.dat here) some start value?
> Shouldn't you just set the TAC for a given voxel since that gives the
> activity in Bq/voxel at time t?
> Thanks!
> Ida
>
> Den 12 oktober 2009 23.45 skrev AliAsghar Parach <aaparach at gmail.com>:
>
> Dear Ida,
>> at first you should use attachvoxelPhantomSD (according to voxel_phantom
>> example) instead of attachPhantomSD in definition of voxelPhantom.
>> secondly in interfile format for voxel_phantom it should be in the format
>> of uint16 (GATE only recognize uint16 format in this case), you can do this
>> with MATLAB or Xmedcon or other proper software.
>> Finally, it seems your voxel_Phantom header file is incorrect. Only follow
>> the header file in GATE Voxel_Phantom example. and change your phantom data
>> (name,slices#,voxelsize,...).
>>
>> Hope this help you.
>>
>> 2009/10/12 Ida Häggström <ida.haggstrom at radfys.umu.se>
>>
>>> Hi!
>>>
>>> I'm trying to implement a dynamic voxelized source, but have run into
>>> some problems. I've followed the users guide, section 7.4 regarding how to
>>> set up my source/phantom, but I'm not successful. =(
>>> First of all, I have two time-activity curves (TACs), one for tissue and
>>> one for the heart. I want a simple phantom/source, a 4x4x4 voxel cube with
>>> the central 2x2x2 voxels corresponding to heart and the remaining outer
>>> voxels being tissue. The actual phantom/source (to the header file) is a
>>> 32bit binary image of the 4x4x4 voxels, voxel value 2 for the inner heart
>>> voxels and voxel value 1 for the outer tissue voxels.
>>>
>>> One thing that confuses me in the users guide is that in the source
>>> macro, is that they call for both* activityRange.dat* and *
>>> TimeActivity_Tables.dat*. The first translates the voxel value to an
>>> activity, and the second contains the TACs for the different voxel values.
>>> Shouldn't you just use one of them? And further more, they add the
>>> "RTVPhantom". I cannot find anything about what this is in the guide, and no
>>> hits when I google it...
>>>
>>> Anyway, when I run I get the error:
>>>
>>> creating a RTV Phantom at Address 0x8fb6ac0
>>> The Object RTPhantom RTVPhantom is enabled.
>>> GateRTPhantom::AttachToGeometry
>>> GateRTPhantom::AttachToGeometry : The RTPhantom RTVPhantom is now
>>> ATTACHED to Inserter Object phantom : OK !!!
>>> Please set it before setting the base file name. Aborting.
>>>
>>> *** G4Exception: Aborting execution ***
>>> Gatedied with signal 6
>>>
>>>
>>> All macros are found below. Thanks in advance for any suggestions! Any
>>> suggestions at all regarding implementing TACs into sources are very
>>> welcome!
>>> Ida
>>>
>>>
>>> -------------------------------------------------------------------
>>> phantom.mac
>>> -------------------------------------------------------------------
>>> # P H A N T O M
>>> #
>>>
>>> /gate/world/daughters/name phantom
>>> /gate/world/daughters/insert compressedMatrix
>>>
>>> /gate/phantom/geometry/insertReader interfile
>>> /gate/RTPhantom/insert RTVPhantom
>>> /gate/RTVPhantom/AttachTo phantom
>>>
>>> /gate/RTVPhantom/setBaseFileName dynamicPhantom/phantom
>>> /gate/RTVPhantom/setHeaderFileName dynamicPhantom/phantom_header.h33
>>>
>>> /gate/RTVPhantom/SetNumberOfFrames 11
>>> /gate/RTVPhantom/SetTimePerFrame 1 s
>>>
>>> /gate/phantom/interfileReader/insertTranslator range
>>> /gate/phantom/interfileReader/rangeTranslator/readTable
>>> dynamicPhantom/range.dat
>>> /gate/phantom/interfileReader/rangeTranslator/describe 1
>>> /gate/phantom/attachPhantomSD
>>> /gate/phantom/placement/setTranslation 0. 0. 0. mm
>>> /gate/phantom/interfileReader/describe 1
>>> -------------------------------------------------------------------
>>> source.mac
>>> -------------------------------------------------------------------
>>> # S O U R C E
>>> #
>>> /gate/source/addSource voxelSource voxel
>>> /gate/RTVPhantom/AttachToSource voxel
>>>
>>> /gate/source/voxelSource/reader/insert interfile
>>> /gate/source/voxelSource/interfileReader/translator/insert range
>>> /gate/source/voxelSource/interfileReader/rangeTranslator/readTable
>>> dynamicPhantom/actRange.dat
>>> /gate/source/voxelSource/interfileReader/SetTimeActivityTablesFrom
>>> dynamicPhantom/TAC_table.dat
>>> /gate/source/voxelSource/interfileReader/SetTimeSampling 1 s
>>>
>>> # 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 -40. -40. -40. mm
>>>
>>> /gate/source/voxelSource/setType backtoback
>>> /gate/source/voxelSource/gps/particle gamma
>>> /gate/source/voxelSource/gps/energytype Mono
>>> /gate/source/voxelSource/setForcedUnstableFlag true
>>> /gate/source/voxelSource/setForcedHalfLife 1223 s #Carbon-11
>>> /gate/source/voxelSource/gps/monoenergy 511. keV
>>> /gate/source/voxelSource/gps/angtype iso
>>> /gate/source/voxelSource/gps/mintheta 90. deg
>>> /gate/source/voxelSource/gps/maxtheta 90. deg
>>> /gate/source/voxelSource/gps/minphi 0. deg
>>> /gate/source/voxelSource/gps/maxphi 360. deg
>>> /gate/source/voxelSource/gps/confine NULL #voxelPhantom_P
>>>
>>> /gate/source/voxelSource/dump 1
>>> /gate/source/list
>>> ------------------------------------------------------------------
>>> phantom_header.h33
>>> ------------------------------------------------------------------
>>> !INTERFILE :=
>>> !GENERAL DATA :=
>>> !GENERAL IMAGE DATA :=
>>> !type of data := PET
>>> imagedata byte order := LITTLEENDIAN
>>> !PET STUDY (General) :=
>>> !PET data type := Image
>>> process status := Reconstructed
>>> !number format := float
>>> !number of bytes per pixel := 4
>>> number of dimensions := 3
>>> matrix axis label [1] := x
>>> !matrix size [1] := 4
>>> scaling factor (mm/pixel) [1] := 20
>>> matrix axis label [2] := y
>>> !matrix size [2] := 4
>>> scaling factor (mm/pixel) [2] := 20
>>> matrix axis label [3] := z
>>> !matrix size [3] := 4
>>> scaling factor (mm/pixel) [3] := 20
>>> image scaling factor[1] := 1
>>> data offset in bytes[1] := 0
>>> quantification units := 1
>>> !END OF INTERFILE :=
>>> ------------------------------------------------------------------
>>> TACs.dat
>>> ------------------------------------------------------------------
>>> 2
>>> 1 1 tissue.dat
>>> 2 2 heart.dat
>>> ------------------------------------------------------------------
>>> actRange.dat
>>> ------------------------------------------------------------------
>>> 2
>>> 1 1 0
>>> 2 2 10
>>> ------------------------------------------------------------------
>>> tissue.dat
>>> ------------------------------------------------------------------
>>> 11
>>> 0.0 0
>>> 1. 100
>>> 2. 200
>>> 3. 300
>>> 4. 500
>>> 5. 800
>>> 6. 900
>>> 7. 910
>>> 8. 920
>>> 9. 920
>>> 10 920
>>> ------------------------------------------------------------------
>>> heart.dat
>>> ------------------------------------------------------------------
>>> 11
>>> 0.0 0.0
>>> 1. 100
>>> 2. 200
>>> 3. 300
>>> 4. 500
>>> 5. 800
>>> 6. 1000
>>> 7. 700
>>> 8. 400
>>> 9. 200
>>> 10 100
>>>
>>> _______________________________________________
>>> Gate-users mailing list
>>> Gate-users at lists.healthgrid.org
>>> http://lists.healthgrid.org/mailman/listinfo/gate-users
>>>
>>>
>>
>>
>> --
>> Ali Asghar Parach,Ph.D. student in Medical Physics,Tarbiat Modares
>> University,Tehran,Iran
>>
>
>
--
Ali Asghar Parach,Ph.D. student in Medical Physics,Tarbiat Modares
University,Tehran,Iran
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opengatecollaboration.org/mailman/private/gate-users/attachments/20091014/ef8d5f23/attachment.htm>
More information about the Gate-users
mailing list