Mercurial > repos > imgteam > imagej2_math
comparison imagej2_noise_jython_script.py @ 1:d48c999b3b96 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:46:43 +0000 |
| parents | dbacd5d06c27 |
| children | d7fbe9662213 |
comparison
equal
deleted
inserted
replaced
| 0:dbacd5d06c27 | 1:d48c999b3b96 |
|---|---|
| 1 import sys | 1 import sys |
| 2 | |
| 2 from ij import IJ | 3 from ij import IJ |
| 3 from ij import ImagePlus | |
| 4 import jython_utils | |
| 5 | 4 |
| 6 # Fiji Jython interpreter implements Python 2.5 which does not | 5 # Fiji Jython interpreter implements Python 2.5 which does not |
| 7 # provide support for argparse. | 6 # provide support for argparse. |
| 8 error_log = sys.argv[ -19 ] | 7 error_log = sys.argv[-19] |
| 9 input = sys.argv[ -18 ] | 8 input_file = sys.argv[-18] |
| 10 image_datatype = sys.argv[ -17 ] | 9 image_datatype = sys.argv[-17] |
| 11 noise = sys.argv[ -16 ] | 10 noise = sys.argv[-16] |
| 12 standard_deviation = sys.argv[ -15 ] | 11 standard_deviation = sys.argv[-15] |
| 13 radius = sys.argv[ -14 ] | 12 radius = sys.argv[-14] |
| 14 threshold = sys.argv[ -13 ] | 13 threshold = sys.argv[-13] |
| 15 which_outliers = sys.argv[ -12 ] | 14 which_outliers = sys.argv[-12] |
| 16 randomj = sys.argv[ -11 ] | 15 randomj = sys.argv[-11] |
| 17 trials = sys.argv[ -10 ] | 16 trials = sys.argv[-10] |
| 18 probability = sys.argv[ -9 ] | 17 probability = sys.argv[-9] |
| 19 # Note the spelling - so things don't get confused due to Python lambda function. | 18 # Note the spelling - so things don't get confused due to Python lambda function. |
| 20 lammbda = sys.argv[ -8 ] | 19 lammbda = sys.argv[-8] |
| 21 order = sys.argv[ -7 ] | 20 order = sys.argv[-7] |
| 22 mean = sys.argv[ -6 ] | 21 mean = sys.argv[-6] |
| 23 sigma = sys.argv[ -5 ] | 22 sigma = sys.argv[-5] |
| 24 min = sys.argv[ -4 ] | 23 min = sys.argv[-4] |
| 25 max = sys.argv[ -3 ] | 24 max = sys.argv[-3] |
| 26 insertion = sys.argv[ -2 ] | 25 insertion = sys.argv[-2] |
| 27 tmp_output_path = sys.argv[ -1 ] | 26 tmp_output_path = sys.argv[-1] |
| 28 | |
| 29 error = False | |
| 30 | 27 |
| 31 # Open the input image file. | 28 # Open the input image file. |
| 32 image_plus = IJ.openImage( input ) | 29 image_plus = IJ.openImage(input_file) |
| 33 bit_depth = image_plus.getBitDepth() | 30 bit_depth = image_plus.getBitDepth() |
| 34 image_type = image_plus.getType() | 31 image_type = image_plus.getType() |
| 35 # Create an ImagePlus object for the image. | 32 # Create an ImagePlus object for the image. |
| 36 image_plus_copy = image_plus.duplicate() | 33 image_plus_copy = image_plus.duplicate() |
| 37 # Make a copy of the image. | 34 # Make a copy of the image. |
| 38 image_processor_copy = image_plus_copy.getProcessor() | 35 image_processor_copy = image_plus_copy.getProcessor() |
| 39 | 36 |
| 40 # Perform the analysis on the ImagePlus object. | 37 # Perform the analysis on the ImagePlus object. |
| 41 if noise == 'add_noise': | 38 if noise == 'add_noise': |
| 42 IJ.run( image_plus_copy, "Add Noise", "" ) | 39 IJ.run(image_plus_copy, "Add Noise", "") |
| 43 elif noise == 'add_specified_noise': | 40 elif noise == 'add_specified_noise': |
| 44 IJ.run( image_plus_copy, "Add Specified Noise", "standard=&standard_deviation" ) | 41 IJ.run(image_plus_copy, "Add Specified Noise", "standard=&standard_deviation") |
| 45 elif noise == 'salt_and_pepper': | 42 elif noise == 'salt_and_pepper': |
| 46 IJ.run( image_plus_copy, "Salt and Pepper", "" ) | 43 IJ.run(image_plus_copy, "Salt and Pepper", "") |
| 47 elif noise == 'despeckle': | 44 elif noise == 'despeckle': |
| 48 IJ.run( image_plus_copy, "Despeckle", "" ) | 45 IJ.run(image_plus_copy, "Despeckle", "") |
| 49 elif noise == 'remove_outliers': | 46 elif noise == 'remove_outliers': |
| 50 IJ.run( image_plus_copy, "Remove Outliers", "radius=&radius threshold=&threshold which=&which_outliers" ) | 47 IJ.run(image_plus_copy, "Remove Outliers", "radius=&radius threshold=&threshold which=&which_outliers") |
| 51 elif noise == 'remove_nans': | 48 elif noise == 'remove_nans': |
| 52 if bit_depth == 32: | 49 IJ.run(image_plus_copy, "Remove NaNs", "") |
| 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': | 50 elif noise == 'rof_denoise': |
| 62 if image_type == ImagePlus.GRAY32: | 51 IJ.run(image_plus_copy, "ROF Denoise", "") |
| 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': | 52 elif noise == 'randomj': |
| 69 if randomj == 'randomj_binomial': | 53 if randomj == 'randomj_binomial': |
| 70 IJ.run( image_plus_copy, "RandomJ Binomial", "trials=&trials probability=&probability insertion=&insertion" ) | 54 IJ.run(image_plus_copy, "RandomJ Binomial", "trials=&trials probability=&probability insertion=&insertion") |
| 71 elif randomj == 'randomj_exponential': | 55 elif randomj == 'randomj_exponential': |
| 72 IJ.run( image_plus_copy, "RandomJ Exponential", "lambda=&lammbda insertion=&insertion" ) | 56 IJ.run(image_plus_copy, "RandomJ Exponential", "lambda=&lammbda insertion=&insertion") |
| 73 elif randomj == 'randomj_gamma': | 57 elif randomj == 'randomj_gamma': |
| 74 IJ.run( image_plus_copy, "RandomJ Gamma", "order=&order insertion=&insertion" ) | 58 IJ.run(image_plus_copy, "RandomJ Gamma", "order=&order insertion=&insertion") |
| 75 elif randomj == 'randomj_gaussian': | 59 elif randomj == 'randomj_gaussian': |
| 76 IJ.run( image_plus_copy, "RandomJ Gaussian", "mean=&mean sigma=&sigma insertion=&insertion" ) | 60 IJ.run(image_plus_copy, "RandomJ Gaussian", "mean=&mean sigma=&sigma insertion=&insertion") |
| 77 elif randomj == 'randomj_poisson': | 61 elif randomj == 'randomj_poisson': |
| 78 IJ.run( image_plus_copy, "RandomJ Poisson", "mean=&mean insertion=&insertion" ) | 62 IJ.run(image_plus_copy, "RandomJ Poisson", "mean=&mean insertion=&insertion") |
| 79 elif randomj == 'randomj_uniform': | 63 elif randomj == 'randomj_uniform': |
| 80 IJ.run( image_plus_copy, "RandomJ Uniform", "min=&min max=&max insertion=&insertion" ) | 64 IJ.run(image_plus_copy, "RandomJ Uniform", "min=&min max=&max insertion=&insertion") |
| 81 | 65 |
| 82 if not error: | 66 # Save the ImagePlus object as a new image. |
| 83 # Save the ImagePlus object as a new image. | 67 IJ.saveAs(image_plus_copy, image_datatype, tmp_output_path) |
| 84 IJ.saveAs( image_plus_copy, image_datatype, tmp_output_path ) |
