예제 #1
0
def test_setup_planning_item(dicom_folder, ini_file_path):
    # given case files
    rs_dvh = os.path.join(dicom_folder, 'RS.dcm')
    file_path = os.path.join(dicom_folder, 'Scoring_criteria_2018.xlsx')
    case_name = 'BiLateralLungSBRTCase'

    # when instantiate
    p_kernel = PyPlanScoringKernel()
    p_kernel.setup_planing_item()
    assert p_kernel.planning_item is None

    p_kernel.parse_dicom_folder(dicom_folder)
    p_kernel.setup_planing_item()

    assert p_kernel.planning_item is None

    p_kernel.setup_case(rs_dvh, file_path, case_name)
    p_kernel.setup_planing_item()

    assert p_kernel.planning_item is None

    p_kernel.setup_dvh_calculation(ini_file_path)
    p_kernel.setup_planing_item()

    assert p_kernel.planning_item is not None
예제 #2
0
def test_parse_dicom_folder(dicom_folder):
    # given
    p_kernel = PyPlanScoringKernel()

    # when having a folder containing RS/RD/RP dicom
    # then
    p_kernel.parse_dicom_folder(dicom_folder)
    assert p_kernel.dcm_files
예제 #3
0
def test_parse_empty_dicom_folder(tmpdir):
    # given
    p_kernel = PyPlanScoringKernel()

    # when having a folder containing RS/RD/RP dicom
    # then
    with pytest.raises(FileNotFoundError):
        p_kernel.parse_dicom_folder(tmpdir)
예제 #4
0
def test_setup_case(dicom_folder):
    # given case files
    rs_dvh = os.path.join(dicom_folder, 'RS.dcm')
    file_path = os.path.join(dicom_folder, 'Scoring_criteria_2018.xlsx')
    case_name = 'BiLateralLungSBRTCase'

    # when instantiate
    p_kernel = PyPlanScoringKernel()
    p_kernel.setup_case(rs_dvh, file_path, case_name)
    assert p_kernel.case is not None
예제 #5
0
def test_setup_dvh_calculation(dicom_folder, ini_file_path):
    # given case files
    rs_dvh = os.path.join(dicom_folder, 'RS.dcm')
    file_path = os.path.join(dicom_folder, 'Scoring_criteria_2018.xlsx')
    case_name = 'BiLateralLungSBRTCase'

    # when instantiate
    p_kernel = PyPlanScoringKernel()

    # if not setup case before setup dvh calculator
    p_kernel.setup_dvh_calculation(ini_file_path)

    # then
    assert p_kernel.dvh_calculator is None

    # when setup case
    p_kernel = PyPlanScoringKernel()
    p_kernel.setup_case(rs_dvh, file_path, case_name)

    p_kernel.setup_dvh_calculation(ini_file_path)

    # then
    assert p_kernel.dvh_calculator is not None
예제 #6
0
def test_calc_plan_complexity(test_case, dicom_folder, ini_file_path):
    # given case files
    rs_dvh = os.path.join(dicom_folder, 'RS.dcm')
    file_path = os.path.join(dicom_folder, 'Scoring_criteria_2018.xlsx')
    case_name = 'BiLateralLungSBRTCase'

    # when instantiate
    p_kernel = PyPlanScoringKernel()
    p_kernel.parse_dicom_folder(dicom_folder)
    p_kernel.setup_case(rs_dvh, file_path, case_name)
    p_kernel.setup_dvh_calculation(ini_file_path)
    p_kernel.setup_planing_item()

    # calculate plan complexity
    p_kernel.calc_plan_complexity()
    test_case.assertAlmostEqual(p_kernel.plan_complexity,
                                0.166503597706,
                                places=3)
예제 #7
0
    def __init__(self, parent=None):
        super(MainDialog, self).__init__(parent=parent)
        self.setupUi(self)
        self.folder_root = None
        self.result = None
        # calculation kernel
        self.calc_kernel = PyPlanScoringKernel()
        # Redirect STD out to
        stdout = OutputWrapper(self, True)
        stdout.outputWritten.connect(self.handle_output)
        stderr = OutputWrapper(self, False)
        stderr.outputWritten.connect(self.handle_output)

        self.worker = Worker()
        # connect Signal and Slots
        self.set_conections()
        self.save_reports_button.setEnabled(False)
        self.textBrowser.setOpenExternalLinks(True)
예제 #8
0
def test_calc_plan_score(dicom_folder, ini_file_path):
    # given case files
    rs_dvh = os.path.join(dicom_folder, 'RS.dcm')
    file_path = os.path.join(dicom_folder, 'Scoring_criteria_2018.xlsx')
    case_name = 'BiLateralLungSBRTCase'

    # when instantiate
    p_kernel = PyPlanScoringKernel()
    p_kernel.parse_dicom_folder(dicom_folder)
    p_kernel.setup_case(rs_dvh, file_path, case_name)
    p_kernel.setup_dvh_calculation(ini_file_path)
    p_kernel.setup_planing_item()

    p_kernel.calculate_dvh()
    p_kernel.calc_plan_score()

    assert not p_kernel._report_data_frame.empty
    assert round(p_kernel._total_score) == round(90.01)

    # save report data
    p_kernel.save_report_data()