view bcftools_consensus.xml @ 13:d6dc477167f8 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/bcftools commit 8ad854180e3be0934cdb1f0021886199a2edf9c3"
author iuc
date Fri, 05 Feb 2021 19:48:42 +0000
parents e522022137f6
children 92182c270ce4
line wrap: on
line source

<?xml version='1.0' encoding='utf-8'?>
<tool name="bcftools @EXECUTABLE@" id="bcftools_@EXECUTABLE@" version="@TOOL_VERSION@+galaxy1">
    <description>Create consensus sequence by applying VCF variants to a reference fasta file</description>
    <macros>
        <token name="@EXECUTABLE@">consensus</token>
        <import>macros.xml</import>
    </macros>
    <expand macro="requirements">
        <expand macro="samtools_requirement"/>
        <requirement type="package" version="5.0.1">gawk</requirement>
    </expand>
    <expand macro="version_command" />
    <command detect_errors="aggressive"><![CDATA[
@PREPARE_ENV@
@PREPARE_INPUT_FILE@
#set $section = $reference_source
@PREPARE_FASTA_REF@

bcftools @EXECUTABLE@

@FASTA_REF@

## Default section
#set $section = $sec_default

${section.iupac_codes}

#if $section.mask:
  --mask '${section.mask}'
#end if

#if $section.select_haplotype:
  --haplotype '${section.select_haplotype}'
#end if
@SAMPLE@

#set $section = $sec_restrict
@INCLUDE@
@EXCLUDE@

#if $chain:
  --chain '$chain_file'
#end if

## Primary Input/Outputs
#if str($rename) == "no"
    --output '$output_file'
#end if
@INPUT_FILE@
#if str($rename) == "yes":
    #set basename=$input_file.element_identifier
    | awk 'BEGIN {i=1} {if (match($0, /^>/)) {if (i==1) {name="${basename}"} else {name=sprintf("%s-%d","${basename}",i);} print(gensub(/>[^ ]+( ?.*)/, ">" name "\\1", 1)); i=i+1;} else {print}}' > '$output_file'
#end if
]]>
    </command>
    <inputs>
        <expand macro="macro_input" />
        <expand macro="macro_fasta_ref" />
        <section name="sec_default" expanded="true" title="Default Options">
            <param name="mask" type="data" format="tabular" label="Mask" optional="True" help="Replace regions with N" />
            <param name="iupac_codes" type="boolean" truevalue="--iupac-codes" falsevalue="" label="Iupac Codes" 
                   help="Output variants in the form of IUPAC ambiguity codes" />
            <expand macro="macro_sample" />
            <param name="select_haplotype" type="select" optional="true">
                <option value="1">1</option>
                <option value="2">2</option>
            </param>
        </section>
        <param name="chain" type="boolean" truevalue="yes" falsevalue="no" label="Write a chain file for liftover" />
        <param name="rename" type="boolean" truevalue="yes" falsevalue="no" label="Set output FASTA ID from name of VCF" />
        <section name="sec_restrict" expanded="false" title="Restrict to">    
            <expand macro="macro_include" />
            <expand macro="macro_exclude" />
        </section>
    </inputs>
    <outputs>
        <data name="output_file" format="fasta" label="${tool.name} on ${on_string}: consensus fasta"/>
        <data name="chain_file" format="txt" label="${tool.name} on ${on_string}: chain">
            <filter>chain</filter>
        </data>
    </outputs>
    <tests>
        <test>
            <expand macro="test_using_reference" ref="consensus.fa" />
            <param name="input_file" ftype="vcf" value="consensus.vcf" />
            <param name="mask" ftype="tabular" value="consensus.tab" />
            <param name="chain" value="True" />
            <output name="output_file">
                <assert_contents>
                    <has_text text="NNNNNNNNNNNNNNNNNNNNNNNNNN" />
                </assert_contents>
            </output>
            <output name="chain_file">
                <assert_contents>
                    <has_text text="chain 497 1 501 + 1 501 1 502 + 1 502 1" />
                </assert_contents>
            </output>
        </test>
        <test>
            <expand macro="test_using_reference" select_from="cached" ref="consensus" />
            <param name="input_file" ftype="vcf" dbkey="?" value="consensus.vcf" />
            <param name="mask" ftype="tabular" value="consensus.tab" />
            <param name="chain" value="True" />
            <output name="output_file">
                <assert_contents>
                    <has_text text="NNNNNNNNNNNNNNNNNNNNNNNNNN" />
                </assert_contents>
            </output>
            <output name="chain_file">
                <assert_contents>
                    <has_text text="chain 497 1 501 + 1 501 1 502 + 1 502 1" />
                </assert_contents>
            </output>
        </test>
        <test>
            <expand macro="test_using_reference" ref="consensus.fa" />
            <param name="input_file" ftype="vcf" value="consensus.vcf" />
            <param name="mask" ftype="tabular" value="consensus.tab" />
            <param name="chain" value="False" />
            <param name="rename" value="True" />
            <output name="output_file">
                <assert_contents>
                    <has_text text=">consensus.vcf" />
                </assert_contents>
                <assert_contents>
                    <has_text text=">consensus.vcf-2" />
                </assert_contents>
            </output>
        </test>
        <test>
            <expand macro="test_using_reference" ref="consensus.fa" />
            <param name="input_file" ftype="vcf" value="consensus.vcf" />
            <section name="sec_restrict">
                <param name="include" value='TYPE="snp"' />
            </section>
            <output name="output_file">
                <assert_contents>
                    <has_text text="TACAAAATATGACATATCAAAAAGAACATAACCTACGTATCAACTAAAGTGGTTGTTTGA" />
                </assert_contents>
            </output>
        </test>
    </tests>
    <help><![CDATA[
=====================================
 bcftools @EXECUTABLE@ plugin
=====================================


Create consensus sequence by applying VCF variants to a reference fasta file.

@BCFTOOLS_MANPAGE@#@EXECUTABLE@

@BCFTOOLS_WIKI@

The option to set the new consensus' FASTA ID from the name of the VCF is provided by post-processing
the bcftools consensus output. It is primarily intended for use when the VCF is coming from a list
collection where the elements of the list are named meaningfully (e.g. named after sample names). This
is useful when consensus sequences are being prepared for, for example, feeding a multiple sequence
alignment to a phylogeny program.
]]>
    </help>
    <expand macro="citations" />
</tool>