view mask_image.xml @ 5:b178453ea8d1 draft

"planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 7d7a519c3a2cc612d38695b335d0f6c75a099de3"
author bgruening
date Fri, 26 Feb 2021 14:19:11 +0000
parents ca1421f7e3ed
children 667a513e67e4
line wrap: on
line source

<tool id="cp_mask_image" name="MaskImage" version="@CP_VERSION@+galaxy@VERSION_SUFFIX@">
    <description>hide portions of an image based on previously identified objects</description>

    <macros>
        <import>macros.xml</import>
        <token name="@VERSION_SUFFIX@">0</token>
    </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 writemi():
    _str = "\nMaskImage:[module_num:%d|svn_version:\\'Unknown\\'|variable_revision_number:3|show_window:False|notes:\\x5B\'Keep only nucleoli inside the nuclei\\'\\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']

    img_obj = params['con_img_obj']['img_obj']

    _str += FOURSPACES + "Use objects or an image as a mask?:%s\n" % params['con_img_obj']['img_obj']

    if img_obj == "Objects":
        _str += FOURSPACES + "Select object for mask:%s\n" % params['con_img_obj']['select_obj']
        _str += FOURSPACES + "Select image for mask:None\n"
    else:
        _str += FOURSPACES + "Select object for mask:None\n"
        _str += FOURSPACES + "Select image for mask:%s\n" % params['con_img_obj']['select_img']

    _str += FOURSPACES + "Invert the mask?:%s\n" % params['invert_mask']

    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.cppipe", "w") as f:
        f.writelines(lines)
        f.write(writemi())

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

    <inputs>

        <expand macro="input_pipeline_param" />
        <param name="input_image" label="Enter the name of the input image" type="text">
            <expand macro="text_validator" />
        </param>

        <param name="name_output_image" type="text" label="Enter the name of the resulting image">
            <expand macro="text_validator" />
        </param>

        <conditional name="con_img_obj">
            <param name="img_obj" label="Use objects or an image as a mask?" type="select">
                <help>
                    <![CDATA[
                        You can mask an image in two ways:
                        <br> - Objects: Using objects created by another module (for instance IdentifyPrimaryObjects).
                        The module will mask out all parts of the image that are not within one of the objects (unless you invert the mask).
                        <br> - Image: Using a binary image as the mask, where black portions of the image (false or zero-value pixels) will be masked out.
                        If the image is not binary, the module will use all pixels whose intensity is greater than 0.5 as the mask’s foreground (white area).
                        You can use Threshold instead to create a binary image with finer control over the intensity choice.
                        ]]>
                </help>
                <option value="Objects">Objects</option>
                <option value="Image">Image</option>
            </param>
            <when value="Objects">
                <param name="select_obj" label="Enter the name objects to mask the input image" type="text"/>
            </when>
            <when value="Image">
                <param name="select_img" label="Select image for mask" type="text"/>
            </when>
        </conditional>
        <param name="invert_mask" label="Invert the mask?" type="select" display="radio">
            <help>
                <![CDATA[
                    This option reverses the foreground/background relationship of the mask.
                    <br> - Select "No" to produce the mask from the foreground (white portion) of the masking image or the area within the masking objects.
                    <br> - Select "Yes" to instead produce the mask from the background (black portions) of the masking image or the area outside the masking objects.
                    ]]>
            </help>
            <option value="Yes">Yes</option>
            <option value="No">No</option>
        </param>
    </inputs>

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

    <tests>
        <test>
            <expand macro="test_input_pipeline_param"/>
            <param name="input_image" value="DNAdarkholes" />
            <param name="name_output_image" value="MaskDNAdarkholes" />
            <conditional name="con_img_obj">
                <param name="img_obj" value="Objects" />
                <param name="select_obj" value="Nuclei" />
            </conditional>
            <param name="invert_mask" value="No" />
            <expand macro="test_out_file" file="mask_image.cppipe" />
        </test>
    </tests>

    <help>
        <![CDATA[
            .. class:: infomark

            **What it does**

            This tool masks an image so you can use the mask downstream in the pipeline.
            The masked image is based on the original image and the masking object or image that is selected.
            If using a masking image, the mask is composed of the foreground (white portions);
            if using a masking object, the mask is composed of the area within the object.
            Note that the image created by this tool for further processing downstream is grayscale.
            If a binary mask is desired in subsequent tools, use the Threshold tool instead of MaskImage.

            @COMMON_HELP@
            ]]>
    </help>

    <expand macro="citations" />

</tool>