view bamparse.xml @ 5:320f7746b9f5 draft default tip

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/bamparse commit d520bdab019f9afc3f78912bfbd174909114da4f
author artbio
date Wed, 11 Oct 2023 01:59:32 +0000
parents 1997af8f4648
children
line wrap: on
line source

<tool id="bamparse" name="Count alignments" version="4.1.1">
    <description>in a BAM file</description>
    <requirements>
            <requirement type="package" version="0.21.0=py310h41dec4a_1">pysam</requirement>
            <requirement type="package" version="1.0=h98b6b92_0">sambamba</requirement>
            <requirement type="package" version="1.17=hd87286a_1">samtools</requirement>
    </requirements>
    <stdio>
        <exit_code range="1:" level="fatal" description="Tool exception" />
    </stdio>
    <command detect_errors="exit_code"><![CDATA[
        mkdir outputdir &&
        #if $polarity == 'sense':
            #set pol=' and not reverse_strand'
        #else if $polarity == 'antisense':
            #set pol=' and reverse_strand'
        #else:
            #set pol=''
        #end if
        #for $file in $input_list
           sambamba view -t \$GALAXY_SLOTS -F "not unmapped$pol" -f bam '$file' -o '$file.element_identifier' &&
           samtools index '$file.element_identifier' &&
        #end for
        python $__tool_directory__/bamparse.py
        --alignments
        #for $file in $input_list
            '$file.element_identifier'
        #end for
        --labels
        #for $file in $input_list
            '$file.element_identifier'
        #end for
        --number '$output_option' &&
        #if $output_option == 'unique':
            cp ./outputdir/table.tabular $table 
        #else if $output_option == 'multiple':
            cp outputdir/* ./ && ls -latr ./
        #end if 
 ]]></command>
    <inputs>
        <param name="input_list" type="data" format="bam" label="Select multiple alignments to parse" multiple="true"/>
        <param name="polarity" type="select" label="how to count sense and antisense reads">
            <option value="both">count both sense and antisense reads</option>
            <option value="sense">count only sense reads</option>
            <option value="antisense">count only antisense reads</option>
        </param>
        <param name="output_option" type="select" display="radio" label="Select the number of files for results"
               help="Results can be returned either as a single multi-column table or in a collection of separate two-column
               datasets (useful for DESeq subsequent analysis)">
                <option value="unique">A multi-column table</option> 
                <option value="multiple">One separate two-columns dataset per input bam alignment</option> 
        </param>
    </inputs>
    <outputs>
        <data name="table" format="tabular" label="Table of Counts">
            <filter>output_option == "unique"</filter>
        </data>

        <collection name="split_output" type="list" label="Collection of Count Tables">
            <filter>output_option == "multiple"</filter>
            <discover_datasets pattern="(?P&lt;designation&gt;.*)\.tabular" format="tabular" visible="false" directory="outputdir"/>
        </collection>

    </outputs>
    <tests>
        <test expect_num_outputs="1">
            <param name="input_list" value="alignment1.bam,alignment2.bam" ftype="bam" />
            <param name="polarity" value="both" />
            <param name="output_option" value="unique" />
            <output name="table" ftype="tabular" file="table.tabular" />
        </test>
        <test expect_num_outputs="1">
            <param name="input_list" value="alignment1.bam,alignment2.bam" ftype="bam" />
            <param name="polarity" value="both" />
            <param name="output_option" value="multiple" />
            <output_collection name="split_output" type="list" count="2">
                <element name="table0" file="table0.tabular" ftype="tabular" compare="contains" />
                <element name="table1" file="table1.tabular" ftype="tabular" compare="contains" />
            </output_collection>
        </test>
        <test expect_num_outputs="1">
            <param name="input_list" value="alignment1.bam,alignment2.bam" ftype="bam" />
            <param name="polarity" value="sense" />
            <param name="output_option" value="unique" />
            <output name="table" ftype="tabular" file="table.tabular" />
        </test>
        <test expect_num_outputs="1">
            <param name="input_list" value="alignment1.bam,alignment2.bam" ftype="bam" />
            <param name="polarity" value="antisense" />
            <param name="output_option" value="unique" />
            <output name="table" ftype="tabular" file="table_antisense.tabular" />
        </test>

        <test expect_num_outputs="1">
            <param name="input_list" value="input1.bam,input2.bam,input_new2.bam" ftype="bam" />
            <param name="polarity" value="both" />
            <param name="output_option" value="multiple" />
            <output_collection name="split_output" type="list" count="3">
                <element name="table0" file="more_table0.tabular" ftype="tabular" compare="contains" />
                <element name="table1" file="more_table1.tabular" ftype="tabular" compare="contains" />
                <element name="table2" file="more_table2.tabular" ftype="tabular" compare="contains" />
            </output_collection>
        </test>
        <test expect_num_outputs="1">
            <param name="input_list" value="input1.bam,input2.bam,input_new2.bam" ftype="bam" />
            <param name="polarity" value="sense" />
            <param name="output_option" value="unique" />
            <output name="table" ftype="tabular" file="more_sense_table.tabular" />
        </test>
        <test expect_num_outputs="1">
            <param name="input_list" value="input1.bam,input2.bam,input_new2.bam" ftype="bam" />
            <param name="polarity" value="antisense" />
            <param name="output_option" value="unique" />
            <output name="table" ftype="tabular" file="more_antisense_table.tabular" />
        </test>
    </tests>
    <help>

**What it does**

Counts the number of reads aligned to each reference (@SN, reference NAME) in one or
several BAM alignments.

Sense, antisense or both sense and antisense alignments can be counted

The library labels in the returned count table are taken from the input bam datasets
names in the Galaxy history.
    </help>
    <citations>
        <citation type="doi">10.1093/bioinformatics/btp352</citation>
    </citations>
</tool>