diff imagej2_math_jython_script.py @ 1:aa4a5a8c4cfd draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/image_processing/imagej2 commit 2afb24f3c81d625312186750a714d702363012b5"
author imgteam
date Mon, 28 Sep 2020 16:39:18 +0000
parents 95b7592729e2
children eabdcf6ad900
line wrap: on
line diff
--- a/imagej2_math_jython_script.py	Tue Sep 17 17:03:42 2019 -0400
+++ b/imagej2_math_jython_script.py	Mon Sep 28 16:39:18 2020 +0000
@@ -1,78 +1,84 @@
-import jython_utils
 import sys
+
 from ij import IJ
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[ -8 ]
-input = sys.argv[ -7 ]
-operation = sys.argv[ -6 ]
-expression = sys.argv[ -5 ]
-if sys.argv[ -4 ] in [ None, 'None' ]:
+error_log = sys.argv[-8]
+input_file = sys.argv[-7]
+operation = sys.argv[-6]
+expression = sys.argv[-5]
+if sys.argv[-4] in [None, 'None']:
     bin_constant = None
 else:
-    bin_constant = int( sys.argv[ -4 ] )
-if sys.argv[ -3 ] in [ None, 'None' ]:
+    bin_constant = int(sys.argv[-4])
+if sys.argv[-3] in [None, 'None']:
     float_constant = None
 else:
-    float_constant = float( sys.argv[ -3 ] )
-tmp_output_path = sys.argv[ -2 ]
-output_datatype = sys.argv[ -1 ]
+    float_constant = float(sys.argv[-3])
+tmp_output_path = sys.argv[-2]
+output_datatype = sys.argv[-1]
+
+print("\nerror_log: %s\n" % str(error_log))
+print("\ninput_file: %s\n" % str(input_file))
+print("\noperation: %s\n" % str(operation))
+print("\nexpression: %s\n" % str(expression))
+print("\nbin_constant: %s\n" % str(bin_constant))
+print("\nfloat_constant: %s\n" % str(float_constant))
+print("\ntmp_output_path: %s\n" % str(tmp_output_path))
+print("\noutput_datatype: %s\n" % str(output_datatype))
 
 # Open the input image file.
-input_image_plus = IJ.openImage( input )
+input_image_plus = IJ.openImage(input_file)
 
 # Create a copy of the image.
 input_image_plus_copy = input_image_plus.duplicate()
 image_processor_copy = input_image_plus_copy.getProcessor()
 bit_depth = image_processor_copy.getBitDepth()
 
-try:
-    if operation.find( '_' ) > 0:
-        # Square_Root.
-        new_operation = operation.replace( '_', ' ' )
-    elif operation in [ 'Square', 'Log', 'Exp', 'Abs', 'Reciprocal' ]:
-        # Unfortunately some ImageJ commands require a "..." ending
-        # while others do not.  There seems to be no pattern.
-        new_operation = '%s' % operation
-    else:
-        new_operation = '%s...' % operation
+if operation.find('_') > 0:
+    # Square_Root.
+    new_operation = operation.replace('_', ' ')
+elif operation in ['Square', 'Log', 'Exp', 'Abs', 'Reciprocal']:
+    # Unfortunately some ImageJ commands require a "..." ending
+    # while others do not.  There seems to be no pattern.
+    new_operation = '%s' % operation
+else:
+    new_operation = '%s...' % operation
 
-    if operation == 'Macro':
-        # Apply the macro code to the image via a call to it's
-        # ImageProcessor since this option does not work using
-        # the IJ.run() method.
-        new_expression = expression.lstrip( '"' ).rstrip( '"' )
-        options = 'code=%s' % new_expression
-        image_processor_copy.applyMacro( new_expression )
-    elif operation == 'Min':
-        # Min does not work without using the ImageProcessor.
-        image_processor_copy.min( float_constant )
-    elif operation == 'Max':
-        # Max does not work without using the ImageProcessor.
-        image_processor_copy.max( float_constant )
-    elif operation == 'Abs':
-        if bit_depth not in [ 16, 32 ]:
-            # Convert the image to 32-bit.
-            IJ.run( input_image_plus_copy, "32-bit", "" )
-            IJ.run( input_image_plus_copy, new_operation, "" )
-    elif operation == 'Reciprocal':
-        if bit_depth != 32:
-            # Convert the image to 32 bit.
-            IJ.run( input_image_plus_copy, "32-bit", "" )
-            IJ.run( input_image_plus_copy, new_operation, "" )
+if operation == 'Macro':
+    # Apply the macro code to the image via a call to it's
+    # ImageProcessor since this option does not work using
+    # the IJ.run() method.
+    new_expression = expression.lstrip('"').rstrip('"')
+    options = 'code=%s' % new_expression
+    image_processor_copy.applyMacro(new_expression)
+elif operation == 'Min':
+    # Min does not work without using the ImageProcessor.
+    image_processor_copy.min(float_constant)
+elif operation == 'Max':
+    # Max does not work without using the ImageProcessor.
+    image_processor_copy.max(float_constant)
+elif operation == 'Abs':
+    if bit_depth not in [16, 32]:
+        # Convert the image to 32-bit.
+        IJ.run(input_image_plus_copy, "32-bit", "")
+        IJ.run(input_image_plus_copy, new_operation, "")
+elif operation == 'Reciprocal':
+    if bit_depth != 32:
+        # Convert the image to 32 bit.
+        IJ.run(input_image_plus_copy, "32-bit", "")
+        IJ.run(input_image_plus_copy, new_operation, "")
+else:
+    if operation in ['AND', 'OR', 'XOR']:
+        # Value is a binary number.
+        options = 'value=%d' % bin_constant
+    elif operation in ['Log', 'Exp', 'Square', 'Square_Root']:
+        # No constant value.
+        options = ''
     else:
-        if operation in [ 'AND', 'OR', 'XOR' ]:
-            # Value is a binary number.
-            options = 'value=%d' % bin_constant
-        elif operation in [ 'Log', 'Exp', 'Square', 'Square_Root' ]:
-            # No constant value.
-            options = ''
-        else:
-            # Value is a floating point number.
-            options = 'value=%.3f' % float_constant
-        IJ.run( input_image_plus_copy, "%s" % new_operation, "%s" % options )
-    # Save the ImagePlus object as a new image.
-    IJ.saveAs( input_image_plus_copy, output_datatype, tmp_output_path )
-except Exception, e:
-    jython_utils.handle_error( error_log, str( e ) )
+        # Value is a floating point number.
+        options = 'value=%.3f' % float_constant
+    IJ.run(input_image_plus_copy, "%s" % new_operation, "%s" % options)
+# Save the ImagePlus object as a new image.
+IJ.saveAs(input_image_plus_copy, output_datatype, tmp_output_path)