annotate jython_script.py @ 2:c8fc3f34cbff draft

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