From adffb2b7537ac9f91a729454b967a53498df65ab Mon Sep 17 00:00:00 2001 From: James Kerns Date: Thu, 15 Aug 2024 14:54:52 -0500 Subject: [PATCH 1/5] fix energy inconsistencies in prefab plans --- pylinac/plan_generator/dicom.py | 2 +- scripts/prefab_plan_generator.py | 174 ++++++++++++++++--------------- 2 files changed, 91 insertions(+), 85 deletions(-) diff --git a/pylinac/plan_generator/dicom.py b/pylinac/plan_generator/dicom.py index 920e37bb..28cc3ed9 100644 --- a/pylinac/plan_generator/dicom.py +++ b/pylinac/plan_generator/dicom.py @@ -1552,7 +1552,7 @@ def add_gantry_speed_beams( g_angles_uncorrected = [start_gantry_angle] + ( start_gantry_angle + gantry_sign * np.cumsum(gantry_deltas) ).tolist() - gantry_angles = [wrap360(angle) for angle in g_angles_uncorrected] + gantry_angles = [round(wrap360(angle), 2) for angle in g_angles_uncorrected] if sum(gantry_deltas) >= 360: raise ValueError( diff --git a/scripts/prefab_plan_generator.py b/scripts/prefab_plan_generator.py index 99aa2f8c..f5a200af 100644 --- a/scripts/prefab_plan_generator.py +++ b/scripts/prefab_plan_generator.py @@ -2,17 +2,18 @@ from pylinac.plan_generator.dicom import FluenceMode, PlanGenerator -rt_plan_file = ( +rt_plan_dir = ( Path(__file__).parent.parent.absolute() / "Files" / "RapidArc QA Test Procedures and Files for TrueBeam" / "Plans" - / "HDMLC" - / "T0.2_PicketFenceStatic_HD120_TB_Rev02.dcm" ) -MLC = "HD120" -REVISION = 1 +REVISION = 2 +MLCS = ( + ("HD120", rt_plan_dir / "HDMLC" / "T0.2_PicketFenceStatic_HD120_TB_Rev02.dcm"), + ("M120", rt_plan_dir / "Millennium" / "T0.2_PicketFenceStatic_M120_TB_Rev02.dcm"), +) CONTEXTS = [ # energy, mode, max dose rate (6, FluenceMode.STANDARD, 600), @@ -23,89 +24,94 @@ (18, FluenceMode.STANDARD, 600), ] -for context in CONTEXTS: - energy, fluence_mode, max_dose_rate = context - plan_name = f"{energy}MV{'' + fluence_mode.value if fluence_mode != FluenceMode.STANDARD else ''}" - generator = PlanGenerator.from_rt_plan_file( - rt_plan_file, plan_name=plan_name, plan_label=plan_name - ) - # picket fence - for gantry_angle in (0, 90, 180, 270): - generator.add_picketfence_beam( - strip_width_mm=3, - strip_positions_mm=(-60, -30, 0, 30, 60), # 5 pickets - mu=100, - beam_name=f"PF 3mm G{gantry_angle}", - gantry_angle=gantry_angle, - fluence_mode=fluence_mode, +for mlc, rt_plan_file in MLCS: + for context in CONTEXTS: + energy, fluence_mode, max_dose_rate = context + plan_name = f"{energy}MV{'' + fluence_mode.value if fluence_mode != FluenceMode.STANDARD else ''}" + generator = PlanGenerator.from_rt_plan_file( + rt_plan_file, plan_name=plan_name, plan_label=plan_name + ) + # picket fence + for gantry_angle in (0, 90, 180, 270): + generator.add_picketfence_beam( + strip_width_mm=3, + strip_positions_mm=(-60, -30, 0, 30, 60), # 5 pickets + mu=100, + beam_name=f"PF 3mm G{gantry_angle}", + gantry_angle=gantry_angle, + fluence_mode=fluence_mode, + energy=energy, + dose_rate=max_dose_rate, + ) + # winston lutz + generator.add_winston_lutz_beams( + axes_positions=( + # basic gantry + {"gantry": 0, "collimator": 0, "couch": 0}, + {"gantry": 90, "collimator": 0, "couch": 0}, + {"gantry": 180, "collimator": 0, "couch": 0}, + {"gantry": 270, "collimator": 0, "couch": 0}, + # collimator-rotation + {"gantry": 0, "collimator": 270, "couch": 0}, + {"gantry": 0, "collimator": 90, "couch": 0}, + {"gantry": 0, "collimator": 315, "couch": 0}, + {"gantry": 0, "collimator": 45, "couch": 0}, + # couch-rotation + {"gantry": 0, "collimator": 0, "couch": 45}, + {"gantry": 0, "collimator": 0, "couch": 90}, + {"gantry": 0, "collimator": 0, "couch": 315}, + {"gantry": 0, "collimator": 0, "couch": 270}, + # combo + {"gantry": 45, "collimator": 15, "couch": 15}, + {"gantry": 5, "collimator": 330, "couch": 60}, + {"gantry": 330, "collimator": 350, "couch": 350}, + ), + x1=-10, + x2=10, + y1=-10, + y2=10, + defined_by_mlcs=True, + mu=5, energy=energy, dose_rate=max_dose_rate, + fluence_mode=fluence_mode, ) - # winston lutz - generator.add_winston_lutz_beams( - axes_positions=( - # basic gantry - {"gantry": 0, "collimator": 0, "couch": 0}, - {"gantry": 90, "collimator": 0, "couch": 0}, - {"gantry": 180, "collimator": 0, "couch": 0}, - {"gantry": 270, "collimator": 0, "couch": 0}, - # collimator-rotation - {"gantry": 0, "collimator": 270, "couch": 0}, - {"gantry": 0, "collimator": 90, "couch": 0}, - {"gantry": 0, "collimator": 315, "couch": 0}, - {"gantry": 0, "collimator": 45, "couch": 0}, - # couch-rotation - {"gantry": 0, "collimator": 0, "couch": 45}, - {"gantry": 0, "collimator": 0, "couch": 90}, - {"gantry": 0, "collimator": 0, "couch": 315}, - {"gantry": 0, "collimator": 0, "couch": 270}, - # combo - {"gantry": 45, "collimator": 15, "couch": 15}, - {"gantry": 5, "collimator": 330, "couch": 60}, - {"gantry": 330, "collimator": 350, "couch": 350}, - ), - x1=-10, - x2=10, - y1=-10, - y2=10, - defined_by_mlcs=True, - mu=5, - energy=energy, - dose_rate=max_dose_rate, - ) - # dose rate - generator.add_dose_rate_beams( - dose_rates=(100, 200, 400, 600), - y1=-50, - y2=50, - default_dose_rate=600, - desired_mu=100, - ) + # dose rate + generator.add_dose_rate_beams( + dose_rates=(100, 200, 400, 600), + y1=-50, + y2=50, + default_dose_rate=max_dose_rate, + desired_mu=100, + fluence_mode=fluence_mode, + ) - # MLC speed - generator.add_mlc_speed_beams( - speeds=(5, 10, 15, 20), - roi_size_mm=20, - y1=-50, - y2=50, - mu=100, - default_dose_rate=600, - beam_name="MLC Speed", - ) + # MLC speed + generator.add_mlc_speed_beams( + speeds=(5, 10, 15, 20), + roi_size_mm=20, + y1=-50, + y2=50, + mu=100, + default_dose_rate=max_dose_rate, + beam_name="MLC Speed", + fluence_mode=fluence_mode, + ) - # gantry speed - generator.add_gantry_speed_beams( - speeds=(1, 2, 3, 4), - max_dose_rate=600, - start_gantry_angle=179, - roi_size_mm=20, - y1=-50, - y2=50, - mu=100, - ) + # gantry speed + generator.add_gantry_speed_beams( + speeds=(1, 2, 3, 4), + max_dose_rate=max_dose_rate, + start_gantry_angle=179, + roi_size_mm=20, + y1=-50, + y2=50, + mu=100, + fluence_mode=fluence_mode, + ) - # save file - generator.to_file( - filename=f"R{REVISION}_{plan_name}_{MLC}_prefab.dcm".replace(" ", "_") - ) + # save file + file_name = f"R{REVISION}_{plan_name}_{mlc}_prefab.dcm".replace(" ", "_") + generator.to_file(filename=file_name) + print(f"Generated {file_name} plan") From 5424c5e69c7ead4fdf285789d0866cb5d57db34e Mon Sep 17 00:00:00 2001 From: James Kerns Date: Tue, 27 Aug 2024 08:08:21 -0500 Subject: [PATCH 2/5] add doc image --- docs/source/images/acr_mri_air_bubble.png | Bin 0 -> 61213 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/source/images/acr_mri_air_bubble.png diff --git a/docs/source/images/acr_mri_air_bubble.png b/docs/source/images/acr_mri_air_bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7ff7b2b1d7806629a57a3c22625405faa6275c GIT binary patch literal 61213 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 z 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
    mvG7711~zTlG}Oa_rElu)!8Vgh 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 W$k>}m4kEt*0000 Date: Tue, 27 Aug 2024 15:42:18 -0500 Subject: [PATCH 3/5] add tests for prefab plans --- docs/source/changelog.rst | 2 + docs/source/plan_generator.rst | 46 +++++++++++++++- pylinac/plan_generator/dicom.py | 12 +++-- scripts/prefab_plan_generator.py | 4 +- tests_basic/contrib/test_orthogonality.py | 6 +-- tests_basic/contrib/test_quasar.py | 4 +- tests_basic/core/test_image.py | 6 +-- tests_basic/test_generated_plans.py | 66 +++++++++++++++++++++++ tests_basic/test_logs.py | 46 ++++++++-------- tests_basic/test_plan_generator.py | 4 +- tests_basic/test_starshot.py | 6 +-- tests_basic/test_winstonlutz.py | 6 +-- tests_basic/utils.py | 27 +++++++--- 13 files changed, 180 insertions(+), 55 deletions(-) create mode 100644 tests_basic/test_generated_plans.py diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 4e7cfa0c..c869946a 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -19,6 +19,8 @@ Plan Generator * It is now possible to export generated images from the plan generator to DICOM files. This can useful for end-to-end testing of workflows before delivering the plan itself on the machine. See the new section :ref:`plan_generator_dicom_fluence` for details. +* Manual names can now be passed for Winston-Lutz beams. +* The R2 prefabricated plan files have been fixed to have the same energy and dose rate for all beams of a given plan. Image Generator ^^^^^^^^^^^^^^^ diff --git a/docs/source/plan_generator.rst b/docs/source/plan_generator.rst index 38cf1445..c469dbd2 100644 --- a/docs/source/plan_generator.rst +++ b/docs/source/plan_generator.rst @@ -197,7 +197,33 @@ If you're too "busy" to generate your own plans, you can use the following gener be if you used the plan generator itself. On a Varian machine you will need to perform a machine override authorization every time. -These plans contain a picket fence at each cardinal gantry angle, a Winston-Lutz batch, dose rate constancy, MLC speed tests, and gantry speed tests. +These plans contain the following fields: + +* "PF 3mm G0": Picket fence, Gantry 0, 3mm strips, 100 MU +* "PF 3mm G90": Picket fence, Gantry 90, 3mm strips, 100 MU +* "PF 3mm G180": Picket fence, Gantry 180, 3mm strips, 100 MU +* "PF 3mm G270": Picket fence, Gantry 270, 3mm strips, 100 MU +* "G0C0P0": Winston-Lutz, Gantry 0, Collimator 0, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G90C0P0": Winston-Lutz, Gantry 90, Collimator 0, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G180C0P0": Winston-Lutz, Gantry 180, Collimator 0, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G270C0P0": Winston-Lutz, Gantry 270, Collimator 0, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G0C270P0": Winston-Lutz, Gantry 0, Collimator 270, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G0C90P0": Winston-Lutz, Gantry 0, Collimator 90, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G0C315P0": Winston-Lutz, Gantry 0, Collimator 315, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G0C45P0": Winston-Lutz, Gantry 0, Collimator 45, Couch 0, 2x2cm, 5 MU, MLC-defined +* "G0C0P45": Winston-Lutz, Gantry 0, Collimator 0, Couch 45, 2x2cm, 5 MU, MLC-defined +* "G0C0P90": Winston-Lutz, Gantry 0, Collimator 0, Couch 90, 2x2cm, 5 MU, MLC-defined +* "G0C0P315": Winston-Lutz, Gantry 0, Collimator 0, Couch 315, 2x2cm, 5 MU, MLC-defined +* "G0C0P270": Winston-Lutz, Gantry 0, Collimator 0, Couch 270, 2x2cm, 5 MU, MLC-defined +* "G45C15P15": Winston-Lutz, Gantry 45, Collimator 15, Couch 15, 2x2cm, 5 MU, MLC-defined +* "G5C330P60": Winston-Lutz, Gantry 5, Collimator 330, Couch 60, 2x2cm, 5 MU, MLC-defined +* "G330C350P350": Winston-Lutz, Gantry 330, Collimator 350, Couch 350, 2x2cm, 5 MU, MLC-defined +* "DR100-600": Dose Rate Constancy, 4 ROIs, 100, 200, 400, 600 MU/min +* "DR Ref": Dose Rate Constancy, Reference Field +* "MLC Speed": MLC Speed, 4 ROIs, 5, 10, 15, 20 mm/s +* "MLC Speed Ref": MLC Speed, Reference Field +* "GS": Gantry Speed, 4 ROIs, 1, 2, 3, 4 deg/s +* "GS Ref": Gantry Speed, Reference Field .. tab-set:: :sync-group: mlc-type @@ -397,6 +423,24 @@ more efficiently. Adding a Winston-Lutz field can be done like so: This will create 4 open fields of a 1x1cm, MLC-defined WL fields. See the :meth:`~pylinac.plan_generator.dicom.PlanGenerator.add_winston_lutz_beams` method for more information. +.. versionadded:: 3.27 + +You can pass your own beam name for a given axes position by adding a ``name`` key to the dictionary. If no name +key is passed the beam name will be of the form "GCP". + +.. code-block:: python + + pg.add_winston_lutz_beams( + axes_positions=( + {"gantry": 0, "collimator": 0, "couch": 0, "name": "Ref"}, + {"gantry": 90, "collimator": 15, "couch": 0}, # auto-name: G90C15P0 + {"gantry": 180, "collimator": 0, "couch": 90}, # auto-name: G180C0P90 + {"gantry": 270, "collimator": 0, "couch": 0}, # auto-name: G270C0P0 + ), + ..., + ) + + Picket Fence ^^^^^^^^^^^^ diff --git a/pylinac/plan_generator/dicom.py b/pylinac/plan_generator/dicom.py index f17f466d..3292a1be 100644 --- a/pylinac/plan_generator/dicom.py +++ b/pylinac/plan_generator/dicom.py @@ -1324,7 +1324,7 @@ def add_mlc_speed_beams( ) ref_beam = Beam( plan_dataset=self.ds, - beam_name="MLC Sp Ref", + beam_name=f"{beam_name} Ref", beam_type=BeamType.DYNAMIC, energy=energy, dose_rate=default_dose_rate, @@ -1410,7 +1410,7 @@ def add_winston_lutz_beams( dose_rate : int The dose rate of the beam. axes_positions : Iterable[dict] - The positions of the axes. Each dict should have keys 'gantry', 'collimator', and 'couch'. + The positions of the axes. Each dict should have keys 'gantry', 'collimator', 'couch', and optionally 'name'. couch_vrt : float The couch vertical position. couch_lng : float @@ -1440,9 +1440,13 @@ def add_winston_lutz_beams( meterset_at_target=1.0, x_outfield_position=x1 - mlc_padding - jaw_padding - 20, ) + beam_name = ( + axes.get("name") + or f"G{axes['gantry']:g}C{axes['collimator']:g}P{axes['couch']:g}" + ) beam = Beam( plan_dataset=self.ds, - beam_name=f"G{axes['gantry']:g}C{axes['collimator']:g}P{axes['couch']:g}", + beam_name=beam_name, beam_type=BeamType.DYNAMIC, energy=energy, dose_rate=dose_rate, @@ -1620,7 +1624,7 @@ def add_gantry_speed_beams( self.add_beam(beam.as_dicom(), mu=mu) ref_beam = Beam( plan_dataset=self.ds, - beam_name="G Sp Ref", + beam_name=f"{beam_name} Ref", beam_type=BeamType.DYNAMIC, energy=energy, dose_rate=max_dose_rate, diff --git a/scripts/prefab_plan_generator.py b/scripts/prefab_plan_generator.py index f5a200af..b97c7bbf 100644 --- a/scripts/prefab_plan_generator.py +++ b/scripts/prefab_plan_generator.py @@ -85,6 +85,7 @@ default_dose_rate=max_dose_rate, desired_mu=100, fluence_mode=fluence_mode, + energy=energy, ) # MLC speed @@ -95,8 +96,8 @@ y2=50, mu=100, default_dose_rate=max_dose_rate, - beam_name="MLC Speed", fluence_mode=fluence_mode, + energy=energy, ) # gantry speed @@ -109,6 +110,7 @@ y2=50, mu=100, fluence_mode=fluence_mode, + energy=energy, ) # save file diff --git a/tests_basic/contrib/test_orthogonality.py b/tests_basic/contrib/test_orthogonality.py index 3f9d8a96..5b3c8c1d 100644 --- a/tests_basic/contrib/test_orthogonality.py +++ b/tests_basic/contrib/test_orthogonality.py @@ -2,15 +2,13 @@ from unittest import TestCase from pylinac.contrib.orthogonality import JawOrthogonality -from tests_basic.utils import get_folder_from_cloud_test_repo +from tests_basic.utils import get_folder_from_cloud_repo class TestOrthogonality(TestCase): @classmethod def setUpClass(cls) -> None: - cls.dir = Path( - get_folder_from_cloud_test_repo(["planar_imaging", "Orthogonality"]) - ) + cls.dir = Path(get_folder_from_cloud_repo(["planar_imaging", "Orthogonality"])) def test_analyze(self): for file in self.dir.iterdir(): diff --git a/tests_basic/contrib/test_quasar.py b/tests_basic/contrib/test_quasar.py index 4f624052..8baa1b2b 100644 --- a/tests_basic/contrib/test_quasar.py +++ b/tests_basic/contrib/test_quasar.py @@ -2,13 +2,13 @@ from unittest import TestCase from pylinac.contrib.quasar import QuasarLightRadScaling -from tests_basic.utils import get_folder_from_cloud_test_repo +from tests_basic.utils import get_folder_from_cloud_repo class TestQuasar(TestCase): @classmethod def setUpClass(cls) -> None: - cls.dir = Path(get_folder_from_cloud_test_repo(["planar_imaging", "Quasar"])) + cls.dir = Path(get_folder_from_cloud_repo(["planar_imaging", "Quasar"])) def test_analyze(self): for file in self.dir.iterdir(): diff --git a/tests_basic/core/test_image.py b/tests_basic/core/test_image.py index aa9dc4a6..83276bc7 100644 --- a/tests_basic/core/test_image.py +++ b/tests_basic/core/test_image.py @@ -36,7 +36,7 @@ from pylinac.core.io import TemporaryZipDirectory from tests_basic.utils import ( get_file_from_cloud_test_repo, - get_folder_from_cloud_test_repo, + get_folder_from_cloud_repo, save_file, ) @@ -763,7 +763,7 @@ class TestTiff(TestCase): def test_all_tiffs_have_tags_and_are_2d(self): """Test all tiffs will load. Just raw ingestion""" - all_starshot_files = get_folder_from_cloud_test_repo(["Starshot"]) + all_starshot_files = get_folder_from_cloud_repo(["Starshot"]) for img in Path(all_starshot_files).iterdir(): if img.suffix in (".tif", ".tiff"): fimg = FileImage(img) @@ -896,7 +896,7 @@ def test_conversion_goes_to_uint16(self): def test_mass_conversion(self): """Mass conversion; shouldn't fail. All images have dpi tag""" - all_starshot_files = get_folder_from_cloud_test_repo(["Starshot"]) + all_starshot_files = get_folder_from_cloud_repo(["Starshot"]) for img in Path(all_starshot_files).iterdir(): if img.suffix in (".tif", ".tiff"): tiff_to_dicom(img, sid=1000, gantry=10, coll=11, couch=12) diff --git a/tests_basic/test_generated_plans.py b/tests_basic/test_generated_plans.py new file mode 100644 index 00000000..fe40b23e --- /dev/null +++ b/tests_basic/test_generated_plans.py @@ -0,0 +1,66 @@ +""" +Tests the pre-fabricated plans generated by the prefab_plan_generator.py script +and listed on the Pylinac docs site for use by the public. +""" +import os +import re +from pathlib import Path +from unittest import TestCase + +import pydicom + +from tests_basic.utils import get_folder_from_cloud_repo + + +class TestGeneratedPlans(TestCase): + @classmethod + def setUpClass(cls) -> None: + # if we're in CI/CD, download from the GCP bucket + if os.environ.get("CI"): + cls.cloud_folder = get_folder_from_cloud_repo( + folder=["rtplans"], cloud_repo="pylinac_demo_files" + ) + # if we're local, use the locally generated plans + else: + cls.cloud_folder = Path(__file__).parent.parent / "scripts" + + def test_num_rev2_plans(self): + self.assertEqual(len(list(Path(self.cloud_folder).glob("R2*"))), 12) + + def test_all_energies_of_plan_are_the_same(self): + for plan in Path(self.cloud_folder).glob("R2*"): + energy_str = plan.name.split("_")[1] + energy = int(re.match(r"(\d+)(MV|MVFFF)?", energy_str).group(1)) + ds = pydicom.dcmread(plan) + for beam in ds.BeamSequence: + self.assertEqual( + int(beam.ControlPointSequence[0].NominalBeamEnergy), + energy, + msg=f"Plan {plan} has a beam {beam.BeamName} with a different energy than the plan", + ) + + def test_fluence_mode_of_plan_are_the_same(self): + FLUENCE_MAP = {"NON_STANDARD": True, "STANDARD": False} + for plan in Path(self.cloud_folder).glob("R2*"): + is_fff_beam = "FFF" in plan.name + ds = pydicom.dcmread(plan) + for beam in ds.BeamSequence: + fluence = beam.PrimaryFluenceModeSequence[0].FluenceMode + self.assertEqual( + FLUENCE_MAP[fluence], + is_fff_beam, + msg=f"Plan {plan} has a beam {beam.BeamName} with a different MLC than the plan", + ) + + def test_nominal_dose_rate_is_the_same_per_plan(self): + for plan in Path(self.cloud_folder).glob("R2*"): + ds = pydicom.dcmread(plan) + first_dose_rate = int( + ds.BeamSequence[0].ControlPointSequence[0].DoseRateSet + ) + for beam in ds.BeamSequence[1:]: + self.assertEqual( + int(beam.ControlPointSequence[0].DoseRateSet), + first_dose_rate, + msg=f"Plan {plan} has a beam {beam.BeamName} with a different dose rate than the plan", + ) diff --git a/tests_basic/test_logs.py b/tests_basic/test_logs.py index 72855b33..48568227 100644 --- a/tests_basic/test_logs.py +++ b/tests_basic/test_logs.py @@ -25,24 +25,24 @@ FromDemoImageTesterMixin, FromURLTesterMixin, get_file_from_cloud_test_repo, - get_folder_from_cloud_test_repo, + get_folder_from_cloud_repo, save_file, ) TEST_DIR = "mlc_logs" -ANONYMOUS_SOURCE_FOLDER = get_folder_from_cloud_test_repo(["mlc_logs", "_anonbase"]) -ANONYMOUS_DEST_FOLDER = get_folder_from_cloud_test_repo(["mlc_logs", "anonymous"]) -get_folder_from_cloud_test_repo(["mlc_logs", "dlogs", "Bay Area iX"]) -get_folder_from_cloud_test_repo(["mlc_logs", "dlogs", "Katy iX"]) -get_folder_from_cloud_test_repo(["mlc_logs", "tlogs", "Chicago"]) +ANONYMOUS_SOURCE_FOLDER = get_folder_from_cloud_repo(["mlc_logs", "_anonbase"]) +ANONYMOUS_DEST_FOLDER = get_folder_from_cloud_repo(["mlc_logs", "anonymous"]) +get_folder_from_cloud_repo(["mlc_logs", "dlogs", "Bay Area iX"]) +get_folder_from_cloud_repo(["mlc_logs", "dlogs", "Katy iX"]) +get_folder_from_cloud_repo(["mlc_logs", "tlogs", "Chicago"]) class TestAnonymizeFunction(TestCase): """Test the anonymization method.""" def setUp(self): - anon_source = get_folder_from_cloud_test_repo(["mlc_logs", "_anonbase"]) - anon_dest = get_folder_from_cloud_test_repo(["mlc_logs", "anonymous"]) + anon_source = get_folder_from_cloud_repo(["mlc_logs", "_anonbase"]) + anon_dest = get_folder_from_cloud_repo(["mlc_logs", "anonymous"]) # move over files from other directory, since the filenames get overridden for file in os.listdir(anon_source): basefile = osp.join(anon_source, file) @@ -198,14 +198,14 @@ def test_dynamic_imrt_log(self): class TestDynalogTreatmentTypes(TestCase): def test_vmat_log(self): - get_folder_from_cloud_test_repo(["mlc_logs", "dlogs"]) + get_folder_from_cloud_repo(["mlc_logs", "dlogs"]) dlog = Dynalog( get_file_from_cloud_test_repo(["mlc_logs", "dlogs", "A_vmat.dlg"]) ) self.assertTrue(dlog.treatment_type, TreatmentType.VMAT) def test_static_imrt_log(self): - get_folder_from_cloud_test_repo(["mlc_logs", "dlogs"]) + get_folder_from_cloud_repo(["mlc_logs", "dlogs"]) dlog = Dynalog( get_file_from_cloud_test_repo(["mlc_logs", "dlogs", "A_static_imrt.dlg"]) ) @@ -239,7 +239,7 @@ def test_url(self): self.assertIsInstance(load_log(url), TrajectoryLog) def test_dir(self): - dlog_dir = get_folder_from_cloud_test_repo(["mlc_logs", "dlogs"]) + dlog_dir = get_folder_from_cloud_repo(["mlc_logs", "dlogs"]) self.assertIsInstance(load_log(dlog_dir), MachineLogs) def test_zip(self): @@ -325,7 +325,7 @@ def test_save_to_csv(self): def test_save_utf_8_to_csv(self): """Saving a tlog to csv w/ a utf-8 character in the filename should be fine""" - get_folder_from_cloud_test_repo(["mlc_logs", "mixed_types"]) + get_folder_from_cloud_repo(["mlc_logs", "mixed_types"]) log_file = get_file_from_cloud_test_repo( [ "mlc_logs", @@ -346,7 +346,7 @@ def test_save_utf_8_to_csv(self): def test_txt_file_also_loads_if_around(self): # has a .txt file - _ = get_folder_from_cloud_test_repo(["mlc_logs", "mixed_types"]) + _ = get_folder_from_cloud_repo(["mlc_logs", "mixed_types"]) log_with_txt = get_file_from_cloud_test_repo( [ "mlc_logs", @@ -361,7 +361,7 @@ def test_txt_file_also_loads_if_around(self): self.assertEqual(log.txt["Patient ID"], "Anonymous") # DOESN'T have a txt file - _ = get_folder_from_cloud_test_repo(["mlc_logs", "tlogs"]) + _ = get_folder_from_cloud_repo(["mlc_logs", "tlogs"]) log_no_txt = get_file_from_cloud_test_repo( ["mlc_logs", "tlogs", "Anonymous_4DC_Treatment_JS0_TX_20140712095629.bin"] ) @@ -371,7 +371,7 @@ def test_txt_file_also_loads_if_around(self): def test_txt_file_loads_in_utf8(self): # has a .txt file - get_folder_from_cloud_test_repo(["mlc_logs", "mixed_types"]) + get_folder_from_cloud_repo(["mlc_logs", "mixed_types"]) log_with_txt = get_file_from_cloud_test_repo( [ "mlc_logs", @@ -464,7 +464,7 @@ def test_can_load_utf8_file(self): def test_loading_can_find_paired_file(self): # get all the test files - get_folder_from_cloud_test_repo(["mlc_logs", "dlogs"]) + get_folder_from_cloud_repo(["mlc_logs", "dlogs"]) # shouldn't raise since it can find B-file a_file = get_file_from_cloud_test_repo(["mlc_logs", "dlogs", "Adlog1.dlg"]) @@ -764,7 +764,7 @@ def test_calc_gamma_early_fails(self): class TestMachineLogs(TestCase): @property def logs_dir(self): - return get_folder_from_cloud_test_repo(["mlc_logs", "mixed_types"]) + return get_folder_from_cloud_repo(["mlc_logs", "mixed_types"]) def test_loading(self): # test root level directory @@ -790,7 +790,7 @@ def test_num_logs(self): self.assertEqual(logs.num_dlogs, 1) def test_empty_dir(self): - empty_dir = get_folder_from_cloud_test_repo(["mlc_logs", "empty_dir"]) + empty_dir = get_folder_from_cloud_repo(["mlc_logs", "empty_dir"]) logs = MachineLogs(empty_dir) self.assertEqual(logs.num_logs, 0) with self.assertRaises(ValueError): @@ -798,20 +798,20 @@ def test_empty_dir(self): def test_mixed_types(self): """test mixed directory (tlogs & dlogs)""" - log_dir = get_folder_from_cloud_test_repo(["mlc_logs", "mixed_types"]) + log_dir = get_folder_from_cloud_repo(["mlc_logs", "mixed_types"]) logs = MachineLogs(log_dir) self.assertEqual(logs.num_logs, 3) def test_dlog_matches_missing(self): """Test that Dlogs without a match are skipped.""" - log_dir = get_folder_from_cloud_test_repo(["mlc_logs", "some_matches_missing"]) + log_dir = get_folder_from_cloud_repo(["mlc_logs", "some_matches_missing"]) logs = MachineLogs(log_dir) self.assertEqual(logs.num_logs, 1) def test_append(self): # append a directory - logs = MachineLogs(get_folder_from_cloud_test_repo(["mlc_logs", "altdir"])) - logs.append(get_folder_from_cloud_test_repo(["mlc_logs", "altdir"])) + logs = MachineLogs(get_folder_from_cloud_repo(["mlc_logs", "altdir"])) + logs.append(get_folder_from_cloud_repo(["mlc_logs", "altdir"])) self.assertEqual(logs.num_logs, 8) # append a file string single_file = get_file_from_cloud_test_repo( @@ -850,7 +850,7 @@ def test_writing_to_csv(self): os.remove(file) def test_writing_csv_with_no_logs(self): - empty_dir = get_folder_from_cloud_test_repo(["mlc_logs", "empty_dir"]) + empty_dir = get_folder_from_cloud_repo(["mlc_logs", "empty_dir"]) logs = MachineLogs(empty_dir) logs.to_csv() # shouldn't raise but will print a statement diff --git a/tests_basic/test_plan_generator.py b/tests_basic/test_plan_generator.py index fda882a3..abd68579 100644 --- a/tests_basic/test_plan_generator.py +++ b/tests_basic/test_plan_generator.py @@ -508,7 +508,7 @@ def test_mlc_speed_beams(self): ) dcm = self.pg.as_dicom() self.assertEqual(len(dcm.BeamSequence), 2) - self.assertEqual(dcm.BeamSequence[0].BeamName, "MLC Sp Ref") + self.assertEqual(dcm.BeamSequence[0].BeamName, "MLC Speed Ref") self.assertEqual(dcm.BeamSequence[1].BeamName, "MLC Speed") self.assertEqual(dcm.BeamSequence[0].BeamNumber, 0) self.assertEqual(dcm.FractionGroupSequence[0].NumberOfBeams, 2) @@ -552,7 +552,7 @@ def test_gantry_speed_beams(self): dcm = self.pg.as_dicom() self.assertEqual(len(dcm.BeamSequence), 2) self.assertEqual(dcm.BeamSequence[0].BeamName, "GS") - self.assertEqual(dcm.BeamSequence[1].BeamName, "G Sp Ref") + self.assertEqual(dcm.BeamSequence[1].BeamName, "GS Ref") self.assertEqual(dcm.BeamSequence[0].BeamNumber, 0) self.assertEqual(dcm.FractionGroupSequence[0].NumberOfBeams, 2) self.assertEqual( diff --git a/tests_basic/test_starshot.py b/tests_basic/test_starshot.py index 6818486c..e79408a0 100644 --- a/tests_basic/test_starshot.py +++ b/tests_basic/test_starshot.py @@ -16,7 +16,7 @@ CloudFileMixin, FromURLTesterMixin, get_file_from_cloud_test_repo, - get_folder_from_cloud_test_repo, + get_folder_from_cloud_repo, save_file, ) @@ -218,7 +218,7 @@ class Multiples(StarMixin, TestCase): @classmethod def get_filename(cls): """Return the canonical path to the file.""" - return get_folder_from_cloud_test_repo([*cls.dir_path]) + return get_folder_from_cloud_repo([*cls.dir_path]) def test_loading_from_zip(self): img_zip = get_file_from_cloud_test_repo(["Starshot", "multiples.zip"]) @@ -523,7 +523,7 @@ class ChicagoSet(StarMixin, TestCase): @classmethod def get_filename(cls): """Return the canonical path to the file.""" - return get_folder_from_cloud_test_repo([*cls.dir_path, cls.file_name]) + return get_folder_from_cloud_repo([*cls.dir_path, cls.file_name]) class MarkerDots(StarMixin, TestCase): diff --git a/tests_basic/test_winstonlutz.py b/tests_basic/test_winstonlutz.py index 5d095aea..d4456319 100644 --- a/tests_basic/test_winstonlutz.py +++ b/tests_basic/test_winstonlutz.py @@ -41,7 +41,7 @@ FromDemoImageTesterMixin, FromURLTesterMixin, get_file_from_cloud_test_repo, - get_folder_from_cloud_test_repo, + get_folder_from_cloud_repo, save_file, ) @@ -643,9 +643,7 @@ def test_using_filenames_overrides_axis_mapping(self): def test_loading_1_image_fails(self): with self.assertRaises(ValueError): - folder = get_folder_from_cloud_test_repo( - ["Winston-Lutz", "lutz", "1_image"] - ) + folder = get_folder_from_cloud_repo(["Winston-Lutz", "lutz", "1_image"]) WinstonLutz(folder) def test_invalid_dir(self): diff --git a/tests_basic/utils.py b/tests_basic/utils.py index 430eb0c5..75d03ff7 100644 --- a/tests_basic/utils.py +++ b/tests_basic/utils.py @@ -52,20 +52,31 @@ def gcp_bucket_object_list(bucket_name: str) -> list: return list(storage_client.list_blobs(bucket_name)) -def get_folder_from_cloud_test_repo(folder: List[str], skip_exists: bool = True) -> str: - """Get a folder from GCP. +def get_folder_from_cloud_repo( + folder: List[str], + skip_exists: bool = True, + local_dir: str | Path = LOCAL_TEST_DIR, + cloud_repo: str = GCP_BUCKET_NAME, +) -> str: + """Get a folder from a GCP bucket. Parameters ---------- + folder: list[str] + The folder to get from the GCP bucket. skip_exists If True, only checks that the destination folder exists and isn't empty. This is helpful for avoiding network calls since querying GCP can cost significant time. + local_dir + The local directory to download the files to. + cloud_repo + The GCP bucket to download from. """ - dest_folder = Path(LOCAL_TEST_DIR, *folder) + dest_folder = Path(local_dir, *folder) if skip_exists and dest_folder.exists() and len(list(dest_folder.iterdir())) > 0: return str(dest_folder) # get the folder data - all_blobs = gcp_bucket_object_list(GCP_BUCKET_NAME) + all_blobs = gcp_bucket_object_list(cloud_repo) blobs = ( Enumerable(all_blobs) .where(lambda b: len(b.name.split("/")) > len(folder)) @@ -77,14 +88,14 @@ def get_folder_from_cloud_test_repo(folder: List[str], skip_exists: bool = True) ) # make root folder if need be - dest_folder = osp.join(osp.dirname(__file__), LOCAL_TEST_DIR, *folder) + dest_folder = osp.join(osp.dirname(__file__), local_dir, *folder) if not osp.isdir(dest_folder): os.makedirs(dest_folder) # make subfolders if need be subdirs = [b.name.split("/")[1:-2] for b in blobs if len(b.name.split("/")) > 2] dest_sub_folders = [ - osp.join(osp.dirname(__file__), LOCAL_TEST_DIR, *folder, *f) for f in subdirs + osp.join(osp.dirname(__file__), local_dir, *folder, *f) for f in subdirs ] for sdir in dest_sub_folders: if not osp.isdir(sdir): @@ -96,7 +107,7 @@ def get_folder_from_cloud_test_repo(folder: List[str], skip_exists: bool = True) if not os.path.exists(path): blob.download_to_filename(path) - return osp.join(osp.dirname(__file__), LOCAL_TEST_DIR, *folder) + return osp.join(osp.dirname(__file__), local_dir, *folder) def get_file_from_cloud_test_repo(path: List[str], force: bool = False) -> str: @@ -230,7 +241,7 @@ class InitTesterMixin(MixinTesterBase): @property def full_init_file(self) -> str: if self.is_folder: - return get_folder_from_cloud_test_repo(self.init_file) + return get_folder_from_cloud_repo(self.init_file) else: return get_file_from_cloud_test_repo(self.init_file) From 6bb8ed5603e35510fc09617a117f9bb528d9313f Mon Sep 17 00:00:00 2001 From: James Kerns Date: Tue, 27 Aug 2024 15:50:44 -0500 Subject: [PATCH 4/5] add CI check for script changes --- bitbucket-pipelines.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index dbf6f4a4..98e3652e 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -234,13 +234,14 @@ definitions: name: Plan generator tests script: - source venv/bin/activate - - pytest tests_basic/test_plan_generator.py --cov-report term --junitxml=./test-reports/pytest_results.xml + - pytest tests_basic/test_plan_generator.py tests_basic/test_generated_plans.py --cov-report term --junitxml=./test-reports/pytest_results.xml condition: changesets: includePaths: - "pylinac/core/**" - "pylinac/plan_generator/**" - "tests_basic/test_plan_generator.py" + - "scripts/prefab_plan_generator.py" - step: &core-module-tests name: Run core module tests script: From 1da8398fb2f1e30ee9c73f4372a7ceb01f634489 Mon Sep 17 00:00:00 2001 From: James Kerns Date: Tue, 27 Aug 2024 15:54:12 -0500 Subject: [PATCH 5/5] revert image add from acr bugfix branch --- docs/source/images/acr_mri_air_bubble.png | Bin 61213 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/source/images/acr_mri_air_bubble.png diff --git a/docs/source/images/acr_mri_air_bubble.png b/docs/source/images/acr_mri_air_bubble.png deleted file mode 100644 index ad7ff7b2b1d7806629a57a3c22625405faa6275c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61213 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 z 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
      mvG7711~zTlG}Oa_rElu)!8Vgh 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 W$k>}m4kEt*0000