UpdateScripts.py:
-There is an incompatibility with the rmtree command and our citrix environment for mapped drives. I have created a "move" of the active directory prior to using rmtree on the master directory and this seems to solve the problem.
-Additionally, due to windows quirkiness a "sleep" is added to the remove operation and the rm is placed in a while to ensure an empty directory prior to updating scripts.
FinalDose.py:
-A number of checks were turned off for debugging prior to submitting them to the master branch on the last commit. The FinalDose script now checks for fiducialpoint location, and overlap with external and support structures.
-Jaw Offsets:
Script now sets jaw positions based on the MLC that is farthest from the central axis within the beam. The Eclipse settings are used. The X jaws are set 8 mm from the last open MLC (using the ciao to compute), the y jaws are placed 2 mm from the first and last open MLC's. For dynamic MLC plans the all control points are evaluated for the maximum values.
Wide Field behavior: In the event that a jaw move would violate machine limits on MLC positions (max leaf out of carriage), the jaws are positions are tested. If they can be rounded to the nearest mm open without violating the carriage limit then that is done. If they cannot be rounded open without violating a carriage limit, then the jaws are rounded closed to the nearest mm.
-Better error handling was implemented on "Dose-already computed" states of the plan.
StructureOperations.py
-I have put in error handling for a zero volume contour (empty) on an overlap check.
BeamOperations.py:
-MLC properties class:
Created a new class called mlc properties that stores the ciao and maximum leaf from carriage positions.
Loaded properties of the specific machine in use from the machineDB directly to extend the script capabilities to all machines and avoid STx-specific limits.
Put flags in to detect an MLC-retracted state (which in RS still has MLC positions (they are just all at -20 and +20
*Combined the treatmentsetupsetting search and beam search into a single loop
Found a bug in the RayStation API init method for VMAT beams. The UpperLayer from Physics.MlcPhysics is undefined. Pulling the data directly from the machine_dB via a match.
-Added error handling for the dose specification point when the dose is less than the rx (user warned)
-Debug of check existing limits on stx to perform the check even if
the optimization has already started
OptimizationOperations.py
-eliminated small target evaluation (to be handled with jaw setback in final dose)
-Added patient save to the end of the optimize plan to avoid time-out on RS servers causing a loss of saved work.
-Added the automatic setting of treatment margins on VMAT and SMLC
plans to prevent the overexposure of normal tissues inadequately
optimized. This will force the aperture to not be never be larger
than a specified margin around any target roi which exists in the
Objectives list
-Extended this function to co-optimized beamsets to identify the
target being treated by a beamset
-Cleaned up the optimize_plan function in preparation for parameterizing
it using an input file.
UWLungSBRT:
-Eliminating RTOFG 0618 limits on Trachea/Bronchus per MD.
AutomatedWholeBrain.py
-Updated the location of the UWSupport template to autoload the HN portrait board.
Tomo3D:
-A misnomer, I know. Testing preliminary feasibility. Added a beamset template for tomo3d
UpdateScripts.py: -There is an incompatibility with the rmtree command and our citrix environment for mapped drives. I have created a "move" of the active directory prior to using rmtree on the master directory and this seems to solve the problem. -Additionally, due to windows quirkiness a "sleep" is added to the remove operation and the rm is placed in a while to ensure an empty directory prior to updating scripts.
FinalDose.py: -A number of checks were turned off for debugging prior to submitting them to the master branch on the last commit. The FinalDose script now checks for fiducialpoint location, and overlap with external and support structures. -Jaw Offsets:
StructureOperations.py -I have put in error handling for a zero volume contour (empty) on an overlap check.
BeamOperations.py: -MLC properties class:
OptimizationOperations.py -eliminated small target evaluation (to be handled with jaw setback in final dose) -Added patient save to the end of the optimize plan to avoid time-out on RS servers causing a loss of saved work. -Added the automatic setting of treatment margins on VMAT and SMLC plans to prevent the overexposure of normal tissues inadequately optimized. This will force the aperture to not be never be larger than a specified margin around any target roi which exists in the Objectives list -Extended this function to co-optimized beamsets to identify the target being treated by a beamset -Cleaned up the optimize_plan function in preparation for parameterizing it using an input file.
UWLungSBRT: -Eliminating RTOFG 0618 limits on Trachea/Bronchus per MD.
AutomatedWholeBrain.py -Updated the location of the UWSupport template to autoload the HN portrait board.
Tomo3D: -A misnomer, I know. Testing preliminary feasibility. Added a beamset template for tomo3d