Diff of /Crawler/crawler.py [000000] .. [7c5f70]

Switch to side-by-side view

--- a
+++ b/Crawler/crawler.py
@@ -0,0 +1,94 @@
+import os
+from time import time
+import datetime
+from Crawler.utilities import DataLoader, SaveResults, ProcessAnimal
+from Crawler.update_radiomics_lists import update_radiomics_list
+
+
+def run_crawler():
+
+    tstart = time()
+
+    # Set up data paths
+    path = '/media/matt/Seagate Expansion Drive/b7TData_19/b7TData'
+    path_regex = '*.dcm'
+    log_file = os.path.join(path, 'Results/processing_log.json')
+    summary_file = os.path.join(path, 'Results/Summary.xlsx')
+
+    # Ensure results path exists
+    out_path = os.path.join(path, 'Results')
+    if not os.path.exists(out_path):
+        os.mkdir(out_path)
+
+    # Model
+    # model_path = '/media/blkbeauty3/Matt/ML_Sarcoma_Results/2019_01_22_01-33-59_skip_all_contrasts_lr2e-4_400ep/'
+    model_path = '/media/matt/Seagate Expansion Drive/MR Data/ML_Results/' \
+                 '2019_11_09_14-12-47_cnn_model_3D_3lyr_do_relu_xentropy_skip'
+
+    # Define data management classes
+    loader = DataLoader(base_path=path, folder_regex=path_regex, log_file=log_file)
+    saver = SaveResults(data_base_path=path, save_folder='Results', log_file=log_file)
+
+    # Run crawler
+    flag = True
+    while flag:
+
+        # Get working folder
+        folder_exists = loader.get_folder()
+
+        if folder_exists:  # or if the generator is not exhausted
+
+            # Get animal name, study date, acquisition time, and protocol
+            animal_id, study_date = loader.load_study_data()
+
+            # Compare to animals already processed
+            already_processed = loader.compare_with_log()
+
+            if not already_processed:
+
+                # Generate save paths
+                snames = saver.gen_save_path(animal_id=animal_id, study_date=study_date)
+
+                # Load data
+                data = loader.load_dicom()
+
+                # Save Nifti images to path
+                saver.resave_image_volumes(X=data)
+                saver.save_dicom_header(loader.names[0][0])
+
+                # Set up processing functions for this animal
+                process = ProcessAnimal(snames)
+
+                # Make bias-corrected T2 images
+                process.bias_correct()
+
+                # Process data - Segmentation
+                process.segment_tumor(model_path)
+
+                # Process data - Compute radiomics
+                radiomics_sfiles = process.compute_radiomics(animal_id)
+
+                # Update report
+
+                # Clear working directory
+                saver.clear_working_directory()
+
+                # Update log file
+                saver.append_to_log(animal_id=animal_id, study_date=study_date)
+
+                # Save the updated log file
+                saver.save_log()
+
+        else:
+
+            flag = False
+
+    # Update radiomics paths
+    update_radiomics_list(out_path, summary_file)
+
+    print('\tTotal time (HH:MM:SS): %s\n\n' % (str(datetime.timedelta(seconds=round(time() - tstart)))))
+
+
+if __name__ == "__main__":
+
+    run_crawler()