def start(self): """ Goes through the steps of the ISO2ROI conversion. :return: True if successful, False if not. """ # Stop loading if self.interrupt_flag.is_set(): # TODO: convert print to logging print("Stopped ISO2ROI") self.patient_dict_container.clear() self.summary = "INTERRUPT" return False if not self.ready: self.summary = "SKIP" return False # Update progress self.progress_callback.emit(("Setting up...", 30)) # Initialise InitialModel.create_initial_model_batch() # Stop loading if self.interrupt_flag.is_set(): # TODO: convert print to logging print("Stopped ISO2ROI") self.patient_dict_container.clear() self.summary = "INTERRUPT" return False # Check if the dataset is complete self.progress_callback.emit(("Checking dataset...", 40)) dataset_complete = ImageLoading.is_dataset_dicom_rt( self.patient_dict_container.dataset) # Create ISO2ROI object iso2roi = ISO2ROI() self.progress_callback.emit(("Performing ISO2ROI... ", 50)) # Stop loading if self.interrupt_flag.is_set(): # TODO: convert print to logging print("Stopped ISO2ROI") self.patient_dict_container.clear() self.summary = "INTERRUPT" return False if not dataset_complete: # Check if RT struct file is missing. If yes, create one and # add its data to the patient dict container. Otherwise # return if not self.patient_dict_container.get("file_rtss"): self.progress_callback.emit(("Generating RT Struct", 55)) self.create_new_rtstruct(self.progress_callback) # Get isodose levels to turn into ROIs isodose_levels = \ iso2roi.get_iso_levels(data_path('batch_isodoseRoi.csv')) # Stop loading if self.interrupt_flag.is_set(): # TODO: convert print to logging print("Stopped ISO2ROI") self.patient_dict_container.clear() self.summary = "INTERRUPT" return False # Calculate boundaries self.progress_callback.emit(("Calculating boundaries...", 60)) boundaries = iso2roi.calculate_isodose_boundaries(isodose_levels) # Return if boundaries could not be calculated if not boundaries: print("Boundaries could not be calculated.") self.summary = "ISO_NO_RX_DOSE" return False # Generate ROIs self.progress_callback.emit(("Generating ROIs...", 80)) iso2roi.generate_roi(boundaries, self.progress_callback) # Save new RTSS self.progress_callback.emit(("Saving RT Struct...", 90)) self.save_rtss() return True
def start(self): """ Goes through the steps of the SUV2ROI conversion. :return: True if successful, False if not. """ # Stop loading if self.interrupt_flag.is_set(): self.patient_dict_container.clear() self.summary = "INTERRUPT" return False if not self.ready: self.summary = "SKIP" return False # Update progress self.progress_callback.emit(("Setting up...", 30)) # Initialise InitialModel.create_initial_model_batch() # Stop loading if self.interrupt_flag.is_set(): self.patient_dict_container.clear() self.summary = "INTERRUPT" return False # Check if the dataset is complete self.progress_callback.emit(("Checking dataset...", 40)) dataset_complete = ImageLoading.is_dataset_dicom_rt( self.patient_dict_container.dataset) # Create SUV2ROI object suv2roi = SUV2ROI() suv2roi.set_patient_weight(self.patient_weight) self.progress_callback.emit(("Performing SUV2ROI... ", 50)) # Stop loading if self.interrupt_flag.is_set(): self.patient_dict_container.clear() self.summary = "INTERRUPT" return False if not dataset_complete: # Check if RT struct file is missing. If yes, create one and # add its data to the patient dict container. Otherwise # return if not self.patient_dict_container.get("file_rtss"): self.progress_callback.emit(("Generating RT Struct", 55)) self.create_new_rtstruct(self.progress_callback) # Calculate boundaries self.progress_callback.emit(("Calculating Boundaries", 60)) contour_data = suv2roi.calculate_contours() if not contour_data: self.summary = "SUV_" + suv2roi.failure_reason return False # Stop loading if self.interrupt_flag.is_set(): self.summary = "INTERRUPT" return False # Generate ROIs self.progress_callback.emit(("Generating ROIs...", 80)) suv2roi.generate_ROI(contour_data, self.progress_callback) # Save new RTSS self.progress_callback.emit(("Saving RT Struct...", 90)) self.save_rtss() return True