diff --git a/1_identify_fibers.py b/1_identify_fibers.py index 0c17e2931bca2ce75c1aa3da788fd3c4c33454af..f33076fda4f01cead2b932bec5c3b6dd76c9dfc6 100755 --- a/1_identify_fibers.py +++ b/1_identify_fibers.py @@ -82,7 +82,7 @@ def fix_ij_dirs(path): """ fixed_path = str(path).replace("\\", "/") - fixed_path = fixed_path + "/" + # fixed_path = fixed_path + "/" return fixed_path @@ -110,7 +110,7 @@ def open_image_with_BF(path_to_file): def fix_BF_czi_imagetitle(imp): - image_title = os.path.basename( imp.getTitle() ) + image_title = os.path.basename( imp.getShortTitle() ) image_title = image_title.replace(".czi", "") image_title = image_title.replace(" ", "_") image_title = image_title.replace("_-_", "") @@ -505,16 +505,18 @@ raw = open_image_with_BF(path_to_image) # get image info raw_image_calibration = raw.getCalibration() raw_image_title = fix_BF_czi_imagetitle(raw) +print("raw image title: ", str(raw_image_title)) # take care of paths and directories -output_dir = fix_ij_dirs(output_dir) + str(raw_image_title) + "/1_identify_fibers/" +output_dir = fix_ij_dirs(output_dir) + "/" + str(raw_image_title) + "/1_identify_fibers" +print("output_dir: ", str(output_dir)) -if not os.path.exists( output_dir ): - os.makedirs( output_dir ) +if not os.path.exists( str(output_dir) ): + os.makedirs( str(output_dir) ) classifiers_dir = fix_ij_dirs(classifiers_dir) -primary_model = classifiers_dir + "primary.model" -secondary_model = classifiers_dir + "secondary_central_nuclei.model" +primary_model = classifiers_dir + "/" + "primary.model" +secondary_model = classifiers_dir + "/" + "secondary_central_nuclei.model" # update the log for the user IJ.log( "Now working on " + str(raw_image_title) ) @@ -543,7 +545,7 @@ weka_result2 = apply_weka_model(secondary_model, weka_result1, tiling_factor ) delete_channel(weka_result2, 1) weka_result2.setCalibration(raw_image_calibration) process_weka_result(weka_result2) -IJ.saveAs(weka_result2, "Tiff", output_dir + raw_image_title + "_all_fibers_binary") +IJ.saveAs(weka_result2, "Tiff", output_dir + "/" + raw_image_title + "_all_fibers_binary") eda_parameters = [minAr, maxAr, minPer, maxPer, minCir, maxCir, minRnd, maxRnd, minSol, maxSol, minFAR, maxFAR, minMinFer, maxMinFer] raw.show() # EPA will not work if no image is shown run_extended_particle_analyzer(weka_result2, eda_parameters) @@ -553,7 +555,7 @@ rm.hide() raw.hide() enlarge_all_rois( enlarge, rm, raw_image_calibration.pixelWidth ) renumber_rois(rm) -save_all_rois( rm, output_dir + "all_fiber_rois.zip" ) +save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_rois.zip" ) # check for positive fibers if fiber_channel > 0: @@ -565,7 +567,7 @@ if fiber_channel > 0: change_all_roi_color(rm, "blue") positive_fibers = select_positive_fibers( raw, fiber_channel, rm, min_fiber_intensity ) change_subset_roi_color(rm, positive_fibers, "magenta") - save_selected_rois( rm, positive_fibers, output_dir + "mhc_positive_fiber_rois.zip") + save_selected_rois( rm, positive_fibers, output_dir + "/" + raw_image_title + "_mhc_positive_fiber_rois.zip") # measure size & shape, save IJ.run("Set Measurements...", "area perimeter shape feret's redirect=None decimal=4") @@ -583,7 +585,7 @@ if fiber_channel > 0: add_results( rt, "MHC Positive Fibers (magenta)", positive_fibers, "YES") print rt.size() -rt.save(output_dir + "all_fibers_results.csv") +rt.save(output_dir + "/" + raw_image_title + "_all_fibers_results.csv") print "saved the all_fibers_results.csv" # dress up the original image, save a overlay-png, present original to the user rm.show() @@ -593,7 +595,7 @@ raw.setDisplayMode(IJ.COMPOSITE) enhance_contrast( raw ) IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png qc_duplicate = raw.duplicate() -IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_all_fibers") +IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_all_fibers") qc_duplicate.close() wm.toFront( raw.getWindow() ) IJ.run("Remove Overlay", "") @@ -603,6 +605,6 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0 IJ.log("total time in minutes: " + str(total_execution_time_min)) IJ.log( "~~ all done ~~" ) IJ.selectWindow("Log") -IJ.saveAs("Text", str(output_dir + raw_image_title + "_all_fibers_Log")) +IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_all_fibers_Log")) if close_raw == True: raw.close() \ No newline at end of file diff --git a/2a_identify_MHC_positive_fibers.py b/2a_identify_MHC_positive_fibers.py old mode 100644 new mode 100755 index 4d6eb6cc092467a1a2896f74b6e2008eaf0bb8ae..3744090a5e696a4f551fc41ea5587ff61bfc3a6a --- a/2a_identify_MHC_positive_fibers.py +++ b/2a_identify_MHC_positive_fibers.py @@ -85,7 +85,7 @@ def open_image_with_BF(path_to_file): def fix_BF_czi_imagetitle(imp): - image_title = os.path.basename( imp.getTitle() ) + image_title = os.path.basename( imp.getShortTitle() ) image_title = image_title.replace(".czi", "") image_title = image_title.replace(" ", "_") image_title = image_title.replace("_-_", "") @@ -364,13 +364,14 @@ raw = open_image_with_BF(path_to_image) # get image info raw_image_calibration = raw.getCalibration() raw_image_title = fix_BF_czi_imagetitle(raw) +print("raw image title: ", str(raw_image_title)) # take care of paths and directories input_rois_path = fix_ij_dirs( roi_zip ) -output_dir = fix_ij_dirs(output_dir) + "/2a_identify_MHC_positive_fibers/" +output_dir = fix_ij_dirs(output_dir) + "/2a_identify_MHC_positive_fibers" -if not os.path.exists( output_dir ): - os.makedirs( output_dir ) +if not os.path.exists( str(output_dir) ): + os.makedirs( str(output_dir) ) # update the log for the user IJ.log( "Now working on " + str(raw_image_title) ) @@ -394,7 +395,7 @@ IJ.log( "fiber intensity threshold: " + str(min_fiber_intensity) ) change_all_roi_color(rm, "blue") positive_fibers = select_positive_fibers( raw, fiber_channel, rm, min_fiber_intensity ) change_subset_roi_color(rm, positive_fibers, "magenta") -save_selected_rois( rm, positive_fibers, output_dir + "mhc_positive_fiber_rois.zip") +save_selected_rois( rm, positive_fibers, output_dir + "/" + raw_image_title + "_mhc_positive_fiber_rois.zip") # measure size & shape, save IJ.run("Set Measurements...", "area perimeter shape feret's redirect=None decimal=4") @@ -402,7 +403,7 @@ IJ.run("Clear Results", "") measure_in_all_rois( raw, fiber_channel, rm ) preset_results_column( rt, "MHC Positive Fibers (magenta)", "NO" ) add_results( rt, "MHC Positive Fibers (magenta)", positive_fibers, "YES") -rt.save(output_dir + "_mhc_positive_fibers_results.csv") +rt.save(output_dir + "/" + raw_image_title + "_mhc_positive_fibers_results.csv") # dress up the original image, save a overlay-png, present original to the user rm.show() @@ -412,7 +413,7 @@ raw.setDisplayMode(IJ.COMPOSITE) enhance_contrast( raw ) IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png qc_duplicate = raw.duplicate() -IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_mhc_positive_fibers") +IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_mhc_positive_fibers") qc_duplicate.close() wm.toFront( raw.getWindow() ) IJ.run("Remove Overlay", "") @@ -422,4 +423,4 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0 IJ.log("total time in minutes: " + str(total_execution_time_min)) IJ.log( "~~ all done ~~" ) IJ.selectWindow("Log") -IJ.saveAs("Text", str(output_dir + raw_image_title + "_mhc_positive_fibers_Log")) \ No newline at end of file +IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_mhc_positive_fibers_Log")) \ No newline at end of file diff --git a/2b_central_nuclei_counter.py b/2b_central_nuclei_counter.py old mode 100644 new mode 100755 index 0df41e67cb7c59119be9c2bc7d1095925035184e..f15c0486988718e117cc0f8c55055c3884a80047 --- a/2b_central_nuclei_counter.py +++ b/2b_central_nuclei_counter.py @@ -90,7 +90,7 @@ def open_image_with_BF(path_to_file): def fix_BF_czi_imagetitle(imp): - image_title = os.path.basename( imp.getTitle() ) + image_title = os.path.basename( imp.getShortTitle() ) image_title = image_title.replace(".czi", "") image_title = image_title.replace(" ", "_") image_title = image_title.replace("_-_", "") @@ -373,10 +373,10 @@ raw_image_title = fix_BF_czi_imagetitle(raw) # take care of paths and directories input_rois_path = fix_ij_dirs( roi_zip ) -output_dir = fix_ij_dirs(output_dir) + "/2b_central_nuclei_counter/" +output_dir = fix_ij_dirs(output_dir) + "/2b_central_nuclei_counter" -if not os.path.exists( output_dir ): - os.makedirs( output_dir ) +if not os.path.exists( str(output_dir) ): + os.makedirs( str(output_dir) ) # open ROIS and show on image open_rois_from_zip( rm, input_rois_path ) @@ -396,7 +396,7 @@ rm.hide() raw.hide() scale_all_rois( rm, shrink ) renumber_rois(rm) -save_all_rois( rm, output_dir + "all_fiber_rois_shrunk.zip" ) +save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_rois_shrunk.zip" ) if min_nucleus_intensity == 0: min_nucleus_intensity = get_threshold_from_method(raw, nucleus_channel, "Mean")[0] @@ -407,8 +407,8 @@ central_nuclei_fibers = select_central_nuclei( raw, nucleus_channel, rm, min_nuc clear_ij_roi_manager(rm) open_rois_from_zip( rm, input_rois_path ) change_subset_roi_color(rm, central_nuclei_fibers, "yellow") -save_selected_rois( rm, central_nuclei_fibers, output_dir + "central_nuclei_fiber_rois.zip") -save_all_rois( rm, output_dir + "all_fiber_rois_central_nuclei_color-coded.zip" ) +save_selected_rois( rm, central_nuclei_fibers, output_dir + "/" + raw_image_title + "_central_nuclei_fiber_rois.zip") +save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_rois_central_nuclei_color-coded.zip" ) # measure size & shape, add column for pos nuclei and fiber findings, save IJ.run("Set Measurements...", "area perimeter shape feret's redirect=None decimal=4") @@ -416,7 +416,7 @@ IJ.run("Clear Results", "") measure_in_all_rois( raw, nucleus_channel, rm ) preset_results_column( rt, "Centralized Nuclei (yellow)" , "NO" ) add_results( rt, "Centralized Nuclei (yellow)", central_nuclei_fibers, "YES") -rt.save(output_dir + "centralized_nuclei_results.csv") +rt.save(output_dir + "/" + raw_image_title + "_centralized_nuclei_results.csv") # dress up the original image, save a overlay-png, present original to the user rm.show() @@ -426,7 +426,7 @@ raw.setDisplayMode(IJ.COMPOSITE) enhance_contrast( raw ) IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png qc_duplicate = raw.duplicate() -IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_centralized_nuclei") +IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_centralized_nuclei") qc_duplicate.close() wm.toFront( raw.getWindow() ) IJ.run("Remove Overlay", "") @@ -436,4 +436,4 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0 IJ.log("total time in minutes: " + str(total_execution_time_min)) IJ.log( "~~ all done ~~" ) IJ.selectWindow("Log") -IJ.saveAs("Text", str(output_dir + raw_image_title + "_centralized_nuclei_Log")) \ No newline at end of file +IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_centralized_nuclei_Log")) \ No newline at end of file diff --git a/2c_fibertyping.py b/2c_fibertyping.py old mode 100644 new mode 100755 index 5a4288d91cbbc819e6ad715da62382815817c219..91b8c6ad9d37a3506677a8be7508970e779b8e7a --- a/2c_fibertyping.py +++ b/2c_fibertyping.py @@ -93,7 +93,7 @@ def open_image_with_BF(path_to_file): def fix_BF_czi_imagetitle(imp): - image_title = os.path.basename( imp.getTitle() ) + image_title = os.path.basename( imp.getShortTitle() ) image_title = image_title.replace(".czi", "") image_title = image_title.replace(" ", "_") image_title = image_title.replace("_-_", "") @@ -374,14 +374,11 @@ raw_image_calibration = raw.getCalibration() raw_image_title = fix_BF_czi_imagetitle(raw) # take care of paths and directories -# output_dir = os.path.dirname(str(roi_zip)) -# output_dir = fix_ij_dirs(output_dir) - input_rois_path = fix_ij_dirs( roi_zip ) -output_dir = fix_ij_dirs(output_dir) + "/2c_fibertyping/" +output_dir = fix_ij_dirs(output_dir) + "/2c_fibertyping" -if not os.path.exists( output_dir ): - os.makedirs( output_dir ) +if not os.path.exists( str(output_dir) ): + os.makedirs( str(output_dir) ) # open ROIS and show on image open_rois_from_zip( rm, str(input_rois_path) ) @@ -420,7 +417,7 @@ for index, fiber_channel in enumerate(all_fiber_channels): all_fiber_subsets[index] = positive_fibers if len(positive_fibers) > 0: change_subset_roi_color(rm, positive_fibers, roi_colors[index]) - save_selected_rois( rm, positive_fibers, output_dir + "positive_fiber_rois_c" + str( fiber_channel ) + ".zip") + save_selected_rois( rm, positive_fibers, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c" + str( fiber_channel ) + ".zip") add_results( rt, "channel " + str(fiber_channel) + " positive (" + roi_colors[fiber_channel-1] + ")", positive_fibers, "YES") # single positive @@ -438,30 +435,30 @@ positive_c1_c2_c3 = list( set(positive_c1_c2).intersection(all_fiber_subsets[2]) if len(positive_c1_c2) > 0: preset_results_column( rt, "channel 1,2 positive (magenta)", "NO" ) change_subset_roi_color(rm, positive_c1_c2, "magenta") - save_selected_rois( rm, positive_c1_c2, output_dir + "positive_fiber_rois_c1_c2.zip") + save_selected_rois( rm, positive_c1_c2, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c1_c2.zip") add_results( rt, "channel 1,2 positive (magenta)", positive_c1_c2, "YES") if len(positive_c1_c3) > 0: preset_results_column( rt, "channel 1,3 positive (yellow)", "NO" ) change_subset_roi_color(rm, positive_c1_c3, "yellow") - save_selected_rois( rm, positive_c1_c3, output_dir + "positive_fiber_rois_c1_c3.zip") + save_selected_rois( rm, positive_c1_c3, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c1_c3.zip") add_results( rt, "channel 1,3 positive (yellow)", positive_c1_c3, "YES") if len(positive_c2_c3) > 0: preset_results_column( rt, "channel 2,3 positive (cyan)", "NO" ) change_subset_roi_color(rm, positive_c2_c3, "cyan") - save_selected_rois( rm, positive_c2_c3, output_dir + "positive_fiber_rois_c2_c3.zip") + save_selected_rois( rm, positive_c2_c3, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c2_c3.zip") add_results( rt, "channel 2,3 positive (cyan)", positive_c2_c3, "YES") if len(positive_c1_c2_c3) > 0: preset_results_column( rt, "channel 1,2,3 positive (white)", "NO" ) change_subset_roi_color(rm, positive_c1_c2_c3, "white") - save_selected_rois( rm, positive_c1_c2_c3, output_dir + "positive_fiber_rois_c1_c2_c3.zip") + save_selected_rois( rm, positive_c1_c2_c3, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c1_c2_c3.zip") add_results( rt, "channel 1,2,3 positive (white)", positive_c1_c2_c3, "YES") # save all results together -save_all_rois( rm, output_dir + "all_fiber_type_rois_color-coded.zip" ) -rt.save(output_dir + "fibertyping_results.csv") +save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_type_rois_color-coded.zip" ) +rt.save(output_dir + "/" + raw_image_title + "_fibertyping_results.csv") # dress up the original image, save a overlay-png, present original to the user raw.show() @@ -470,7 +467,7 @@ raw.setDisplayMode(IJ.COMPOSITE) enhance_contrast( raw ) IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png qc_duplicate = raw.duplicate() -IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_fibertyping") +IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_fibertyping") qc_duplicate.close() wm.toFront( raw.getWindow() ) IJ.run("Remove Overlay", "") @@ -480,6 +477,6 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0 IJ.log("total time in minutes: " + str(total_execution_time_min)) IJ.log( "~~ all done ~~" ) IJ.selectWindow("Log") -IJ.saveAs("Text", str(output_dir + raw_image_title + "_fibertyping_Log")) +IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_fibertyping_Log")) if close_raw == True: raw.close() \ No newline at end of file diff --git a/3_manual_rerun.py b/3_manual_rerun.py old mode 100644 new mode 100755 index a8908d7dcccd4f278f58869af175c8133e5a5fdf..1358701fa62521daf9dc501a3561a547cfe151af --- a/3_manual_rerun.py +++ b/3_manual_rerun.py @@ -30,7 +30,7 @@ def fix_ij_dirs(path): def fix_BF_czi_imagetitle(imp): - image_title = os.path.basename( imp.getTitle() ) + image_title = os.path.basename( imp.getShortTitle() ) image_title = image_title.replace(".czi", "") image_title = image_title.replace(" ", "_") image_title = image_title.replace("_-_", "") @@ -164,19 +164,19 @@ def show_all_rois_on_image(rm, imp): rm.runCommand(imp,"Show All") -output_dir = fix_ij_dirs(output_dir) + "/3_manual_rerun/" -if not os.path.exists( output_dir ): - os.makedirs( output_dir ) +output_dir = fix_ij_dirs(output_dir) + "/3_manual_rerun" +if not os.path.exists( str(output_dir) ): + os.makedirs( str(output_dir) ) rt.reset() raw_image_title = fix_BF_czi_imagetitle(raw) renumber_rois(rm) -save_all_rois( rm, output_dir + "manual_rerun_all_fiber_rois_color-coded.zip" ) +save_all_rois( rm, output_dir + "/" + raw_image_title + "_manual_rerun_all_fiber_rois_color-coded.zip" ) roi_colors = extract_color_of_all_rois(rm) WaitForUserDialog("Choose measurements", "Set measurements in Analyze > Set Measurements, then click OK").show() measure_in_all_rois(raw, measurement_channel, rm) add_results_to_resultstable(rt, "ROI color", roi_colors ) -rt.save(output_dir + "manual_rerun_results.csv") +rt.save(output_dir + "/" + raw_image_title + "_manual_rerun_results.csv") # dress up the original image, save a overlay-png, present original to the user raw.show() @@ -185,7 +185,7 @@ raw.setDisplayMode(IJ.COMPOSITE) enhance_contrast( raw ) IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png qc_duplicate = raw.duplicate() -IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_manual_rerun") +IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_manual_rerun") qc_duplicate.close() wm.toFront( raw.getWindow() ) IJ.run("Remove Overlay", "")