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