view enhance_or_suppress_features.xml @ 0:e28d0b4ed79a draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 6d73056a625002d0275b5a9a90a9fae329ce47f1"
author bgruening
date Thu, 26 Mar 2020 20:07:02 +0000
parents
children b7014aafa455
line wrap: on
line source

<tool id="cp_enhance_or_suppress_features" name="EnhanceOrSuppressFeatures" version="@CP_VERSION@">
    <description>enhances or suppresses certain image features, which can improve subsequent identification of objects</description>

    <macros>
        <import>macros.xml</import>

        <xml name="feature_speckles">
            <param name="speckles_feature_size" label="Feature size" type="integer" value="10" />
            <param name="speed_accuracy" label="Speed and accuracy" type="select">
                <option value="Fast">Fast</option>
                <option value="Slow">Slow</option>
            </param>
        </xml>
        <xml name="feature_neurites">
            <conditional name="con_feature_neurites">
                <param name="enhancement_method" label="Enhancement method" type="select">
                    <option value="Tubeness">Tubeness</option>
                    <option value="Line structures">Line structures</option>
                </param>
                <when value="Tubeness">
                    <param name="tube_smoothing_scale" label="Smoothing scale" type="float" value="2.0" min="0.0" />
                </when>
                <when value="Line structures">
                    <param name="line_structures_feature_size" label="Feature size" type="integer" value="10" />
                </when>
            </conditional>
        </xml>
        <xml name="feature_darkholes">
            <param name="min_hole_size" label="Minimum hole size" type="integer" value="1" min="0"/>
            <param name="max_hole_size" label="Maximum hole size" type="integer" value="15"/>
        </xml>  
        <xml name="feature_circle">
            <param name="circle_feature_size" label="Feature size" type="integer" value="10"/>
        </xml>     
        <xml name="feature_texture">
            <param name="texture_smoothing_scale" label="Smoothing scale" type="float" value="2.0"  min="0.0"/>
        </xml>
        <xml name="feature_dic">
            <param name="dic_smoothing_scale" label="Smoothing scale" type="float" value="2.0" min="0.0" />
            <param name="dic_shear_angle" label="Shear angle" type="float" value="0.0" min="0.0" />
            <param name="dic_decay" label="Decay" type="float" value="0.95" min="0.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 writeesf():
    _str = "\nEnhanceOrSuppressFeatures:[module_num:%d|svn_version:\\'Unknown\\'|variable_revision_number:6|show_window:False|notes:\\x5B\\'Identify nucleoli\\', \\'PARAMS\\x3A Range of hole sizes\'\\x5D|batch_state:array(\\x5B\\x5D, dtype=uint8)|enabled:True|wants_pause:False]\n" % new_count
    _str += FOURSPACES + "Select the input image:%s\n" % params['input_image']
    _str += FOURSPACES + "Name the output image:%s\n" % params['name_output_image']

    operation = params['con_enhance_suppress']['select_operation']
    _str += FOURSPACES + "Select the operation:%s\n" % operation

    con_feature_type = params['con_enhance_suppress']['con_feature_type']

    if operation == "Suppress":
        _str += FOURSPACES + "Feature size:%s\n" % params['con_enhance_suppress']['feature_size']
        ## Below values are not used in this case, but required by CP pipeline file to be
        ## present as some sorts of "default" values
        _str += FOURSPACES + "Feature type:Speckles"
        _str += FOURSPACES + "Range of hole sizes:1,10"
        _str += FOURSPACES + "Smoothing scale:2.0"
        _str += FOURSPACES + "Shear angle:0.0"
        _str += FOURSPACES + "Decay:0.95"
        _str += FOURSPACES + "Enhancement method:Tubeness"
        _str += FOURSPACES + "Speed and accuracy:Fast"
    elif operation == "Enhance":
        feature_type = con_feature_type['feature_type']

        if feature_type == "Speckles":
            _str += FOURSPACES + "Feature size:%d\n" % con_feature_type['speckles_feature_size']
            _str += FOURSPACES + "Feature type:%s\n" % feature_type
            _str += FOURSPACES + "Range of hole sizes:1,10\n"
            _str += FOURSPACES + "Smoothing scale:2.0\n"
            _str += FOURSPACES + "Shear angle:0.0\n"
            _str += FOURSPACES + "Decay:0.95\n"
            _str += FOURSPACES + "Enhancement method:Tubeness\n"
            _str += FOURSPACES + "Speed and accuracy:%s\n" % con_feature_type['speed_accuracy']
        elif feature_type == "Neurites":
            enhancement_method = con_feature_type['con_feature_neurites']['enhancement_method']
            if enhancement_method == "Tubeness":
                _str += FOURSPACES + "Feature size:10\n"
                _str += FOURSPACES + "Feature type:%s\n" % feature_type
                _str += FOURSPACES + "Range of hole sizes:1,10\n"
                _str += FOURSPACES + "Smoothing scale:%.1f\n" % con_feature_type['con_feature_neurites']['tube_smoothing_scale']
                _str += FOURSPACES + "Shear angle:0.0\n"
                _str += FOURSPACES + "Decay:0.95\n"
                _str += FOURSPACES + "Enhancement method:%s\n" % enhancement_method
                _str += FOURSPACES + "Speed and accuracy:Fast\n"
            elif enhancement_method == "Line structures":
                _str += FOURSPACES + "Feature size:%s\n" % con_feature_type['con_feature_neurites']['line_structures_feature_size']
                _str += FOURSPACES + "Feature type:%s\n" % feature_type
                _str += FOURSPACES + "Range of hole sizes:1,10\n"
                _str += FOURSPACES + "Smoothing scale:2.0\n"
                _str += FOURSPACES + "Shear angle:0.0\n"
                _str += FOURSPACES + "Decay:0.9\n5"
                _str += FOURSPACES + "Enhancement method:%s\n" % enhancement_method
                _str += FOURSPACES + "Speed and accuracy:Fast\n"
        elif feature_type == "Dark holes":
            _str += FOURSPACES + "Feature size:10\n"
            _str += FOURSPACES + "Feature type:%s\n" % feature_type
            _str += FOURSPACES + "Range of hole sizes:%d,%d\n" %(con_feature_type['min_hole_size'],con_feature_type['max_hole_size'])
            _str += FOURSPACES + "Smoothing scale:2.0\n"
            _str += FOURSPACES + "Shear angle:0.0\n"
            _str += FOURSPACES + "Decay:0.95\n"
            _str += FOURSPACES + "Enhancement method:Tubeness\n"
            _str += FOURSPACES + "Speed and accuracy:Fast\n"
        elif feature_type == "Circles":
            _str += FOURSPACES + "Feature size:%d\n" % con_feature_type['circle_feature_size']
            _str += FOURSPACES + "Feature type:%s\n" % feature_type
            _str += FOURSPACES + "Range of hole sizes:1,10\n"
            _str += FOURSPACES + "Smoothing scale:2.0\n"
            _str += FOURSPACES + "Shear angle:0.0\n"
            _str += FOURSPACES + "Decay:0.95\n"
            _str += FOURSPACES + "Enhancement method:Tubeness\n"
            _str += FOURSPACES + "Speed and accuracy:Fast\n"
        elif feature_type == "Texture":
            _str += FOURSPACES + "Feature size:%d\n" % con_feature_type['circle_feature_size']
            _str += FOURSPACES + "Feature type:%s\n" % feature_type
            _str += FOURSPACES + "Range of hole sizes:1,10\n"
            _str += FOURSPACES + "Smoothing scale:%.1f\n" % con_feature_type['texture_smoothing_scale']
            _str += FOURSPACES + "Shear angle:0.0\n"
            _str += FOURSPACES + "Decay:0.95\n"
            _str += FOURSPACES + "Enhancement method:Tubeness\n"
            _str += FOURSPACES + "Speed and accuracy:Fast\n"
        elif feature_type == "DIC":
            _str += FOURSPACES + "Feature size:10\n"
            _str += FOURSPACES + "Feature type:%s\n" % feature_type
            _str += FOURSPACES + "Range of hole sizes:1,10\n"
            _str += FOURSPACES + "Smoothing scale:%.1f\n" % con_feature_type['texture_smoothing_scale']
            _str += FOURSPACES + "Shear angle:%.1f\n" % con_feature_type['dic_shear_angle']
            _str += FOURSPACES + "Decay:%.2f\n" % con_feature_type['dic_decay']
            _str += FOURSPACES + "Enhancement method:Tubeness\n"
            _str += FOURSPACES + "Speed and accuracy:Fast\n"

    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(writeesf())

f.close()
        </configfile>    
    </configfiles>

    <inputs>

      <expand macro="input_pipeline_macro"/>
      <param name="input_image" type="text" label="Select the input image" />

      <param name="name_output_image" type="text" label="Name the output image" />

      <conditional name="con_enhance_suppress">
        <param name="select_operation" label="Select the operation" type="select">
          <option value="Enhance">Enhance</option>
          <option value="Suppress">Suppress</option>
        </param>

        <when value="Enhance">
           <conditional name="con_feature_type">
            <param name="feature_type" type="select" label="Feature type">
              <option value="Speckles">Speckles</option>
              <option value="Neurites">Neurites</option>
              <option value="Dark holes">Dark holes</option>
              <option value="Circles">Circles</option>
              <option value="Texture">Texture</option>
              <option value="DIC">DIC</option>
            </param>
             <when value="Speckles">
              <expand macro="feature_speckles" />
            </when>
            <when value="Neurites">
              <expand macro="feature_neurites" />
            </when>
            <when value="Dark holes">
              <expand macro="feature_darkholes" />
            </when>
            <when value="Circles">
              <expand macro="feature_circle" />
            </when>
            <when value="Texture">
              <expand macro="feature_texture" />
            </when>
            <when value="DIC">
              <expand macro="feature_dic" />
            </when> 
          </conditional>
        </when>

        <when value="Suppress">
          <param name="feature_size" type="integer" label="Feature size" value="10"/>
        </when>

      </conditional>
      
  </inputs>

  <outputs>
      <expand macro="output_pipeline_macro" />
  </outputs>


  <tests>
      <test>
        <expand macro="test_input_pipeline_param" />
        <param name="input_image" value="DNA" />
        <param name="name_output_image" value="DNAdarkholes" />
        <conditional name="con_enhance_suppress">
            <param name="select_operation" value="Enhance" />
            <conditional name="con_feature_type">
                <param name="feature_type" value="Dark holes" />
                <param name="min_hole_size" value="1" />
                <param name="max_hole_size" value="15" />
            </conditional>
        </conditional>

        <expand macro="test_out_file" file="enhance_or_suppress_features.txt" />
      </test>
  </tests>

  <expand macro="help" module="EnhanceOrSuppressFeatures" />
  <expand macro="citations" />
</tool>