view coverageBed.xml @ 24:33c3ddea63c5 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bedtools commit 09721a12bdd393441b162056316241aba3895a4f
author iuc
date Sun, 18 Feb 2018 15:07:08 -0500
parents df56e1b12d0c
children 95a3b2c25bd1
line wrap: on
line source

<tool id="bedtools_coveragebed" name="Compute both the depth and breadth of coverage" version="@WRAPPER_VERSION@.2">
    <description>of features in file B on the features in file A (bedtools coverage)</description>
    <macros>
        <import>macros.xml</import>
    </macros>
    <expand macro="requirements" />
    <expand macro="stdio" />
    <command>
<![CDATA[
        bedtools coverage
        $d
        $hist
        $split
        $strandedness
        #if str($overlap_a) != "None" and str($overlap_a):
          -f '$overlap_a'
        #end if
        #if str($overlap_b) != "None" and str($overlap_b):
          -F '$overlap_b'
        #end if
        $reciprocal_overlap
        $a_or_b
        -a '$inputA'
        #if str($reduce_or_iterate.reduce_or_iterate_selector) == 'iterate':
            -b '$reduce_or_iterate.inputB'
            #if $reduce_or_iterate.inputB.is_of_type('bam'):
                -sorted  -g <(samtools view -H $reduce_or_iterate.inputB | tr ':' '\t' | grep SN | cut -f 3,5)
            #end if
        #else:
            #set inputBs = "' '".join([str($file) for $file in $reduce_or_iterate.inputB])
            -b '$inputBs'
        #end if
        #if $inputA.is_of_type('gff') or $inputA.is_of_type('gff3'):
            | sort -k1,1 -k4,2n
        #else:
            | sort -k1,1 -k2,2n
        #end if
        > '$output'
]]>
    </command>
    <inputs>
        <param format="bam,bed,gff,gff3,vcf" name="inputA" type="data" label="File A (on which coverage is calculated)" help="BAM/BED/GFF/VCF format" />
        <conditional name="reduce_or_iterate">
            <param name='reduce_or_iterate_selector' type='select' label='Combined or separate output files'>
                <option value='iterate' selected='true'>One output file per 'input B' file</option>
                <option value='reduce'>Single output containing results for all 'input B' files</option>
            </param>
            <when value='iterate'>
                <param format="bam,bed,gff,gff3,vcf" name="inputB" type="data"
                       label="File(s) B (for which coverage is calculated)" help="BAM/BED/GFF/VCF format"/>
            </when>
            <when value='reduce'>
                <param format="bam,bed,gff,gff3,vcf" name="inputB" type="data" multiple="true"
                       label="File(s) B (for which coverage is calculated)" help="BAM/BED/GFF/VCF format"/>
            </when>
        </conditional>
        <expand macro="split" />
        <param name="strandedness" type="boolean" label="Force strandedness" truevalue="-s" falsevalue="" checked="false"
            help="Only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand (-s)"/>
        <param name="d" type="boolean" checked="false" truevalue="-d" falsevalue=""
            label="Report the depth at each position in each A feature"
            help="Positions reported are one based. Each position and depth follow the complete B feature (-d)" />
        <param name="hist" type="boolean" checked="false" truevalue="-hist" falsevalue=""
            label="Report a histogram of coverage for each feature in A as well as a summary histogram for all features in A"
            help="Additional columns after each feature in A: 1) depth 2) # bases at depth 3) size of A 4) % of A at depth (-hist)" />
        <param name="overlap_a" type="text"
            label="Minimum overlap required as a fraction of A."
            help="Default is 1E-9 (i.e., 1bp). (-f)">
            <sanitizer invalid_char="">
                <valid initial="string.digits"><add value=",."/></valid>
            </sanitizer>
	</param>
        <param name="overlap_b" type="text"
            label="Minimum overlap required as a fraction of B."
            help="Default is 1E-9 (i.e., 1bp). (-F)">
            <sanitizer invalid_char="">
                <valid initial="string.digits"><add value=",."/></valid>
            </sanitizer>
	</param>
        <param name="reciprocal_overlap" type="boolean" checked="false" truevalue="-r" falsevalue=""
            label="Require that the fraction overlap be reciprocal for A AND B."
            help="if -f is 0.90 and -r is used, this requires that B overlap 90% of A and A _also_ overlaps 90% of B (-r)" />
        <param name="a_or_b" type="boolean" checked="false" truevalue="-e" falsevalue=""
            label="Require that the minimum fraction be satisfied for A OR B."
            help="if -e is used with -f 0.90 and -F 0.10 this requires that either 90% of A is covered OR 10% of  B is covered. Without -e, both fractions would have to be satisfied. (-e)" />
    </inputs>
    <outputs>
        <data format="bed" name="output" metadata_source="inputA" label="Count of overlaps on ${inputA.name}"/>
    </outputs>
    <tests>
        <test>
            <param name="inputA" value="coverageBedA.bed" ftype="bed" />
            <param name="inputB" value="coverageBedB.bed" ftype="bed" />
            <output name="output" file="coverageBed_result1.bed" ftype="bed" />
        </test>
        <test>
            <param name="inputA" value="coverageBedA.bed" ftype="bed" />
            <param name="inputB" value="coverageBedB.bed" ftype="bed" />
            <param name="overlap_b" value="1"  />
            <output name="output" file="coverageBed_result2_F1.bed" ftype="bed" />
        </test>
        <test>
            <param name="inputA" value="coverageBedA.bed" ftype="bed" />
            <param name="inputB" value="coverageBedB.bed" ftype="bed" />
            <param name="overlap_a" value="1"  />
            <param name="reciprocal_overlap" value="true"  />
            <output name="output" file="coverageBed_result3_f1r.bed" ftype="bed" />
        </test>
    </tests>
    <help>
<![CDATA[
**What it does**

`bedtools coverage`_ computes both the *depth* and *breadth* of coverage of features in
file B on the features in file A. For example, ``bedtools coverage`` can compute the coverage of sequence alignments
(file B) across 1 kilobase (arbitrary) windows (file A) tiling a genome of interest.
One advantage that ``bedtools coverage`` offers is that it not only *counts* the number of features that
overlap an interval in file A, it also computes the fraction of bases in the interval in A that were overlapped by one or more features.
Thus, ``bedtools coverage`` also computes the *breadth* of coverage for each interval in A.

.. _bedtools coverage: http://bedtools.readthedocs.org/en/latest/content/tools/coverage.html

.. class:: infomark

The lines in the output will be comprised of each interval in A, followed by:

1. The number of features in B that overlapped (by at least one base pair) the A interval.
2. The number of bases in A that had non-zero coverage from features in B.
3. The length of the entry in A.
4. The fraction of bases in A that had non-zero coverage from features in B.

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