Mercurial > repos > imgteam > imagej2_watershed_binary
diff imagej2_analyze_particles_binary_jython_script.py @ 3:29aca8eebdaa draft default tip
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/image_processing/imagej2 commit 8f49f3c66b5a1de99ec15e65c2519a56792f1d56
author | imgteam |
---|---|
date | Wed, 25 Sep 2024 16:00:05 +0000 |
parents | aeae7e29d525 |
children |
line wrap: on
line diff
--- a/imagej2_analyze_particles_binary_jython_script.py Sun Nov 05 10:47:25 2023 +0000 +++ b/imagej2_analyze_particles_binary_jython_script.py Wed Sep 25 16:00:05 2024 +0000 @@ -1,27 +1,32 @@ import sys -from ij import IJ +from ij import IJ, Prefs from ij.plugin.filter import Analyzer OPTIONS = ["edm=Overwrite", "iterations=1", "count=1"] # Fiji Jython interpreter implements Python 2.5 which does not # provide support for argparse. -error_log = sys.argv[-14] -input_file = sys.argv[-13] -black_background = sys.argv[-12] == "yes" -size = sys.argv[-11] -circularity_min = float(sys.argv[-10]) -circularity_max = float(sys.argv[-9]) -show = sys.argv[-8] -display_results = sys.argv[-7] == "yes" -all_results = sys.argv[-6] == "yes" +roi_coordinate_file = sys.argv[-13] +input_file = sys.argv[-12] +black_background = sys.argv[-11] == "yes" +size = sys.argv[-10] +circularity_min = float(sys.argv[-9]) +circularity_max = float(sys.argv[-8]) +show = sys.argv[-7] +display_results = sys.argv[-6] == "yes" exclude_edges = sys.argv[-5] == "yes" include_holes = sys.argv[-4] == "yes" output_filename = sys.argv[-3] output_datatype = sys.argv[-2] results_path = sys.argv[-1] + +if black_background: + Prefs.blackBackground = True +else: + Prefs.blackBackground = False + # Open the input image file. input_image_plus = IJ.openImage(input_file) @@ -42,9 +47,32 @@ IJ.run(input_image_plus_copy, "Make Binary", "") # Set the options. -options = ["size=%s" % size] +options = ["size=%s" % size, "stack"] circularity_str = "%.3f-%.3f" % (circularity_min, circularity_max) options.append("circularity=%s" % circularity_str) +if exclude_edges: + options.append("exclude") +if include_holes: + options.append("include") + +# If you need the coordinates of ROIs we compute it twice +if len(roi_coordinate_file) > 0: + options2 = list(options) + options2.append("show=Overlay") + IJ.run(input_image_plus_copy, "Analyze Particles...", " ".join(options2)) + ov = input_image_plus_copy.getOverlay() + with open(roi_coordinate_file, 'w') as fo: + fo.write("shape\tpoints\tlabel\tt\tz\n") + for i, roi in enumerate(ov): + if roi.getName() is None: + roi.name = "ROI_%d" % i + poly = roi.getPolygon() + x_values = poly.xpoints + y_values = poly.ypoints + points_coo = ",".join(["(%d,%d)" % (x, y) for x, y in zip(x_values, y_values)]) + fo.write("Polygon\t%s\t%s\t%d\t%d\n" % (points_coo, roi.getName(), roi.getTPosition(), roi.getZPosition())) + analyzer.resetCounter() + if show.find("_") >= 0: show_str = "[%s]" % show.replace("_", " ") else: @@ -52,12 +80,6 @@ options.append("show=%s" % show_str) if display_results: options.append("display") - if not all_results: - options.append("summarize") -if exclude_edges: - options.append("exclude") -if include_holes: - options.append("include") # Always run "in_situ". options.append("in_situ") @@ -68,6 +90,6 @@ if len(output_filename) > 0: # Save the ImagePlus object as a new image. IJ.saveAs(input_image_plus_copy, output_datatype, output_filename) -if display_results and len(results_path) > 0: +if len(results_path) > 0: results_table = analyzer.getResultsTable() results_table.saveAs(results_path)