view stacks_tsv2bam.xml @ 1:9cd90b2f08f7 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/stacks2 commit 8b047549e9e8791a5ca9424b1ef391e8980aba79-dirty
author matthias
date Fri, 30 Nov 2018 07:36:41 -0500
parents 99d0b19ef534
children 56eb0bc12179
line wrap: on
line source

<tool id="stacks2_tsv2bam" name="Stacks2: tsv2bam" version="@STACKS_VERSION@+galaxy@WRAPPER_VERSION@">
    <description>oriented data by locus</description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="requirements"/>
    <expand macro="stdio"/>
    <command><![CDATA[
@CLEAN_EXT@

mkdir stacks_inputs stacks_outputs &&

## TODO make token
#set $catalog = ""
#for $input_file in $input_cat
    #set $filename = str($input_file.element_identifier)
    #if not filename.endswith('.tsv')
        #set $filename = $filename + ".tsv"
    #end if
    #if re.search('catalog\.[a-z]+(\.tsv)?$', $filename)
        ln -s '${input_file}' 'stacks_inputs/$filename' &&
        #if $filename.endswith('.tags.tsv')
            #set catalog += " -c 'stacks_inputs/'"
        #end if
    #end if
#end for

## TODO make token
#set $samples = ""
#for $input_file in $input_tags
    #set $filename = str($input_file.element_identifier)
    #if not filename.endswith('.tsv')
        #set $filename = $filename + ".tsv"
    #end if
    #if not re.search('catalog\.[a-z]+(\.tsv)?$', $filename)
        ln -s '${input_file}' 'stacks_inputs/$filename' &&
        #if $filename.endswith('.tags.tsv')
            #set samples += " -s '"+$filename[:-9] + "'"
        #end if
    #end if
#end for

## TODO make token
#for $input_file in $input_matches
    #set $filename = str($input_file.element_identifier)
    #if not filename.endswith('.tsv')
        #set $filename = $filename + ".tsv"
    #end if
    #if re.search('matches.tsv$', $filename)
        ln -s '${input_file}' 'stacks_inputs/$filename' &&
    #end if
#end for

## link fastq files into stacks_inputs/
#set $paired_reads=False
#for $sample in $input_type.samples:
    #if not $sample:
        #continue
    #end if
    #set $paired_reads=True
    #set $read_direction="reverse"
    @FASTQ_INPUT@
#end for

tsv2bam
-P stacks_inputs
#if $popmap
    -M '$popmap'
#else
    $samples
#end if
#if $paired_reads
    --pe-reads-dir stacks_inputs
#end if
-t \${GALAXY_SLOTS:-1}
## tsv2bam writes to stdout and creates a log file
## - make stdout stderr
## - move the additional log file
2>&1 
&& mv stacks_inputs/tsv2bam.log $output_log
&& mv stacks_inputs/*matches.bam stacks_outputs

]]></command>

    <inputs>
        <!-- TODO make the inputs macros and use in other tools -->
        <param name="input_cat" format="tabular,txt" type="data_collection" collection_type="list" label="Catalog files" help="output from a previous Stacks pipeline steps e.g. denovo_map, refmap or cstacks" />
        <param name="input_tags" format="tabular,txt" type="data_collection" collection_type="list" label="Samples stacks" help="output from previous Stacks pipeline steps e.g. denovo_map, refmap or ustacks/pstacks" />
        <param name="input_matches" format="tabular,txt" type="data_collection" collection_type="list" label="Matches to the catalog" help="output from previous Stacks pipeline steps e.g. denovo_map, refmap or sstacks" />
        <!-- TODO add BAM? -->
        <expand macro="fastq_input_macro" fastq_optional="true"/>
        <param name="popmap" type="data" format="tabular,txt" label="Population map" help="If set, matching will be done only for samples listed in this file" optional="true" argument="-M" />
        <expand macro="in_log"/>
    </inputs>

    <outputs>
        <expand macro="out_log"/>
        <expand macro="tsv2bam_outputs_macro"/>
    </outputs>

    <tests>
       <!-- test wo paired end data -->
       <test>
            <param name="input_cat">
                <collection type="list">
                    <element name="catalog.alleles.tsv" ftype="tabular" value="cstacks/catalog.alleles.tsv" />
                    <element name="catalog.snps.tsv" ftype="tabular" value="cstacks/catalog.snps.tsv" />
                    <element name="catalog.tags.tsv" ftype="tabular" value="cstacks/catalog.tags.tsv" />
               </collection>
            </param>
            <param name="input_tags">
                <collection type="list">
                    <element name="PopA_01.alleles.tsv" ftype="tabular" value="ustacks/PopA_01.alleles.tsv" />
                    <element name="PopA_01.snps.tsv" ftype="tabular" value="ustacks/PopA_01.snps.tsv" />
                    <element name="PopA_01.tags.tsv" ftype="tabular" value="ustacks/PopA_01.tags.tsv" />
                    <element name="PopA_02.alleles.tsv" ftype="tabular" value="ustacks/PopA_02.alleles.tsv" />
                    <element name="PopA_02.snps.tsv" ftype="tabular" value="ustacks/PopA_02.snps.tsv" />
                    <element name="PopA_02.tags.tsv" ftype="tabular" value="ustacks/PopA_02.tags.tsv" />
               </collection>
            </param>
            <param name="input_matches">
                <collection type="list">
                    <element name="PopA_01.matches" ftype="tabular" value="sstacks/PopA_01.matches.tsv" />
                    <element name="PopA_02.matches" ftype="tabular" value="sstacks/PopA_02.matches.tsv" />
               </collection>
            </param>
            <param name="add_log" value="yes" />
            <output name="output_log" ftype="txt" file="tsv2bam/tsv2bam.log" lines_diff="2"/>
            <output_collection name="bams" type="list" count="2">
                <element name="PopA_01.matches" file="tsv2bam/PopA_01.matches.bam" ftype="bam" compare="sim_size"/>
                <element name="PopA_02.matches" file="tsv2bam/PopA_02.matches.bam" ftype="bam" compare="sim_size"  />
            </output_collection>
        </test>
        <!-- test w popmap, w reverse reads as multiple selection -->
       <test>
            <param name="input_cat">
                <collection type="list">
                    <element name="catalog.alleles.tsv" ftype="tabular" value="cstacks/catalog.alleles.tsv" />
                    <element name="catalog.snps.tsv" ftype="tabular" value="cstacks/catalog.snps.tsv" />
                    <element name="catalog.tags.tsv" ftype="tabular" value="cstacks/catalog.tags.tsv" />
               </collection>
            </param>
            <param name="input_tags">
                <collection type="list">
                    <element name="PopA_01.alleles.tsv" ftype="tabular" value="ustacks/PopA_01.alleles.tsv" />
                    <element name="PopA_01.snps.tsv" ftype="tabular" value="ustacks/PopA_01.snps.tsv" />
                    <element name="PopA_01.tags.tsv" ftype="tabular" value="ustacks/PopA_01.tags.tsv" />
                    <element name="PopA_02.alleles.tsv" ftype="tabular" value="ustacks/PopA_02.alleles.tsv" />
                    <element name="PopA_02.snps.tsv" ftype="tabular" value="ustacks/PopA_02.snps.tsv" />
                    <element name="PopA_02.tags.tsv" ftype="tabular" value="ustacks/PopA_02.tags.tsv" />
               </collection>
            </param>
            <param name="input_matches">
                <collection type="list">
                    <element name="PopA_01.matches" ftype="tabular" value="sstacks/PopA_01.matches.tsv" />
                    <element name="PopA_02.matches" ftype="tabular" value="sstacks/PopA_02.matches.tsv" />
               </collection>
            </param>
            <param name="popmap" ftype="tabular" value="denovo_map/popmap_cstacks.tsv" />
            <param name="input_type|input_type_selector" value="manual"/>
            <param name="input_type|samples" value="demultiplexed/PopA_01.2.fq,demultiplexed/PopA_02.2.fq" ftype="fastqsanger" />
            <param name="add_log" value="yes" />
            <output name="output_log"><assert_contents><has_text text="done." /></assert_contents></output>
            <output_collection name="bams" type="list" count="2">
                <element name="PopA_01.matches" file="tsv2bam/PopA_01.matches.bam" ftype="bam" compare="sim_size"/>
                <element name="PopA_02.matches" file="tsv2bam/PopA_02.matches.bam" ftype="bam" compare="sim_size"  />
            </output_collection>
        </test>
        <!-- test w reverse reads as list -->
       <test>
            <param name="input_cat">
                <collection type="list">
                    <element name="catalog.alleles.tsv" ftype="tabular" value="cstacks/catalog.alleles.tsv" />
                    <element name="catalog.snps.tsv" ftype="tabular" value="cstacks/catalog.snps.tsv" />
                    <element name="catalog.tags.tsv" ftype="tabular" value="cstacks/catalog.tags.tsv" />
               </collection>
            </param>
            <param name="input_tags">
                <collection type="list">
                    <element name="PopA_01.alleles.tsv" ftype="tabular" value="ustacks/PopA_01.alleles.tsv" />
                    <element name="PopA_01.snps.tsv" ftype="tabular" value="ustacks/PopA_01.snps.tsv" />
                    <element name="PopA_01.tags.tsv" ftype="tabular" value="ustacks/PopA_01.tags.tsv" />
                    <element name="PopA_02.alleles.tsv" ftype="tabular" value="ustacks/PopA_02.alleles.tsv" />
                    <element name="PopA_02.snps.tsv" ftype="tabular" value="ustacks/PopA_02.snps.tsv" />
                    <element name="PopA_02.tags.tsv" ftype="tabular" value="ustacks/PopA_02.tags.tsv" />
               </collection>
            </param>
            <param name="input_matches">
                <collection type="list">
                    <element name="PopA_01.matches" ftype="tabular" value="sstacks/PopA_01.matches.tsv" />
                    <element name="PopA_02.matches" ftype="tabular" value="sstacks/PopA_02.matches.tsv" />
               </collection>
            </param>
            <param name="input_type|input_type_selector" value="list"/>
            <param name="input_type|samples">
                <collection type="list">
                    <element name="PopA_01" value="demultiplexed/PopA_01.2.fq" ftype="fastqsanger" />
                    <element name="PopA_02" value="demultiplexed/PopA_02.2.fq" ftype="fastqsanger"/>
                </collection>
            </param>
            <param name="add_log" value="yes" />
            <output name="output_log"><assert_contents><has_text text="done." /></assert_contents></output>
            <output_collection name="bams" type="list" count="2">
                <element name="PopA_01.matches" file="tsv2bam/PopA_01.matches.bam" ftype="bam" compare="sim_size"/>
                <element name="PopA_02.matches" file="tsv2bam/PopA_02.matches.bam" ftype="bam" compare="sim_size"  />
            </output_collection>
        </test>
        <!-- test w paired reads as paired data set list -->
       <test>
            <param name="input_cat">
                <collection type="list">
                    <element name="catalog.alleles.tsv" ftype="tabular" value="cstacks/catalog.alleles.tsv" />
                    <element name="catalog.snps.tsv" ftype="tabular" value="cstacks/catalog.snps.tsv" />
                    <element name="catalog.tags.tsv" ftype="tabular" value="cstacks/catalog.tags.tsv" />
               </collection>
            </param>
            <param name="input_tags">
                <collection type="list">
                    <element name="PopA_01.alleles.tsv" ftype="tabular" value="ustacks/PopA_01.alleles.tsv" />
                    <element name="PopA_01.snps.tsv" ftype="tabular" value="ustacks/PopA_01.snps.tsv" />
                    <element name="PopA_01.tags.tsv" ftype="tabular" value="ustacks/PopA_01.tags.tsv" />
                    <element name="PopA_02.alleles.tsv" ftype="tabular" value="ustacks/PopA_02.alleles.tsv" />
                    <element name="PopA_02.snps.tsv" ftype="tabular" value="ustacks/PopA_02.snps.tsv" />
                    <element name="PopA_02.tags.tsv" ftype="tabular" value="ustacks/PopA_02.tags.tsv" />
               </collection>
            </param>
            <param name="input_matches">
                <collection type="list">
                    <element name="PopA_01.matches" ftype="tabular" value="sstacks/PopA_01.matches.tsv" />
                    <element name="PopA_02.matches" ftype="tabular" value="sstacks/PopA_02.matches.tsv" />
               </collection>
            </param>
            <param name="input_type|input_type_selector" value="list"/>
            <param name="input_type|samples">
                <collection type="list:paired">
                    <element name="PopA_01">
                        <collection type="paired">
                            <element name="forward" value="demultiplexed/PopA_01.1.fq" ftype="fastqsanger" />
                            <element name="reverse" value="demultiplexed/PopA_01.2.fq" ftype="fastqsanger"/>
                        </collection>
                    </element>
                    <element name="PopA_02">
                        <collection type="paired">
                            <element name="forward" value="demultiplexed/PopA_02.1.fq" ftype="fastqsanger" />
                            <element name="reverse" value="demultiplexed/PopA_02.2.fq" ftype="fastqsanger"/>
                        </collection>
                    </element>
                </collection>
            </param>
            <param name="add_log" value="yes" />
            <output name="output_log"><assert_contents><has_text text="done." /></assert_contents></output>
            <output_collection name="bams" type="list" count="2">
                <element name="PopA_01.matches" file="tsv2bam/PopA_01.matches.bam" ftype="bam" compare="sim_size"/>
                <element name="PopA_02.matches" file="tsv2bam/PopA_02.matches.bam" ftype="bam" compare="sim_size"  />
            </output_collection>
        </test>
    </tests>

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

**What it does**

The unique stacks program will take as input a set of short-read sequences and align them into exactly-matching stacks. Comparing the stacks it will form a set of loci and detect SNPs at each locus using a maximum likelihood framework

--------

**Input files**

FASTQ, FASTA

**Output files**

- XXX.tags.tsv file:

See `Stacks output description <http://catchenlab.life.illinois.edu/stacks/manual/#files>`_

Notes: For the tags file, each stack will start in the file with a consensus sequence for the entire stack followed by the flags for that stack. Then, each individual read that was merged into that stack will follow. The next stack will start with another consensus sequence.


- XXX.snps.tsv file:

See `Stacks output description <http://catchenlab.life.illinois.edu/stacks/manual/#files>`_

Notes: If a stack has two SNPs called within it, then there will be two lines in this file listing each one.


- XXX.alleles.tsv file:

See `Stacks output description <http://catchenlab.life.illinois.edu/stacks/manual/#files>`_

@STACKS_INFOS@
]]>
    </help>
    <expand macro="citation" />
</tool>