view auto_threshold.xml @ 8:699a5e9146b3 draft default tip

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit c86a1b93cb7732f7331a981d13465653cc1a2790
author imgteam
date Wed, 24 Apr 2024 08:11:33 +0000
parents e5c8e7e72373
children
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@">3</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>
        <requirement type="package" version="0.1">giatools</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 irregular files -->
        <test>
            <param name="input" value="sample2.tif"/>
            <param name="method_id" value="otsu"/>
            <param name="invert_output" value="False"/>
            <expand macro="tests/binary_image_diff" name="output" value="out5.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>