Dear OpenTPS Team,
I am currently working on proton PBS machine modeling using OpenTPS and the underlying MCsquare engine. I have extracted my machine parameters from commissioning data but have a few specific questions regarding the exact physical definitions in the BDL format to ensure my model is strictly accurate:
1. Spot Size and Divergence medium: Should the SpotSize (e.g., SpotSize1x/y) and Divergence parameters in the BDL text file represent the beam phase space strictly in air? Or does the engine expect these parameters to be derived from in-water measurements?
2. Nozzle Geometry and Range Shifter layout: Regarding the nozzle_isocenter parameter defined in the BDL header: which specific physical plane of the machine does this refer to (e.g., the final nozzle exit window)? Furthermore, if a Range Shifter (RS) is included in the model (e.g., RS_type = binary), how is its position geometrically defined relative to this nozzle exit plane? Does MCsquare assume a default layout (like the RS being attached flush to the nozzle exit)?
3. 1st OpenTPS User Meeting: On a separate note, I am very interested in the presentations and topics discussed at the 1st OpenTPS User Meeting. Is there a video recording or replay available online for those of us who couldn’t attend?
Thank you very much for your time and for maintaining this excellent open-source project!
Best regards,
Cellur
I’m sharing here the answer from Kevin Souris (main developper of MCsquare) :
“I think you refer to the distance between the nozzle exit and the isocenter. In MCsquare, the nozzle exit is the plane where particles are generated. It indeed generally corresponds to the final exit window of the nozzle. It is actually not that important, as long as it is coherent with the distances used in the BDL optimization process. If you use the BDL commissioning tool of MCsquare, you also need to provide this same information.
The range shifter material properties and WET are specified in the BDL file. However, its position is provided by the treatment plan (distance from isocenter) because it can usually be adjusted for every beam.”
Also, for any questions specifically related to MCsquare, feel free to ask them directly on the MCsquare GitLab page.
Regards,
Romain Schyns
Dear Romain,
Thank you so much for the incredibly helpful and detailed response. Please also pass my sincere gratitude to Kevin.
Clarifying that the BDL parameters must be strictly defined in-air, and understanding how the range shifter position is handled dynamically via the treatment plan, completely resolves my confusion. This saves me a lot of time and ensures my machine model is on the right track. I also successfully downloaded the User Meeting presentation from the link you provided—thank you for sharing that!
On a separate topic regarding the software’s future roadmap: I am broadly interested in the new features being integrated into OpenTPS. Given the growing clinical interest in Proton Arc Therapy across the field, I was wondering if there is any ongoing development for Arc planning or dose calculation within OpenTPS? If so, is there a rough timeline for when such a module might be introduced or available for users to test in a future release?
Thanks again for your outstanding support and for maintaining this fantastic project!
Best regards,
Cellur
Dear Cellur,
At the moment, no one is actively working on ARC proton therapy within OpenTPS, so we can’t say whether such a module will be developed or when it might become available (unless someone from outside the core team takes the initiative to develop or update an ARC module).
That said, you can take a look at the work of Sophie Wuyckens, who is one of the main contributor to OpenTPS and worked on ARC proton therapy using OpenTPS during her PhD. Her code is available open-source on the branch layerSelectionDev but has never been merged to the master branch due to time constraints. You can find the main Flexi-arc code in this file: opentps_core/opentps/core/processing/planOptimization/acceleration/layerSelection.py · layerSelectionDev · Open-MCsquare / OpenTPS · GitLab and an example here. You won’t be able to run this example because the patient images are not shared but you can try easily to replace the data with your own. There is also a generic example on a phantom that should work. Note that this code was produced more than 2 years ago, thus it is no longer sync with the current master and would need some refactoring if you are working with current master.
I guess this may not be the answer you were hoping for, but it’s all we can share at the moment.
Regards,
Romain Schyns
Dear Romain,
Thank you so much for the transparent and incredibly helpful reply!
Contrary to what you might think, this is actually a fantastic answer. Knowing about Dr. Sophie Wuyckens’ work on the layerSelectionDev branch is exactly the kind of insight I was hoping to find. I really appreciate you pointing me directly to the layerSelection.py script and the generic phantom example.
Even though the code is from a couple of years ago and would require refactoring to sync with the current master branch, having access to her open-source Flexi-arc implementation is an invaluable learning resource for understanding how ARC could theoretically be structured within the OpenTPS framework.
Thank you again for your time, your honesty, and for pointing me in such a great direction. Have a wonderful week!
Best regards,
Cellur