Nukleáris képalkotás 2 – Tomográfiás képrekonstrukció gyakorlat - 1 I. PET scanner szimuláció A kamera szimulációhoz a GATE programot használjuk, ami egy Geant4 alapokra épülı Monte Carlo szimulátor. A GATE egy szkript nyelvet használ a szimulációs setup felépítéséhez. Megjegyzés: minden sort, ami # karakterrel kezdıdik, a GATE megjegyzésként kezel. Gate ingyenesen letölthetı: http://opengatecollaboration.healthgrid.org/ A példa gate makro: http://atomki.hu/~mohacsii/documents/examplePET.mac A szimuláció felépítése a következı lépésekbıl áll: 1. A kamera geometriájának megadása 2. A fantom geometriájának megadása 3. A fizikai folyamatok definiálása 4. Szimuláció inicializálása 5. A detektor modell meghatározása 6. A források specifikálása 7. Az output formátum megadása 8. A szimuláció indítása II. A szimulált kamera paraméterei Paraméter:
~ Humán PET
miniPET – 2
Győrőátmérı
85 cm
107 mm
Győrők száma
1
1
Modulok száma
7
12
2.2 x 38.1 x 22 cm
12 x 56 x 56 mm
Kristályok mérete (x,y,z)
22 x 4 x 4 mm
12 x 1.27 x 1.27 mm
Kristályok közötti hézag
0.07 mm
0.076 mm
LYSO
LYSO
93 x 54 db
35 x 35 db
2
4
Modul mérete (x,y,z)
Kristály anyaga Kristályok száma egy modulban (y,z) minSectorDifference
-1-
III. Feladatok Építsd fel a fenti PET kamerák közül az egyiket. Szimuláld az adatgyőjtést különbözı pontszerő aktivitásértékek mellett. Minden esetben más output fájlnevet használj. Humán PET esetén 2, 5, 10, 15, 20, 30, 50 mCi miniPET-2 esetén 0.5, 1, 2, 5, 7, 10, 15 mCi Ábrázold (matlab, excel, OpenOffice Spreadsheet segítségével) a PET kamera által 1 másodperc alatt győjtött SINGLE eseményeket az aktivitás függvényében. Mi a tapasztalat? Miért csökken a detektált események száma az aktivitás növelésével? A koincidencia fájlok segítségével határozd meg a következıket minden egyes aktivitás esetén: valós koincidencia események száma másodpercenként véletlen események száma másodpercenként Compton szóródott események száma másodpercenként Ábrázold ugyanabban a koordináta rendszerben a valós, véletlen és Compton szórt eseményeket az aktivitás függvényében! Határozd meg a NECR (Noise Equivalent Count Rate) görbét az adott aktivitások esetén és ábrázold az aktivitás függvényében! NECR=T2/(T+S+R) ahol T a valódi, S a Compton szórt, R a véletlen koincidencia események számát jelöli másodpercenként.
-2-
GATE geometria és rendszer kapcsolata:
A GATE ASCII output fájlok formátuma: 1) Singles.dat: 1 : ID of the run (i.e. time-slice) 2 : ID of the event 3 : ID of the source 4, 5, 6 : XYZ position of the annihilation in world referential 7 : ID of volume attached to the "base" level of the system 8 : ID of volume attached to the "rsector" level of the system 9 : ID of volume attached to the "module" level of the system 10 : ID of volume attached to the "submodule" level of the system 11 : ID of volume attached to the "crystal" level of the system 12 : ID of volume attached to the "layer" level of the system 13 : Time stamp of the single 14 : Energy deposited by the single 15 to 17 : XYZ position of the single in the world referential 18 : Number of Compton interactions in phantoms before reaching the detector 19 : Number of Compton interactions in detectors before reaching the detector
-3-
20 : Number of Rayleigh interactions in phantoms before reaching the detector 21 : Number of Rayleigh interactions in detectors before reaching the detector 22 : Name of the phantom where a Compton effect occurs 23 : Name of the phantom where a Rayleigh effect occurs 2) Koincidencia fájlok (gateCoincidences.dat) : minden sor két olyan SINGLE eseményt tartalmaz, ami 1 koincidenciát alkot. 1 : ID of the run (i.e. time-slice) (first single) 2 : ID of the event (first single) 3 : ID of the source (first single) 4 to 6 : XYZ position of the annihilation in world referential (first single) 7 : Time stamp (first single) 8 : Energy deposited (first single) 9 to 11 : XYZ position in the world referential (first single) 12 : ID of volume attached to the "base" level of the system 13 : ID of volume attached to the "rsector" level of the system 14 : ID of volume attached to the "module" level of the system 15 : ID of volume attached to the "submodule" level of the system 16 : ID of volume attached to the "crystal" level of the system 17 : ID of volume attached to the "layer" level of the system 18 : Number of Compton interactions in phantoms before reaching the detector (first single) 19 : Number of Compton interactions in detectors before reaching the detector (first single) 20 : Number of Rayleigh interactions in phantoms before reaching the detector (first single) 21 : Number of Rayleigh interactions in detectors before reaching the detector (first single) 22 : Scanner axial position (first single) 23 : Scanner angular position (first single) 24 : ID of the run (i.e. time-slice) (second single) 25 : ID of the event (second single) 26 : ID of the source (second single) 27 to 29 : XYZ position of the annihilation in world referential (second single) 30 : Time stamp (second single) 31 : Energy deposited (second single) 32 to 34 : XYZ position in the world referential (second single) 35 : ID of volume attached to the "base" level of the system 36 : ID of volume attached to the "rsector" level of the system 37 : ID of volume attached to the "module" level of the system 38 : ID of volume attached to the "submodule" level of the system 39 : ID of volume attached to the "crystal" level of the system 40 : ID of volume attached to the "layer" level of the system 41 : Number of Compton interactions in phantoms before reaching the detector (second single) 42 : Number of Compton interactions in detectors before reaching the detector (second single) 41 : Number of Rayleigh interactions in phantoms before reaching the detector (second single) 42 : Number of Rayleigh interactions in detectors before reaching the detector (second single) 45 : Scanner axial position (second single) 46 : Scanner angular position (second single)
-4-
Példa egy GATE PET kamera szimulációs szkriptre (az alábbi változók helyett a megadott kamera paramétereket kell beírni és esetlegesen a mértékegységeket is meg kell változtatni): Paraméter neve
Paraméter értéke
RMIN
Győrőátmérı/2
RMAX
Győrőátmérı/2 + modulméret x irányban
CDEPTH
modulméret z irányban
RSECTOFFSET
RMIN + (modulméret x irányban / 2)
RSECTX
modulméret x irányban
RSECTY
modulméret y irányban
RSECTZ
modulméret z irányban
CX
kristály méret x irányban
CY
kristály méret y irányban
CZ
kristály méret z irányban
CREPY
kristályok száma 1 modulban y irányban
CREPZ
kristályok száma 1 modulban z irányban
CREPDY
kristály méret y irányban + kristályok közötti hézag
CREPDZ
kristály méret x irányban + kristályok közötti hézag
REPEATNUMBER
modulok száma
SECTORDIFF
minSectorDifference
OUTPUTFILENAME
output fájlok bázisneve
ACTIVITY
a fantom aktivitása
A példa GATE script: /gate/geometry/enableAutoUpdate # V I S U A L I S A T I O N #/vis/open OGLSX #/vis/viewer/set/viewpointThetaPhi 45 45 #/vis/viewer/set/style surface #/vis/viewer/zoom 4 #/vis/drawVolume #/gate/world/daughters/insert 3axes # disable the visualisation /vis/disable # W O R L D /gate/world/geometry/setXLength 400. cm /gate/world/geometry/setYLength 400. cm /gate/world/geometry/setZLength 400. cm #-------------------oooooOOOOO00000OOOOOooooo---------------------# # DEFINITION AND DESCRITION OF YOUR PET DEVICE #
-5-
#-------------------oooooOOOOO00000OOOOOooooo---------------------# #CYLINDRICAL:The cylindralPET system is dedicated for PET device ! /gate/world/daughters/name cylindricalPET /gate/world/daughters/insert cylinder /gate/cylindricalPET/setMaterial Air /gate/cylindricalPET/geometry/setRmax RMAX cm /gate/cylindricalPET/geometry/setRmin RMIN cm /gate/cylindricalPET/geometry/setHeight CDEPTH cm /gate/cylindricalPET/vis/forceWireframe # R S E C T O R : You define your block detection unit /gate/cylindricalPET/daughters/name rsector /gate/cylindricalPET/daughters/insert box /gate/rsector/placement/setTranslation RSECTOFFSET 0 0 cm /gate/rsector/geometry/setXLength RSECTX cm /gate/rsector/geometry/setYLength RSECTY cm /gate/rsector/geometry/setZLength RSECTZ cm /gate/rsector/setMaterial Air /gate/rsector/vis/forceWireframe # C R Y S T A L : in your block detection unit ! /gate/rsector/daughters/name crystal /gate/rsector/daughters/insert box /gate/crystal/geometry/setXLength CX cm /gate/crystal/geometry/setYLength CY cm /gate/crystal/geometry/setZLength CZ cm /gate/crystal/setMaterial LYSO /gate/crystal/vis/forceSolid /gate/crystal/vis/setColor yellow # R E P E A T C R Y S T A L I N Y O U R B L O C K /gate/crystal/repeaters/insert cubicArray /gate/crystal/cubicArray/setRepeatNumberX 1 /gate/crystal/cubicArray/setRepeatNumberY CREPY /gate/crystal/cubicArray/setRepeatNumberZ CREPZ /gate/crystal/cubicArray/setRepeatVector 0. CREPDY CREPDZ cm #REPEAT YOUR BLOCK (RSECTOR) IN YOUR CYLINDRICAL SYSTEM /gate/rsector/repeaters/insert ring /gate/rsector/ring/setRepeatNumber REPEATNUMBER # A T T A C H S Y S T E M and CRYSTAL: definition of your global detector /gate/systems/cylindricalPET/rsector/attach rsector /gate/systems/cylindricalPET/crystal/attach crystal /gate/crystal/attachCrystalSD #-------------------oooooOOOOO00000OOOOOooooo---------------------# # DEFINITION AND DESCRITION OF YOUR PHANTOM # #-------------------oooooOOOOO00000OOOOOooooo---------------------# /gate/world/daughters/name phantom /gate/world/daughters/insert cylinder /gate/phantom/setMaterial Water /gate/phantom/vis/forceSolid /gate/phantom/vis/setColor green /gate/phantom/geometry/setRmax 3 cm /gate/phantom/geometry/setHeight 5 cm /gate/phantom/attachPhantomSD #-------------------oooooOOOOO00000OOOOOooooo---------------------# # DEFINITION AND DESCRITION OF YOUR PHYSICS # #-------------------oooooOOOOO00000OOOOOooooo---------------------# # EM P R O C E S S /gate/physics/gamma/selectRayleigh lowenergy /gate/physics/gamma/selectPhotoelectric standard
-6-
/gate/physics/gamma/selectCompton standard # INACTIVE SECONDARY ELECTRONS & X - R A Y S /gate/physics/setElectronCut 1. m /gate/physics/setXRayCut 1. GeV /gate/physics/setDeltaRayCut 1. GeV #-------------------oooooOOOOO00000OOOOOooooo---------------------# # INITIALIZATION OF YOUR SIMULATION # #-------------------oooooOOOOO00000OOOOOooooo---------------------# /gate/geometry/enableAutoUpdate /run/initialize #-------------------oooooOOOOO00000OOOOOooooo---------------------# # DEFINITION OF YOUR ACQUISITION DIGITIZER & COINCIDENCE SHORTER # #-------------------oooooOOOOO00000OOOOOooooo---------------------# # A D D E R /gate/digitizer/Singles/insert adder # R E A D O U T /gate/digitizer/Singles/insert readout /gate/digitizer/Singles/readout/setDepth 1 # E N E R G Y B L U R R I N G /gate/digitizer/Singles/insert blurring /gate/digitizer/Singles/blurring/setResolution 0.26 /gate/digitizer/Singles/blurring/setEnergyOfReference 511. keV # E N E R G Y C U T /gate/digitizer/Singles/insert thresholder /gate/digitizer/Singles/thresholder/setThreshold 250. keV /gate/digitizer/Singles/insert upholder /gate/digitizer/Singles/upholder/setUphold 750. keV # D E A D T I M E /gate/digitizer/Singles/insert deadtime /gate/digitizer/Singles/deadtime/setDeadTime 3000000. ps /gate/digitizer/Singles/deadtime/setMode paralysable /gate/digitizer/Singles/deadtime/chooseDTVolume rsector # C O I N C I D E N C E S O R T E R /gate/digitizer/Coincidences/setWindow 10. ns /gate/digitizer/Coincidences/minSectorDifference SECTORDIFF #-------------------oooooOOOOO00000OOOOOooooo---------------------# # DEFINITION OF YOUR OUTPUT FILE # #-------------------oooooOOOOO00000OOOOOooooo---------------------# gate/output/ascii/enable /gate/output/ascii/setFileName OUTPUTFILENAME /gate/output/ascii/setOutFileSinglesFlag 1 /gate/output/ascii/setOutFileCoincidencesFlag 1 /gate/output/ascii/setOutFileSinglesAdderFlag 0 /gate/output/ascii/setOutFileSinglesReadoutFlag 0 /gate/output/ascii/setOutFileSinglesThresholderFlag 0 /gate/output/ascii/setOutFileSinglesUpholderFlag 0 /gate/output/ascii/setOutFileHitsFlag 0 #-------------------oooooOOOOO00000OOOOOooooo---------------------# # DEFINITION OF YOUR VERBOSITY LEVEL # #-------------------oooooOOOOO00000OOOOOooooo---------------------# /control/verbose 0 /grdm/verbose 0 /run/verbose 0 /event/verbose 0
-7-
/tracking/verbose 0 /gate/application/verbose 0 /gate/generator/verbose 0 /gate/stacking/verbose 0 /gate/event/verbose 0 /gate/source/verbose 0 #-------------------oooooOOOOO00000OOOOOooooo---------------------# # D E F I N I T I O N O F Y O U R S O U R C E S # #-------------------oooooOOOOO00000OOOOOooooo---------------------# /gate/source/addSource FDGCylinderSource /gate/source/FDGCylinderSource/setActivity ACTIVITY Bq /gate/source/FDGCylinderSource/gps/particle e+ /gate/source/FDGCylinderSource/gps/energytype Fluor18 /gate/source/FDGCylinderSource/gps/type Volume /gate/source/FDGCylinderSource/gps/shape Cylinder /gate/source/FDGCylinderSource/gps/radius 0.5 mm /gate/source/FDGCylinderSource/gps/halfz 0.5 mm /gate/source/FDGCylinderSource/gps/angtype iso /gate/source/FDGCylinderSource/gps/centre 0.0 0.0 0. cm #-------------------oooooOOOOO00000OOOOOooooo---------------------# # S T A R T A C Q U I S I T I O N T I M E P A R A M E T E R S # #-------------------oooooOOOOO00000OOOOOooooo---------------------# /gate/application/setTimeSlice 0.1 s /gate/application/setTimeStart 0. s /gate/application/setTimeStop 0.1 s # LET'S RUN THE SIMULATION! /gate/application/startDAQ
-8-