view cut.xml @ 20:fbf99087e067 draft default tip

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/text_processing/text_processing commit c4f50d1ee81c1618344ede1f04a46a28d8068bcc
author bgruening
date Thu, 28 Mar 2024 13:20:16 +0000
parents 12615d397df7
children
line wrap: on
line source

<tool id="tp_cut_tool" name="Advanced Cut" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">
    <description>columns from a table (cut)</description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="requirements" />
    <version_command>cut --version | head -n 1</version_command>
    <command>
<![CDATA[
        cut
            $complement
            $cut_type_options.cut_element
            #if $cut_type_options.cut_element != '-f'
                '$cut_type_options.list'
            #else
                #if str($cut_type_options.delimiter) != '':
                    -d"$cut_type_options.delimiter"
                #end if
                '$cut_type_options.colnames_option.list'
            #end if
            '$input'
        > '$output'
]]>
    </command>
    <inputs>
        <param name="input" format="txt" type="data" label="File to cut" />
        <param name="complement" type="select" label="Operation">
            <option value="">Keep</option>
            <option value="--complement">Discard</option>
        </param>
        <conditional name="cut_type_options">
            <param name="cut_element" type="select" label="Cut by">
                <option value="-f">fields</option>
                <option value="-c">characters</option>
            </param>
            <when value="-f">
                <param name="delimiter" type="select" label="Delimited by">
                    <option value="">Tab</option>
                    <option value=" ">Whitespace</option>
                    <option value=".">Dot</option>
                    <option value=",">Comma</option>
                    <option value="-">Dash</option>
                    <option value="_">Underscore</option>
                    <option value="|">Pipe</option>
                </param>
                <conditional name="colnames_option">
                    <param name="header" type="select" label="Is there a header for the data's columns ?">
                        <option value="Y">Yes</option>
                        <option value="N" selected="true">No</option>
                    </param>
                    <when value="Y">
                        <param name="list" type="data_column" data_ref="input" use_header_names="true" multiple="true" label="List of Fields" help="(-f)" />
                    </when>
                    <when value="N">
                        <param name="list" type="data_column" data_ref="input" multiple="true" label="List of Fields" help="(-f)" />
                    </when>
                </conditional>
            </when>
            <when value="-c">
                <param name="list" type="text" value="" label="List of characters" help="These will be kept/discarded (depending on 'operation'). &lt;BR /&gt; Examples: 1,3,4 or 2-5">
                    <sanitizer>
                        <valid initial="string.printable">
                            <remove value="&apos;"/>
                        </valid>
                    </sanitizer>
                </param>
            </when>
        </conditional>
    </inputs>
    <outputs>
        <!--<data format="tabular" name="output" />-->
        <!-- WIP, not sure that will work with the complement option -->
        <data format="tabular" name="output">
            <actions>
                <conditional name="cut_type_options.cut_element">
                    <!-- fields -->
                    <when value="-f">
                        <conditional name="cut_type_options.delimiter">
                        <when value="T">
                            <conditional name="input">
                                <when datatype_isinstance="interval">
                                    <action type="format" default="tabular">
                                        <option type="from_param" name="list" column="0" offset="0"> <!-- chromCol is 1-->
                                            <filter type="insert_column" column="0" value="interval"/>
                                            <filter type="insert_column" ref="list" /> <!-- startCol -->
                                            <filter type="insert_column" ref="list" /> <!-- endCol -->

                                            <filter type="multiple_splitter" column="1" separator=","/>
                                            <filter type="column_strip" column="1"/> <!-- get rid of all external whitespace -->
                                            <filter type="string_function" column="1" name="lower" />
                                            <filter type="param_value" column="1" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                            <filter type="column_strip" column="1" strip="c"/> <!-- get rid of c's  -->
                                            <filter type="boolean" column="1" cast="int" />

                                            <filter type="multiple_splitter" column="2" separator=","/>
                                            <filter type="column_strip" column="2"/> <!-- get rid of all external whitespace -->
                                            <filter type="string_function" column="2" name="lower" />
                                            <filter type="param_value" column="2" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                            <filter type="column_strip" column="2" strip="c"/> <!-- get rid of c's  -->
                                            <filter type="boolean" column="2" cast="int" />

                                            <filter type="multiple_splitter" column="3" separator=","/>
                                            <filter type="column_strip" column="3"/> <!-- get rid of all external whitespace -->
                                            <filter type="string_function" column="3" name="lower" />
                                            <filter type="param_value" column="3" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                            <filter type="column_strip" column="3" strip="c"/> <!-- get rid of c's  -->
                                            <filter type="boolean" column="3" cast="int" />

                                            <filter type="metadata_value" ref="input" name="chromCol" column="1" />
                                            <filter type="metadata_value" ref="input" name="startCol" column="2" />
                                            <filter type="metadata_value" ref="input" name="endCol" column="3" />
                                        </option>
                                    </action>
                                </when>
                            </conditional>
                        </when>
                        </conditional>        
                        <conditional name="output">
                            <when datatype_isinstance="interval">
                                <action type="metadata" name="chromCol">
                                    <option type="from_param" name="list" column="0" offset="0"> <!-- chromCol is 0-->
                                        <filter type="multiple_splitter" column="0" separator=","/>
                                        <filter type="column_strip" column="0"/> <!-- get rid of all external whitespace -->
                                        <filter type="string_function" column="0" name="lower" />
                                        <filter type="param_value" column="0" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                        <filter type="column_strip" column="0" strip="c"/> <!-- get rid of c's  -->
                                        <filter type="insert_column" value="1" iterate="True" column="0"/>
                                        <filter type="boolean" column="1" cast="int" />
                                        <filter type="metadata_value" ref="input" name="chromCol" column="1" />
                                    </option>
                                </action>

                                <action type="metadata" name="startCol">
                                    <option type="from_param" name="list" column="0" offset="0"> <!-- startCol is 0-->
                                        <filter type="multiple_splitter" column="0" separator=","/>
                                        <filter type="column_strip" column="0"/> <!-- get rid of all external whitespace -->
                                        <filter type="string_function" column="0" name="lower" />
                                        <filter type="param_value" column="0" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                        <filter type="column_strip" column="0" strip="c"/> <!-- get rid of c's  -->
                                        <filter type="insert_column" value="1" iterate="True" column="0"/>
                                        <filter type="boolean" column="1" cast="int" />
                                        <filter type="metadata_value" ref="input" name="startCol" column="1" />
                                    </option>
                                </action>

                                <action type="metadata" name="endCol">
                                    <option type="from_param" name="list" column="0" offset="0"> <!-- endCol is 0-->
                                        <filter type="multiple_splitter" column="0" separator=","/>
                                        <filter type="column_strip" column="0"/> <!-- get rid of all external whitespace -->
                                        <filter type="string_function" column="0" name="lower" />
                                        <filter type="param_value" column="0" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                        <filter type="column_strip" column="0" strip="c"/> <!-- get rid of c's  -->
                                        <filter type="insert_column" value="1" iterate="True" column="0"/>
                                        <filter type="boolean" column="1" cast="int" />
                                        <filter type="metadata_value" ref="input" name="endCol" column="1" />
                                    </option>
                                </action>

                                <action type="metadata" name="nameCol" default="0">
                                    <option type="from_param" name="list" column="0" offset="0"> <!-- nameCol is 0-->
                                        <filter type="multiple_splitter" column="0" separator=","/>
                                        <filter type="column_strip" column="0"/> <!-- get rid of all external whitespace -->
                                        <filter type="string_function" column="0" name="lower" />
                                        <filter type="param_value" column="0" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                        <filter type="column_strip" column="0" strip="c"/> <!-- get rid of c's  -->
                                        <filter type="insert_column" value="1" iterate="True" column="0"/>
                                        <filter type="boolean" column="1" cast="int" />
                                        <filter type="metadata_value" ref="input" name="nameCol" column="1" />
                                    </option>
                                </action>

                                <action type="metadata" name="strandCol" default="0">
                                    <option type="from_param" name="list" column="0" offset="0"> <!-- strandCol is 0-->
                                        <filter type="multiple_splitter" column="0" separator=","/>
                                        <filter type="column_strip" column="0"/> <!-- get rid of all external whitespace -->
                                        <filter type="string_function" column="0" name="lower" />
                                        <filter type="param_value" column="0" value="^c\d{1,}$" compare="re_search" keep="True"/>
                                        <filter type="column_strip" column="0" strip="c"/> <!-- get rid of c's  -->
                                        <filter type="insert_column" value="1" iterate="True" column="0"/>
                                        <filter type="boolean" column="1" cast="int" />
                                        <filter type="metadata_value" ref="input" name="strandCol" column="1" />
                                    </option>
                                </action>
                            </when>
                        </conditional>
                    </when>
                </conditional>
            </actions>
        </data>
    </outputs>
    <tests>
        <test expect_num_outputs="1">
            <param name="input" value="cut1.txt"/>
            <param name="list" value="1,3,4"/>
            <param name="delimiter" value=""/>
            <output name="output" file="cut_results1.txt"/>
        </test>
        <test expect_num_outputs="1">
            <param name="input" value="cut1.txt"/>
            <conditional name="cut_type_options">
                <param name="delimiter" value="" />
                <conditional name="colnames_option">
                    <param name="header" value="Y"/>
                    <!-- in the test we can (apparently) not select by header name -->
                    <param name="list" value="2" />
                </conditional>
            </conditional>
            <param name="complement" value="--complement" />
            <output name="output" file="cut_results2.txt"/>
        </test>
        <test expect_num_outputs="1">
            <param name="input" value="cut1.txt"/>
            <param name="list" value="-3" />
            <param name="delimiter" value="" />
            <param name="cut_element" value="-c" />
            <output name="output" file="cut_results3.txt"/>
        </test>
    </tests>
    <help>
<![CDATA[
**What it does**

This tool runs the **cut** unix command, which extract or delete columns from a file.

-----

Field List Example:

**1,3,7** - Cut specific fields/characters.

**3-**    - Cut from the third field/character to the end of the line.

**2-5**   - Cut from the second to the fifth field/character.

**-8**    - Cut from the first to the eight field/characters.


Input Example::

    fruit	color	price	weight
    apple	red	1.4	0.5
    orange	orange	1.5	0.3
    banana	yellow	0.9	0.3


Output Example ( **Keeping fields 1,3,4** )::

    fruit	price	weight
    apple	1.4	0.5
    orange	1.5	0.3
    banana	0.9	0.3

Output Example ( **Discarding field 2** )::

    fruit	price	weight
    apple	1.4	0.5
    orange	1.5	0.3
    banana	0.9	0.3

Output Example ( **Keeping 3 characters** )::

    fru
    app
    ora
    ban

@REFERENCES@
]]>
  </help>
  <expand macro="citations" />
</tool>