diff imagej2_adjust_threshold_binary_jython_script.py @ 3:862af85a50ec 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:13:47 +0000
parents ae4ae9c5c56c
children
line wrap: on
line diff
--- a/imagej2_adjust_threshold_binary_jython_script.py	Sun Nov 05 14:25:37 2023 +0000
+++ b/imagej2_adjust_threshold_binary_jython_script.py	Wed Sep 25 16:13:47 2024 +0000
@@ -1,18 +1,15 @@
 import sys
 
-from ij import IJ
+from ij import IJ, Prefs
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-10]
-input_file = sys.argv[-9]
-threshold_min = float(sys.argv[-8])
-threshold_max = float(sys.argv[-7])
-method = sys.argv[-6]
-display = sys.argv[-5]
-black_background = sys.argv[-4] == "yes"
-# TODO: this is not being used.
-stack_histogram = sys.argv[-3] == "yes"
+input_file = sys.argv[-8]
+threshold_min = float(sys.argv[-7])
+threshold_max = float(sys.argv[-6])
+method = sys.argv[-5]
+display = sys.argv[-4]
+black_background = sys.argv[-3] == "yes"
 output_filename = sys.argv[-2]
 output_datatype = sys.argv[-1]
 
@@ -21,22 +18,34 @@
 
 # Create a copy of the image.
 input_image_plus_copy = input_image_plus.duplicate()
-image_processor_copy = input_image_plus_copy.getProcessor()
+
+bit_depth = input_image_plus_copy.getBitDepth()
+
+if black_background:
+    Prefs.blackBackground = True
+else:
+    Prefs.blackBackground = False
 
-# Convert image to binary if necessary.
-if not image_processor_copy.isBinary():
-    # Convert the image to binary grayscale.
-    IJ.run(
-        input_image_plus_copy,
-        "Make Binary",
-        "iterations=1 count=1 edm=Overwrite do=Nothing",
-    )
-# Set the options.
-if black_background:
-    method_str = "%s dark" % method
-else:
-    method_str = method
-IJ.setAutoThreshold(input_image_plus_copy, method_str)
+if method != "Manual":
+    # Set the options.
+    if black_background:
+        method_str = "%s dark" % method
+        suffix = "black"
+    else:
+        method_str = method
+        suffix = ""
+    threshold_min = 1
+    # Set threshold_max based on image bit-depth
+    # For 8-bit images, use 255; for 16-bit images, use 65535
+    if bit_depth == 8:
+        threshold_max = 255  # Default for 8-bit images
+    elif bit_depth == 16:
+        threshold_max = 65535  # Default for 16-bit images
+    else:
+        threshold_max = float('inf')  # General fallback if bit depth is unknown
+
+    IJ.setAutoThreshold(input_image_plus_copy, method_str)
+    IJ.run(input_image_plus_copy, "Convert to Mask", "calculate %s" % suffix)
 if display == "red":
     display_mode = "Red"
 elif display == "bw":
@@ -44,7 +53,5 @@
 elif display == "over_under":
     display_mode = "Over/Under"
 IJ.setThreshold(input_image_plus_copy, threshold_min, threshold_max, display_mode)
-# Run the command.
-IJ.run(input_image_plus_copy, "threshold", "")
 # Save the ImagePlus object as a new image.
 IJ.saveAs(input_image_plus_copy, output_datatype, output_filename)