Mercurial > repos > imgteam > imagej2_skeletonize3d
comparison imagej2_analyze_particles_binary_jython_script.py @ 3:5f5b7185bc16 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:14:34 +0000 |
parents | 49b5288dcd8c |
children |
comparison
equal
deleted
inserted
replaced
2:49b5288dcd8c | 3:5f5b7185bc16 |
---|---|
1 import sys | 1 import sys |
2 | 2 |
3 from ij import IJ | 3 from ij import IJ, Prefs |
4 from ij.plugin.filter import Analyzer | 4 from ij.plugin.filter import Analyzer |
5 | 5 |
6 OPTIONS = ["edm=Overwrite", "iterations=1", "count=1"] | 6 OPTIONS = ["edm=Overwrite", "iterations=1", "count=1"] |
7 | 7 |
8 # Fiji Jython interpreter implements Python 2.5 which does not | 8 # Fiji Jython interpreter implements Python 2.5 which does not |
9 # provide support for argparse. | 9 # provide support for argparse. |
10 error_log = sys.argv[-14] | 10 roi_coordinate_file = sys.argv[-13] |
11 input_file = sys.argv[-13] | 11 input_file = sys.argv[-12] |
12 black_background = sys.argv[-12] == "yes" | 12 black_background = sys.argv[-11] == "yes" |
13 size = sys.argv[-11] | 13 size = sys.argv[-10] |
14 circularity_min = float(sys.argv[-10]) | 14 circularity_min = float(sys.argv[-9]) |
15 circularity_max = float(sys.argv[-9]) | 15 circularity_max = float(sys.argv[-8]) |
16 show = sys.argv[-8] | 16 show = sys.argv[-7] |
17 display_results = sys.argv[-7] == "yes" | 17 display_results = sys.argv[-6] == "yes" |
18 all_results = sys.argv[-6] == "yes" | |
19 exclude_edges = sys.argv[-5] == "yes" | 18 exclude_edges = sys.argv[-5] == "yes" |
20 include_holes = sys.argv[-4] == "yes" | 19 include_holes = sys.argv[-4] == "yes" |
21 output_filename = sys.argv[-3] | 20 output_filename = sys.argv[-3] |
22 output_datatype = sys.argv[-2] | 21 output_datatype = sys.argv[-2] |
23 results_path = sys.argv[-1] | 22 results_path = sys.argv[-1] |
23 | |
24 | |
25 if black_background: | |
26 Prefs.blackBackground = True | |
27 else: | |
28 Prefs.blackBackground = False | |
24 | 29 |
25 # Open the input image file. | 30 # Open the input image file. |
26 input_image_plus = IJ.openImage(input_file) | 31 input_image_plus = IJ.openImage(input_file) |
27 | 32 |
28 # Create a copy of the image. | 33 # Create a copy of the image. |
40 if not image_processor_copy.isBinary(): | 45 if not image_processor_copy.isBinary(): |
41 # Convert the image to binary grayscale. | 46 # Convert the image to binary grayscale. |
42 IJ.run(input_image_plus_copy, "Make Binary", "") | 47 IJ.run(input_image_plus_copy, "Make Binary", "") |
43 | 48 |
44 # Set the options. | 49 # Set the options. |
45 options = ["size=%s" % size] | 50 options = ["size=%s" % size, "stack"] |
46 circularity_str = "%.3f-%.3f" % (circularity_min, circularity_max) | 51 circularity_str = "%.3f-%.3f" % (circularity_min, circularity_max) |
47 options.append("circularity=%s" % circularity_str) | 52 options.append("circularity=%s" % circularity_str) |
53 if exclude_edges: | |
54 options.append("exclude") | |
55 if include_holes: | |
56 options.append("include") | |
57 | |
58 # If you need the coordinates of ROIs we compute it twice | |
59 if len(roi_coordinate_file) > 0: | |
60 options2 = list(options) | |
61 options2.append("show=Overlay") | |
62 IJ.run(input_image_plus_copy, "Analyze Particles...", " ".join(options2)) | |
63 ov = input_image_plus_copy.getOverlay() | |
64 with open(roi_coordinate_file, 'w') as fo: | |
65 fo.write("shape\tpoints\tlabel\tt\tz\n") | |
66 for i, roi in enumerate(ov): | |
67 if roi.getName() is None: | |
68 roi.name = "ROI_%d" % i | |
69 poly = roi.getPolygon() | |
70 x_values = poly.xpoints | |
71 y_values = poly.ypoints | |
72 points_coo = ",".join(["(%d,%d)" % (x, y) for x, y in zip(x_values, y_values)]) | |
73 fo.write("Polygon\t%s\t%s\t%d\t%d\n" % (points_coo, roi.getName(), roi.getTPosition(), roi.getZPosition())) | |
74 analyzer.resetCounter() | |
75 | |
48 if show.find("_") >= 0: | 76 if show.find("_") >= 0: |
49 show_str = "[%s]" % show.replace("_", " ") | 77 show_str = "[%s]" % show.replace("_", " ") |
50 else: | 78 else: |
51 show_str = show | 79 show_str = show |
52 options.append("show=%s" % show_str) | 80 options.append("show=%s" % show_str) |
53 if display_results: | 81 if display_results: |
54 options.append("display") | 82 options.append("display") |
55 if not all_results: | |
56 options.append("summarize") | |
57 if exclude_edges: | |
58 options.append("exclude") | |
59 if include_holes: | |
60 options.append("include") | |
61 # Always run "in_situ". | 83 # Always run "in_situ". |
62 options.append("in_situ") | 84 options.append("in_situ") |
63 | 85 |
64 # Run the command. | 86 # Run the command. |
65 IJ.run(input_image_plus_copy, "Analyze Particles...", " ".join(options)) | 87 IJ.run(input_image_plus_copy, "Analyze Particles...", " ".join(options)) |
66 | 88 |
67 # Save outputs. | 89 # Save outputs. |
68 if len(output_filename) > 0: | 90 if len(output_filename) > 0: |
69 # Save the ImagePlus object as a new image. | 91 # Save the ImagePlus object as a new image. |
70 IJ.saveAs(input_image_plus_copy, output_datatype, output_filename) | 92 IJ.saveAs(input_image_plus_copy, output_datatype, output_filename) |
71 if display_results and len(results_path) > 0: | 93 if len(results_path) > 0: |
72 results_table = analyzer.getResultsTable() | 94 results_table = analyzer.getResultsTable() |
73 results_table.saveAs(results_path) | 95 results_table.saveAs(results_path) |