view auto_threshold.xml @ 7:e5c8e7e72373 draft

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit c045f067a57e8308308cf6329060c7ccd3fc372f
author imgteam
date Thu, 04 Apr 2024 15:23:18 +0000
parents 8bccb36e055a
children 699a5e9146b3
line wrap: on
line source

<tool id="ip_threshold" name="Threshold image" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.05">
    <description>with scikit-image</description>
    <macros>
        <import>creators.xml</import>
        <import>tests.xml</import>
        <token name="@TOOL_VERSION@">0.18.1</token>
        <token name="@VERSION_SUFFIX@">2</token>
        <xml name="inputs/offset">
            <param name="offset" type="float" value="0" label="Offset" help="Offset to be added to the automatically determined threshold value. Positive values will increase the threshold (and thus reduce the amount of values above the threshold)." />
        </xml>
    </macros>
    <creator>
        <expand macro="creators/bmcv"/>
    </creator>
    <edam_operations>
        <edam_operation>operation_3443</edam_operation>
    </edam_operations>
    <xrefs>
        <xref type="bio.tools">scikit-image</xref>
        <xref type="biii">scikit-image</xref>
    </xrefs>
    <requirements> 
        <requirement type="package" version="@TOOL_VERSION@">scikit-image</requirement>
        <requirement type="package" version="2020.10.1">tifffile</requirement>
    </requirements>
    <command detect_errors="aggressive">
    <![CDATA[
    python '$__tool_directory__/auto_threshold.py'
    '$input'
    ./out.tif
    '$th_method.method_id'
    '$th_method.block_size'
    '$th_method.offset'
    '$th_method.threshold'
    $invert_output
    ]]>
    </command>
    <inputs>
        <param name="input" type="data" format="tiff,png" label="Input image" />
        <conditional name="th_method">
            <param name="method_id" type="select" label="Thresholding method">
                <option value="manual">Manual</option>
                <option value="otsu" selected="True">Globally adaptive / Otsu</option>
                <option value="li">Globally adaptive / Li's Minimum Cross Entropy</option>
                <option value="isodata">Globally adaptive / Isodata</option>
                <option value="yen">Globally adaptive / Yen</option>
                <option value="loc_gaussian">Locally adaptive / Gaussian</option>
                <option value="loc_median">Locally adaptive / Median</option>
                <option value="loc_mean">Locally adaptive / Mean</option>
            </param>
            <when value="manual">
                <param name="threshold" type="float" value="0" label="Threshold value" />
                <param name="block_size" type="hidden" value="0" />
                <param name="offset" type="hidden" value="0" />
            </when>
            <when value="otsu">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="hidden" value="0" />
                <expand macro="inputs/offset" />
            </when>
            <when value="li">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="hidden" value="0" />
                <expand macro="inputs/offset" />
            </when>
            <when value="isodata">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="hidden" value="0" />
                <expand macro="inputs/offset" />
            </when>
            <when value="yen">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="hidden" value="0" />
                <expand macro="inputs/offset" />
            </when>
            <when value="loc_gaussian">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="integer" value="5" label="Odd size of pixel neighborhood for determining the threshold" />
                <expand macro="inputs/offset" />
            </when>
            <when value="loc_median">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="integer" value="5" label="Odd size of pixel neighborhood for determining the threshold" />
                <expand macro="inputs/offset" />
            </when>
            <when value="loc_mean">
                <param name="threshold" type="hidden" value="0" />
                <param name="block_size" type="integer" value="5" label="Odd size of pixel neighborhood for determining the threshold" />
                <expand macro="inputs/offset" />
            </when>
        </conditional>
        <param name="invert_output" type="boolean" checked="false" truevalue="--invert_output" falsevalue="" label="Invert output labels" help="Pixels are usually assigned the label 0 if the pixel value is below (or equal to) the threshold, and 255 if it is above the threshold. If this option is activated, pixels are assigned the label 255 if the pixel value is below (or equal to) the threshold, and 0 if it is above the threshold." />
    </inputs>
    <outputs>
       <data format="tiff" name="output" from_work_dir="out.tif" />
    </outputs>
    <tests>
        <!-- Tests for single-channel images -->
        <test>
            <param name="input" value="sample.tif"/>
            <param name="method_id" value="loc_gaussian"/>
            <param name="block_size" value="51"/>
            <param name="invert_output" value="False"/>
            <expand macro="tests/binary_image_diff" name="output" value="out1.tif" ftype="tiff"/>
        </test>
        <test>
            <param name="input" value="sample.tif"/>
            <param name="method_id" value="loc_gaussian"/>
            <param name="block_size" value="51"/>
            <param name="offset" value="1"/>
            <param name="invert_output" value="False"/>
            <expand macro="tests/binary_image_diff" name="output" value="out2.tif" ftype="tiff"/>
        </test>
        <test>
            <param name="input" value="sample.tif"/>
            <param name="method_id" value="otsu"/>
            <param name="invert_output" value="False"/>
            <expand macro="tests/binary_image_diff" name="output" value="out3.tif" ftype="tiff"/>
        </test>
        <test>
            <param name="input" value="sample.tif"/>
            <param name="method_id" value="manual"/>
            <param name="threshold" value="64"/>
            <param name="invert_output" value="True"/>
            <expand macro="tests/binary_image_diff" name="output" value="out4.tif" ftype="tiff"/>
        </test>
        <!-- Tests for multi-channel images -->
        <test expect_failure="true">
            <param name="input" value="rgb.png"/>
        </test>
    </tests>
    <help>

        **Applies a standard thresholding algorithm to a 2-D single-channel image. Yields a binary image.**

        The thresholding algorithm automatically determines a threshold value (unless manual thresholding is used).
        The input image is then thresholded, by assigning white (pixel value 255) to image regions above the determined threshold,
        and black (pixel value 0) to image regions below or equal to the determined threshold.

        The assignment of black and white to image regions below and above the threshold is inverted, if the corresponding option is set.

    </help>
    <citations>
        <citation type="doi">10.1016/j.jbiotec.2017.07.019</citation>
    </citations>
</tool>