comparison imagej2_noise_jython_script.py @ 0:95fb6fa70c2f draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/image_processing/imagej2 commit b08f0e6d1546caaf627b21f8c94044285d5d5b9c-dirty"
author imgteam
date Tue, 17 Sep 2019 17:06:56 -0400
parents
children 7f9840d3b7e7
comparison
equal deleted inserted replaced
-1:000000000000 0:95fb6fa70c2f
1 import sys
2 from ij import IJ
3 from ij import ImagePlus
4 import jython_utils
5
6 # Fiji Jython interpreter implements Python 2.5 which does not
7 # provide support for argparse.
8 error_log = sys.argv[ -19 ]
9 input = sys.argv[ -18 ]
10 image_datatype = sys.argv[ -17 ]
11 noise = sys.argv[ -16 ]
12 standard_deviation = sys.argv[ -15 ]
13 radius = sys.argv[ -14 ]
14 threshold = sys.argv[ -13 ]
15 which_outliers = sys.argv[ -12 ]
16 randomj = sys.argv[ -11 ]
17 trials = sys.argv[ -10 ]
18 probability = sys.argv[ -9 ]
19 # Note the spelling - so things don't get confused due to Python lambda function.
20 lammbda = sys.argv[ -8 ]
21 order = sys.argv[ -7 ]
22 mean = sys.argv[ -6 ]
23 sigma = sys.argv[ -5 ]
24 min = sys.argv[ -4 ]
25 max = sys.argv[ -3 ]
26 insertion = sys.argv[ -2 ]
27 tmp_output_path = sys.argv[ -1 ]
28
29 error = False
30
31 # Open the input image file.
32 image_plus = IJ.openImage( input )
33 bit_depth = image_plus.getBitDepth()
34 image_type = image_plus.getType()
35 # Create an ImagePlus object for the image.
36 image_plus_copy = image_plus.duplicate()
37 # Make a copy of the image.
38 image_processor_copy = image_plus_copy.getProcessor()
39
40 # Perform the analysis on the ImagePlus object.
41 if noise == 'add_noise':
42 IJ.run( image_plus_copy, "Add Noise", "" )
43 elif noise == 'add_specified_noise':
44 IJ.run( image_plus_copy, "Add Specified Noise", "standard=&standard_deviation" )
45 elif noise == 'salt_and_pepper':
46 IJ.run( image_plus_copy, "Salt and Pepper", "" )
47 elif noise == 'despeckle':
48 IJ.run( image_plus_copy, "Despeckle", "" )
49 elif noise == 'remove_outliers':
50 IJ.run( image_plus_copy, "Remove Outliers", "radius=&radius threshold=&threshold which=&which_outliers" )
51 elif noise == 'remove_nans':
52 if bit_depth == 32:
53 IJ.run( image_plus_copy, "Remove NaNs", "" )
54 else:
55 # When Galaxy metadata for images is enhanced to include information like this,
56 # we'll be able to write tool validators rather than having to stop the job in
57 # an error state.
58 msg = "Remove NaNs requires a 32-bit image, the selected image is %d-bit" % bit_depth
59 jython_utils.handle_error( error_log, msg )
60 error = True
61 elif noise == 'rof_denoise':
62 if image_type == ImagePlus.GRAY32:
63 IJ.run( image_plus_copy, "ROF Denoise", "" )
64 else:
65 msg = "ROF Denoise requires an image of type 32-bit grayscale, the selected image is %d-bit" % ( bit_depth )
66 jython_utils.handle_error( error_log, msg )
67 error = True
68 elif noise == 'randomj':
69 if randomj == 'randomj_binomial':
70 IJ.run( image_plus_copy, "RandomJ Binomial", "trials=&trials probability=&probability insertion=&insertion" )
71 elif randomj == 'randomj_exponential':
72 IJ.run( image_plus_copy, "RandomJ Exponential", "lambda=&lammbda insertion=&insertion" )
73 elif randomj == 'randomj_gamma':
74 IJ.run( image_plus_copy, "RandomJ Gamma", "order=&order insertion=&insertion" )
75 elif randomj == 'randomj_gaussian':
76 IJ.run( image_plus_copy, "RandomJ Gaussian", "mean=&mean sigma=&sigma insertion=&insertion" )
77 elif randomj == 'randomj_poisson':
78 IJ.run( image_plus_copy, "RandomJ Poisson", "mean=&mean insertion=&insertion" )
79 elif randomj == 'randomj_uniform':
80 IJ.run( image_plus_copy, "RandomJ Uniform", "min=&min max=&max insertion=&insertion" )
81
82 if not error:
83 # Save the ImagePlus object as a new image.
84 IJ.saveAs( image_plus_copy, image_datatype, tmp_output_path )