GATE activities @ Creatis, Lyon Opengate meeting 2017 – Marseille, France GATE activities @ Creatis, Lyon D. Sarrut Thursday, 30th November 2017
Projects @ CREATIS, Lyon Gate RT Ion (Medaustron) OpenDose (Toulouse) Still working on VRT Fast simulation combining determinist and stochastic methods Fast low energy photon dose [Baldacci et al. zMedPhys 2015] Faster low energy photon dose [Smekens et al. PMB 2014] Fast X-ray FFD simulation [Arbor et al, PMB 2015] Fast Prompt-Gamma emission [Huisman et al. PMB 2016] Fast SPECT FFD+ARF simulation [Cajgfinger et al. PMB, 2018] neutronTLE Arbor Currently working on 3D SPECT simulation Next project: Compton Camera module For proton dose monitoring For nuclear medicine with high E radioisotope Hermann Maxime Nothing new Still future
Back to basis the DoseActor
DoseActor: back to basis Uncertainty Conventional “batch method”: 10-50 simulations, mean, standard deviation “History by history” estimation [Walters2002] k =pixel /gate/actor/addActor DoseActor da /gate/actor/da/save output/dose_map.mhd /gate/actor/da/attachTo phantom /gate/actor/da/setVoxelSize 2 2 2 mm /gate/actor/da/enableEdep true /gate/actor/da/enableDose true /gate/actor/da/enableUncertaintyDose true i = event
DoseActor: “uncertainty trick” Compute the squared dose, by event i Brute force approach: Take the square after each events, for all voxels Slow ! Approach in Gate [Walters2002]: Store id of the last event in every voxel Only take the square when the event change Need a final loop over all voxels before final output writing Fast. Small memory increase.
What if need output for a region ? CT (Hounsfield Unit) Image of labels
What if need output for a region ? ROI: group of voxels e.g. image of labels For the edep/dose: easy Also sum over k Consider mass per voxel For the uncertainty ? The squared edep in ROI by event i is not available This is not the SD of dk in the region Need a new option !
DoseActor by regions With Maxime Chauvin Macros Label image must have the same size/spacing than phantom Output is a txt file /gate/actor/addActor DoseActor da /gate/actor/da/save output/dose_map.mhd /gate/actor/da/attachTo phantom /gate/actor/da/setVoxelSize 2 2 2 mm /gate/actor/da/enableEdep true /gate/actor/da/enableDose true /gate/actor/da/enableUncertaintyDose true /gate/actor/da/inputDoseByRegions data/label.mhd /gate/actor/da/outputDoseByRegions output/dose_regions.txt
DoseActor by regions Example of output (TODO: add a column for mass) (TODO: change column name) #id vol(mm3) edep(MeV) std_edep sq_edep dose(Gy) std_dose sq_dose n_hit n_event_roi 0 158092650.3 137406.6687 0.4382735288 3641907760 1.155833108e-07 0.4382735288 2.576935695e-15 803 7 1 5565.894125 0 1 0 0 1 0 1 1 2 7060.298575 120754.0866 1 1.458154942e+10 2.660430382e-06 1 7.077889818e-12 27 2 … 237320.5761 4225237.117 0.3122243818 1.756459091e+12 2.612181852e-06 0.3122243818 6.713402446e-13 625 22 52 223184.7299 3093411.653 0.444229193 1.896061827e+12 1.896385818e-06 0.444229193 7.125747973e-13 330 16 Volume in mm3 edep & dose Nb of hits / last event id
How does it work ? Manage a map of label - region statistic std::map<label, regionStat> label: integer regionStat: data structure with: edep, dose, squared values, last_event_id, nb_hits At each step: Get label at current voxel (same index than phantom) Get region statistics thanks to the map Update statistics, use similar “trick” Also need final loop before writing output
What if group of regions ? Want edep+uncertainty in user-defined regions composed of several labels ? /gate/actor/addActor DoseActor da /gate/actor/da/save output/dose_map.mhd /gate/actor/da/attachTo phantom /gate/actor/da/setVoxelSize 2 2 2 mm /gate/actor/da/enableEdep true /gate/actor/da/enableDose true /gate/actor/da/enableUncertaintyDose true /gate/actor/da/inputDoseByRegions data/label.mhd /gate/actor/da/outputDoseByRegions output/dose_regions.txt /gate/actor/da/addRegion 1000: 2 22 37 56
Aggregated region labels Compute a map of vector To each label associate a vector of regions std::map<label, std::vector<regionStat>> Vector contains: The region with unique label All other “aggregated regions” that contain the label Update all regions Need to build this map during initialization (closure) Flexible Timing: DoseActor cost: ~14% additional time DoseActor with region: ~1% additional time
Conclusion on DoseActor GateDoseActor is a very used/old tool introduced in ~2006 … still alive !! Improvements: edep, dose, uncertainty, nb of hits dose_to_water vs dose_to_medium [Grevillot2012,Simon/Fuchs2017] Adaptation to large CT voxels [Deschler, Arbor2015] Adaptation to regions [Chauvin, Sarrut2017] Need finalize code, documentation, example Will be included in next Gate release Code in github Docs in the wiki Example in GateContrib DoseActor
That’s it ! Thanks for your attention Acknowledgements: Laurent Guigues Simon Rit Thibault Frisson Jean-Michel Létang Maxime Chauvin Herman Fuchs Adrien Halty Loic Grevillot Thomas Baudier Luc Simon Jean-Noel Badel Thomas Deschler Thomas Cajgfinger Nicolas Arbor