diff measure_image_quality.xml @ 0:26945c55ddff draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 6d73056a625002d0275b5a9a90a9fae329ce47f1"
author bgruening
date Thu, 26 Mar 2020 16:47:42 -0400
parents
children 4dcd464c22ff
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/measure_image_quality.xml	Thu Mar 26 16:47:42 2020 -0400
@@ -0,0 +1,276 @@
+<tool id="cp_measure_image_quality" name="MeasureImageQuality" version="@CP_VERSION@">
+    <description>measures features that indicate image quality</description>
+  
+    <macros>
+        <import>macros.xml</import>
+        <xml name="macro_calc_threshold">
+            <conditional name="con_use_all_methods">
+                <param name="use_all_methods" type="select" display="radio" label="Use all thresholding methods?">
+                    <option value="Yes">Yes</option>
+                    <option value="No">No</option>
+                </param>
+                <when value="Yes" />
+                <when value="No">
+                    <repeat name="rpt_threshold_method" title="Add another threshold method">
+                        <conditional name="con_threshold_methods">
+                            <param name="select_threshold_method" type="select" label="Select a thresholding method">
+                                <option value="Otsu">Otsu</option>
+                                <option value="MoG">MoG</option>
+                                <option value="Background">Background</option>
+                                <option value="RobustBackground">RobustBackground</option>
+                                <option value="RidlerCalvard">RidlerCalvard</option>
+                                <option value="Kapur">Kapur</option>
+                                <option value="MCT">MCT</option>
+                            </param>
+                            <when value="Otsu">
+                                <expand macro="otsu_method" />
+                            </when>
+                            <when value="MoG">
+                                <expand macro="mog_method" />
+                            </when>
+                            <when value="Background" />
+                            <when value="RobustBackground" />
+                            <when value="RidlerCalvard" />
+                            <when value="Kapur" />
+                            <when value="MCT" />
+                        </conditional>
+                    </repeat>
+                </when>
+            </conditional>
+        </xml>
+
+        <xml name="otsu_method">
+            <param name="otsu_weighted_entropy" label="Minimize the weighted variance or the entropy?" type="select">
+                <option value="Weighted variance">Weighted variance</option>
+                <option value="Entropy">Entropy</option>
+            </param>
+            <conditional name="con_threshold_classes">
+                <param name="threshold_classes" label="Two-class or three-class thresholding?" type="select">
+                    <option value="Two classes">Two classes</option>
+                    <option value="Three classes">Three classes</option>
+                </param>
+                <when value="Three classes">
+                    <param name="pixel_foreground_or_background" label="Assign pixels in the middle intensity class to the foreground or the background?" type="select">
+                        <option value="Foreground">Foreground</option>
+                        <option value="Background">Background</option>
+                    </param>
+                </when>
+                <when value="Two classes" />
+            </conditional>
+        </xml>
+
+        <xml name="mog_method">
+            <param name="mog_fraction_cover" label="Typical fraction of the image covered by objects" type="float" value="0.1" min="0.0" max="1.0"/>
+        </xml>
+    </macros>
+    
+    <expand macro="py_requirements"/>
+    <expand macro="cmd_modules" />
+
+    <configfiles>
+        <inputs name="inputs" />
+
+        <configfile name="script_file">
+import json
+import sys
+import os
+
+FOURSPACES=@SPACES@
+
+input_json_path = sys.argv[1]
+input_pipeline= sys.argv[2]
+
+params = json.load(open(input_json_path, "r"))
+
+def writemiq():
+    _str = "\nMeasureImageQuality:[module_num:%d|svn_version:\\'Unknown\\'|variable_revision_number:5|show_window:False|notes:\\x5B\\x5D|batch_state:array(\\x5B\\x5D, dtype=uint8)|enabled:True|wants_pause:False]\n" % new_count
+
+    for_images = params['calc_for_images']
+    selected_images = ""
+
+    if for_images == "All loaded images":
+        _str += FOURSPACES + "Calculate metrics for which images?:%s\n" % for_images
+    else:
+        _str += FOURSPACES + "Calculate metrics for which images?:Select...\n"
+        selected_images = params['calc_for_images']
+
+    image_count = 1
+    _str += FOURSPACES + "Image count:%d\n" % image_count
+
+    if 'rpt_blur_measurements' in params['con_calc_blur_metrics']:
+        scale_count = len(params['con_calc_blur_metrics']['rpt_blur_measurements'])
+    else:
+        scale_count = 1
+
+    _str += FOURSPACES + "Scale count:%d\n" % scale_count
+
+    calc_threshold = params['con_calc_threshold']['calc_threshold']
+    if calc_threshold == "No":
+        threshold_count = 1
+        all_method = "No"
+    else:
+        all_method = params['con_calc_threshold']['con_use_all_methods']['use_all_methods']
+        if all_method == "No":
+            threshold_count = 1
+        else:
+            threshold_count = len(params['con_calc_threshold']['con_use_all_methods']['rpt_threshold_method'])
+
+    _str += FOURSPACES + "Threshold count:%d\n" % threshold_count
+
+    _str += FOURSPACES + "Select the images to measure:%s\n" % selected_images
+
+    include_rescaling = params['include_rescaling_value']
+    _str += FOURSPACES + "Include the image rescaling value?:%s\n" % include_rescaling
+
+    calc_blur_metrics = params['con_calc_blur_metrics']['calc_blur_metrics']
+    _str += FOURSPACES + "Calculate blur metrics?:%s\n" % calc_blur_metrics
+
+    if calc_blur_metrics == "Yes" and 'rpt_blur_measurements' in params['con_calc_blur_metrics']:
+        for bm in params['con_calc_blur_metrics']['rpt_blur_measurements']:
+            _str += FOURSPACES + "Spatial scale for blur measurements:%d\n" % bm['blur_measurements']
+
+    calc_saturation = params['calc_saturation_metrics']
+    _str += FOURSPACES + "Calculate saturation metrics?:%s\n" % calc_saturation
+
+    calc_intensity = params['calc_intensity_metrics']
+    _str += FOURSPACES + "Calculate intensity metrics?:%s\n" % calc_intensity
+
+    calc_threshold = params['con_calc_threshold']['calc_threshold']
+    _str += FOURSPACES + "Calculate thresholds?:%s\n" % calc_threshold
+    _str += FOURSPACES + "Use all thresholding methods?:%s\n" % all_method
+
+    if all_method == "No":
+        for method in params['con_calc_threshold']['con_use_all_methods']['rpt_threshold_method']:
+            _str += FOURSPACES + "Select a thresholding method:%s\n" % method['con_threshold_methods']['select_threshold_method']
+
+            fraction_cover = method['con_threshold_methods']['mog_fraction_cover'] if 'mog_fraction_cover' in method[
+                'con_threshold_methods'] else 0.1
+
+            tt_classes = method['con_threshold_methods']['con_threshold_classes'][
+                'threshold_classes'] if 'con_threshold_classes' in method['con_threshold_methods'] else 'Two classes'
+
+            minimize = method['con_threshold_methods']['otsu_weighted_entropy'] if 'otsu_weighted_entropy' in method[
+                'con_threshold_methods'] else 'Entropy'
+
+            if tt_classes == "Three classes":
+                pixel_intensity = method['con_threshold_methods']['con_threshold_classes'][
+                    'pixel_foreground_or_background']
+            else:
+                pixel_intensity = "Foreground"
+
+            _str += FOURSPACES + "Typical fraction of the image covered by objects:%.1f\n" % fraction_cover
+
+            _str += FOURSPACES + "Two-class or three-class thresholding?:%s\n" % tt_classes
+
+            _str += FOURSPACES + "Minimize the weighted variance or the entropy:%s\n" % minimize
+
+            _str += FOURSPACES + "Assign pixels in the middle intensity class to the foreground or the background?:%s\n" % pixel_intensity
+
+    return _str
+
+with open(input_pipeline) as fin:
+    lines = fin.readlines()
+
+    k, v = lines[4].strip().split(':')
+
+    module_count = int(v)
+    new_count = module_count + 1
+    lines[4] = k + ":%d\n" % new_count
+
+    with open("output", "w") as f:
+        f.writelines(lines)
+        f.write(writemiq())
+
+f.close()
+        </configfile>    
+    </configfiles>
+  
+    <inputs>
+        <expand macro="input_pipeline_macro" />
+        <param name="calc_for_images" type="text" label="Calculate metrics for which images?" value="All loaded images">
+            <expand macro="text_validator" />
+        </param>
+        <param name="include_rescaling_value" type="select" display="radio" label="Include the image rescaling value?">
+            <option value="Yes">Yes</option>
+            <option value="No">No</option>
+        </param>
+
+        <conditional name="con_calc_blur_metrics">
+            <param name="calc_blur_metrics" type="select" display="radio" label="Calculate blur metrics?">
+                <option value="Yes">Yes</option>
+                <option value="No">No</option>
+            </param>
+            <when value="Yes">
+                <repeat name="rpt_blur_measurements" title="Add another scale">
+                    <param name="blur_measurements" label="Spatial scale for blur measurements" type="integer" value="20"/>
+                </repeat>
+            </when>
+            <when value="No" />
+        </conditional>
+        
+        <param name="calc_intensity_metrics" type="select" display="radio" label="Calculate intensity metrics?">
+            <option value="Yes">Yes</option>
+            <option value="No">No</option>
+        </param>
+        <param name="calc_saturation_metrics" type="select" display="radio" label="Calculate saturation metrics">
+            <option value="Yes">Yes</option>
+            <option value="No">No</option>
+        </param>
+
+        <conditional name="con_calc_threshold">
+            <param name="calc_threshold" type="select" display="radio" label="Calculate thresholds?">
+                <option value="Yes">Yes</option>
+                <option value="No">No</option>
+            </param>
+            <when value="Yes">
+                <expand macro="macro_calc_threshold" />
+            </when>
+            <when value="No" />
+        </conditional>
+
+    </inputs>
+
+    <outputs>
+        <expand macro="output_pipeline_macro" />
+    </outputs>
+
+    <tests>
+        <test>
+            <expand macro="test_input_pipeline_param" />
+            
+            <param name="calc_for_images" value="All loaded images" />
+            <param name="include_rescaling_value" value="Yes" />
+
+            <conditional name="con_calc_blur_metrics">
+                <param name="calc_blur_metrics" value="Yes" />
+                <repeat name="rpt_blur_measurements">
+                    <param name="blur_measurements" value="20" />
+                </repeat>
+            </conditional>
+
+            <param name="calc_intensity_metrics" value="Yes" />
+            <param name="calc_saturation_metrics" value="Yes" />
+                <conditional name="con_calc_threshold">
+                    <param name="calc_threshold" value="Yes" />
+                </conditional>
+
+                <conditional name="con_use_all_methods">
+                    <param name="use_all_methods" value="No" />
+                    <repeat name="rpt_threshold_method">
+                        <conditional name="con_threshold_methods">
+                            <param name="select_threshold_method" value="Otsu" />
+                            <param name="otsu_weighted_entropy" value="Weighted variance" />
+                            <conditional name="con_threshold_classes">
+                                <param name="threshold_classes" value="Two classes" />
+                            </conditional>
+                        </conditional>
+                    </repeat>
+                </conditional>
+            
+            <expand macro="test_out_file" file="measure_image_quality.txt" />
+        </test>
+    </tests>
+    
+    <expand macro="help" module="MeasureImageQuality" />
+    <expand macro="citations" />  
+</tool>