wrssc / ray_scripts

Python scripts for RayStation treatment planning system
GNU General Public License v3.0
24 stars 5 forks source link

Issue 102 final dose improvements #120

Closed rabayliss closed 4 years ago

rabayliss commented 4 years ago

PlanQualityAssurance (new module): • checks for simlocalization points and to make sure the points have coordinates • checks control point spacing in DynamicArc plans to make sure it is 2 degrees or less. • (added a has_coordinates_poi method in StructureOperations to see if a poi is defined on the image set) • Look for overlap between external and couch structures

Beginning log parsing. • Implemented new critical level logging that will allow physicists to quickly see new, pertinent informational items in the log files Critical: Key script output pertinent for plan checks Info: Normal script operation leading to plan changes Warning: Incorrect assumptions or operation when script was executed Error: error Debug: effectively, a print statement. YMMV on how useful the entry is Starting to use the logging.critical level for extraction for PIC review

GeneralOperations • Implemented a more sane approach to getting a current RS variable. GeneralOperations.py now has a simple function that either returns the RS variable beamset, plan, exam, etc. or optionally searches the current scope and returns a dictionary of all current variables within a patient

FinalDose: • Checking for fiducial point existence and coordinates • Checking SBRT and normal grid size, Added a test in final dose script to check for SBRT plan type and update the dose grid if necessary • Checking for 2 degree control point spacing • Rounding jaws to nearest mm • Rounding to nearest MU • Renaming beams to convention • Checking for suitable dose specification points, then inserting if need be • Adding electron calculations and autoselection of MC histories • Removed SRS from the grid test (1 mm resolution was resulting in a 1 hour computation) • Check on electron beams to see if they are clinical prior to computing dose • Added the UserInterface Status guide for encouraging user patience. • Added a test on TomoTherapy couch position. If the lateral shift exceeds the mechanical range +/- 2 cm, then alert the user that we will need to remove the indexing during treatment. • If the TomoCouch centroid differs from the isocenter position by more than 2 cm, then center the couch on the isocenter. This will typically be the case when the patient will need to be un-indexed and moved on the table. If these positions differ by less than 2 cm, we should be able to get there with mechanical movement of the couch. • Added an automatic increment to DSP names in case the DSP already exists (added an exists_dsp method to BeamOperations) • Added a check to increase the dose difference allowed when finding a DSP, the calculation multiplies the dose tolerance by 1.1 until points are found in the dose distribution.

PlanningStructures • Cleaning up code for readability. • Fixed an error in the planning structures script which was defining Skin_PRV03 as a 5 mm internal wall on external. Now it is a 3 mm wall as the name implies

BeamOperations: • Jaw Rounding: Check first segment only on a beam. If the jaws on the first segment need to be adjusted, then do it for all segments. (This sped up the calculation significantly). • Added nice formatting to jaw change message • Set the tolerance for a suitable existing DSP to 0.01 Gy • Added an alternative means of finding a dsp: Find all points greater than specified percentage of dmax (say 98%) Compute the centroid of these points Return coordinates for the DSP. • emc_calc_params now determines the number of histories based on the maximum of the hard limit (UW: 500000) and that required to give an uncertainty of 0.5%

Wrote a test function for the UserInterface.InputDialog method.