1 / 22

Python Interface for Geant4 Medical Applications

Python Interface for Geant4 Medical Applications. K.Murakami (KEK) 15/Jul/05. Introduction. Missing functionalities of current Geant4 command-line interface more powerful scripting environment only simple flow control is available, but not enough.

jdurant
Download Presentation

Python Interface for Geant4 Medical Applications

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Python Interface forGeant4 Medical Applications K.Murakami (KEK) 15/Jul/05 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  2. Introduction • Missing functionalities of current Geant4 command-line interface • more powerful scripting environment • only simple flow control is available, but not enough. • flow control, variables, arithmetic operation • direct handling each object of G4XXX • only limited manager-like classes can be exposed via G4UIcommand. • Python is believed to be the most promising technological choice in terms of • Python as a powerful scripting language • Python can work as front-end of a light framework • modularization of user classes with dynamic loading scheme • DetectorConstruction, PhysicsList, PrimaryGeneratorAction, UserAction-s • It helps avoid code duplication. • Python as “Software Component Bus” • C++ objects can be exposed to python. • interconnectivity with many Python external modules, • analysis tools (ROOT/AIDA), web interface,... 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  3. Project Aim of Geant4Py • Generic and straight forward approach of Pythonization of Geant4 • not specific to particular applications • minimal dependencies of external packages • only depending on Boost-Python, which is a common, well-established and freely available library. 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  4. Use-Case of Medical Application • System integration of developed components... • geometry modeling (DICOM, DICOM-RT, beam line, ...) • physics list (EM, Hadron, Ion [BC, JQMD], ...) • MPI parallelization (MPICH2) • Analysis packages (ROOT, HBOOK, AIDA, ...) • Visualization (Real Intage, DoctorView, AVS, ...) • Web applications (mod-python, CherryPy) • (G)UI (Java, Python, Web App., Qt, Tk, ...) • Grid service (LCG, Clarens) • Interconnectivity with these items can be realized via Python interface. 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  5. Software Structure Applications Components Implementation • Applications • C++ application, Python scripts, Web applications, ... • Component Implementation • geometry modeling • physics list • scoring, ... • Simulation Framework • component models • plug-in management • scripting • parallelization • Other Frameworks • analysis (ROOT) • visualization, ... • Software Component Bus • Python, API, original interface Simulation Framework XXX Framework Other Frameworks ... Software Component Bus Foundation Libraries Optional Libraries • Foundation Libraries • Geant4, JQMD, ... • MPICH, ... • LCG • Python, Boost-Python • CLHEP • ... • Optional Libraries • ROOT, CERNLIB, ... • JAVA, Qt, Tk • ... 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  6. Tools for Geant4/Python interface • There are several activities; • SWIG • supports for multiple languages • Implementation of G4/Python interface can be found in advanced examples (Tiara). • LCG Python Geant4 interface • using PyReflex tool • Boost-Python • a part of comprehensive Boost C++ library, but independent from other components • focused to C++/python interface, so performance loss is not so much. 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  7. What is/isnot Exposed What is exposed: • Classes for main Geant4 flow control • G4RunManager, G4UImanager, G4UIterminal • Some Utility classes • G4String, G4ThreeVector, G4RotationMatrix, ... • Classes of base classes of user actions • G4UserDetetorConstruction, G4UserPhysicsList, • G4UserXXXAction (PrimaryGenerator, Run, Event, Stepping,...) • can be inherited in Python side • Classes having information to be analyzed • G4Step, G4Track, G4StepPoint, G4ParticleDefinition, ... • Classes for construction user inputs • G4ParticleGun, G4Box, G4PVPlacement, ... What is not exposed: • NOT all methods are exposed. • only safe methods (getting internal information) are exposed. • Out of Scope • implementation of physics processes • implementation of internal control flows • It just ends in deterioration of performance. 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  8. Module Structure • Python module name : “Geant4” • including CLHEP components typedef-ed as G4XXX, like • G4ThreeVector, G4RotationMatrix, ... • Units definition (“HEPUnit” as namespace) • From users side, >>> import Geant4 >>> from Geant4 import * • “Geant4” module consists of a collection of submodules same as Geant4 directory structure. • run/event/particle/geometry/track/... 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  9. Name Policy in Python side • Names of classes as well as methods are same as used in Geant4. >>> gRunManager= Geant4.G4RunManager() >>> gRunManager.BeamOn(10) • This makes it easy to translate from C++ to Python, and vice versa. • As an exception, pure singleton class, which has no public constructor, like G4UImanager, can not be exposed in Boost-Python. So, necessary members of such classes are exposed directly in Geant4 namespace. >>> Geant4.gApplyUIcommand(“/run/beamOn”) >>> Geant4.gGetCurrentValues(“/run/verbose”) >>> Geant4.gStartUISession() 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  10. Global Variables/Functions • Some global variables/functions starting with "g“ are predefined. • gRunManager • gVisManager • gApplyUIcommand() • gGetCurrentValues() • gStartUISession() • gRunManager and gVisManager are taken care not so as to be doubly instantiated, so that users do not have to take any more care about the timing of object instantiation in python side. • All of visualization drivers (OpenGL, VRML, DAWN, ...) are automatically registered. So users are now free from implementation of VisManager. • Note that care from C++ side is of course in need! if(G4RunManager::GetRunManager() ==0 ) G4RunManager* runManager= new G4RunManager(); 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  11. global G4String G4ThreeVector interface G4UImanager G4UIterminal run G4RunManager G4VUserDetectorConstruction G4VUserPhysicsList G4UserRunAction G4VUserPrimaryGeneratorAction G4Run event G4Event G4ParticleGun G4UserEventAction tracking G4UserSteppingAction track G4Step G4Track G4StepPoint G4StepStatus G4TrackStatus particles G4ParticleDefinition G4DynamicParticle G4PrimaryParticle G4PrimaryVertex geometry G4VTouchable G4TouchableHistotry G4VPhysicalVolume material G4Material visualization G4VisManager G4VGraphicSystem G4OpenGLStoredX ... List of Current Exposed Classes 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  12. Various Levels of Pythonization • Various level of pythonized application can be realized. • It is completely up to users! • Two metrics • Execution Speed • just wrapping current existing applications • Interactivity • interactive analysis • rapid prototyping • educational use for G4 primer 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  13. Use-case of Pythonization Execution Speed large scale of mass production a collection of short productions with various running conditions applications having interconnections with other software components interactive analysis • free from compilation • rapid prototyping • - educational uses Interactivity/ Pythonization 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  14. An Example of Exposure of Users’ Application • Uses’ existing applications are easily exposed to python following a simple prescription of Boost-Python manner. BOOST_PYTHON_MODULE(demo_wp){ class_<MyApplication>("MyApplication", "my application") .def("Configure", &MyApplication::Configure) ; class_<MyMaterials>("MyMaterials", "my material") .def("Construct", &MyMaterials::Construct) ; class_<MyDetectorConstruction, MyDetectorConstruction*, bases<G4VUserDetectorConstruction> > ("MyDetectorConstruction", "my detector") ; class_<MyPhysicsList, MyPhysicsList*, bases<G4VUserPhysicsList> > ("MyPhysicsList", "my physics list") ; } 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  15. A Medical Application Example • Several examples of using Python interface are/will be presented. • An example of “water phantom dosimetry” This demo program shows that a Geant4 application well coworks with ROOT on Python front end. VisManager, PrimaryGeneratorAction, UserAction-s, histogramming with ROOT are implemented in Python. • dose calculation in a water phantom • Python overloading of user actions • on-line histogramming with ROOT • visualization 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  16. Example of A Python Script from Geant4 import * import demo_wp # module of a user G4 application import ROOT # ------------------------------------------------------------- class MyRunAction(G4UserRunAction): # Python inheritance "My Run Action“ def EndOfRunAction(self, run): # method override print "*** End of Run“ print "- Run sammary : (id= %d, #events= %d)" \ % (run.runID, run.numberOfEventToBeProcessed) # ------------------------------------------------------------- class MyPrimaryGeneratorAction(G4VUserPrimaryGeneratorAction): "My Primary Generator Action“ def __init__(self): G4VUserPrimaryGeneratorAction.__init__(self) self.particleGun= G4ParticleGun(1) def GeneratePrimaries(self, event): self.particleGun.GeneratePrimaryVertex(event) 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  17. # user detector construction (C++) myDC= demo_wp.MyDetectorConstruction() gRunManager.SetUserInitialization(myDC) # user physics list (C++) myPL= demo_wp.MyPhysicsList() gRunManager.SetUserInitialization(myPL) # user P.G.A (Python) myPGA= MyPrimaryGeneratorAction() gRunManager.SetUserAction(myPGA) ... # setting particle gun pg= myPGA.particleGun pg.SetParticleByName("proton") pg.SetParticleEnergy(230.*HEPUnit.MeV) pg.SetParticleMomentumDirection(G4ThreeVector(0., 0., 1.)) pg.SetParticlePosition(G4ThreeVector(0.,0.,-20.)*HEPUnit.cm) gRunManager.Initialize() gApplyUICommand("/control/execute vis.mac") gRunManager.BeamOn(100) 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  18. 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  19. Further to go... • Making rapid progress for implementation of missing elements • Realize interconnection with various software components; • example of using AIDA • example of using GDML • multi-thread and parallelization • web application • GUI support in specific application contexts • GRID service • ... 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  20. Software Requirements • All libraries should be compiled in shared libraries. • Python • BOOST-Python • 1.32, latest • Geant4 • 7.0 or later • - should be built in "global" and "shared" libraries. • - All header files should be collected into $(G4INSTALL)/include by "make includes" • CLHEP • 1.9.1.1 or later • - building shared objects is supported since version 1.9. • Platforms • SUSE Linux 9.3 is a development environment. • It is the easiest way to go, because Boost C++ library is preinstalled. • Scientific Linux 3 (SL3) is checked for well working. • SL4 will be checked as well. 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  21. GRID MPI GUI GUI Python shell Geant4Py PyROOT math ... Geat4 Classes Root Classes Summary • Python Interface of Geant4 (Geant4Py) has been well designed and implementation is now rapidly on-going. • Python as a powerful scripting language • much better interactivity • configuration • rapid prototyping • Python as “Software Component Bus” • interconnectivity with various kind of software components. • histogramming with ROOT • system integration • We have a plan to commit the package into the next December release. • “environments/” directory is a suitable position 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

  22. Resources • Project Home Page • http://www-geant4.kek.jp/projects/Geant4Py/ • CVS view • http://www-geant4.kek.jp/projects/Geant4Py/cvs/ • Wiki • Technical notes for the developers • http://www-geant4.kek.jp/projects/Geant4Py/pukiwiki/ 4th Workshop on Geant4 Bio-medical Developments and Physics Validation

More Related