view snp-sites.xml @ 1:5804f786060d draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/snp-sites commit e4222f6179041846870721bfcb4d8e587ead8d8f"
author iuc
date Sat, 02 Nov 2019 11:12:17 -0400
parents efe8f0e53d3e
children
line wrap: on
line source

<?xml version='1.0' encoding='UTF-8'?>
<tool id='snp_sites' name='Finds SNP sites' version='@TOOL_VERSION@+galaxy0'>
   <description>from a multi-FASTA alignment file</description>	
   <macros>
      <token name="@TOOL_VERSION@">2.5.1</token>
   </macros>
   <requirements>
      <requirement type='package' version='@TOOL_VERSION@'>snp-sites</requirement>
   </requirements>
   <version_command>snp-sites -V</version_command>
   <command detect_errors='aggressive'><![CDATA[
#if str($out_type.ot_select) == "alignment"
    #if str($out_type.formats) == 'None'
        echo "Error, no output format specified" >&2 && exit 1 ;
        #set outputs=""
    #else
        #set outputs=" ".join(str($out_type.formats).split(","))
    #end if
#end if

snp-sites 
#if str($out_type.ot_select) == "alignment"
    $outputs
    $out_type.b
    $out_type.c
#else if str($out_type.ot_select) == "counts"
    -C
#end if
    -o output 
    '$input_fasta'

#if str($out_type.ot_select) == "counts"
   && mv output $output_counts
#else if ',' in str($out_type.formats)
   #if '-m' in str($out_type.formats)
      && mv 'output.snp_sites.aln' '$output_fasta'
   #end if
   #if '-v' in str($out_type.formats)
      && mv 'output.vcf' '$output_vcf'
   #end if
   #if '-p' in str($out_type.formats)
      && mv 'output.phylip' '$output_phylip'
   #end if
#else
   #if str($out_type.formats) == '-m'
      && mv 'output' '$output_fasta'
   #else if str($out_type.formats) == '-v'
      && mv 'output' '$output_vcf'
   #else if str($out_type.formats) == '-p'
      && mv 'output' '$output_phylip'
   #end if
#end if
]]></command>
   <inputs>

        <param name='input_fasta' format='fasta' type='data' label='FASTA file' />
        <conditional name="out_type" label="Output type">
            <param type="select" name="ot_select" label="Output">
                <option value="alignment" selected="true">Sequence alignment / VCF</option>
                <option value="counts">Constant site count (suitable for IQ-TREE -fconst)</option>
            </param>
        <when value="alignment">
            <param type='select' multiple='true' name='formats' label='Output formats' help='Output format to use if not counting constant sites'>
            <option value="-m"  selected="true">Multi-FASTA alignment file</option>
            <option value="-v">VCF</option>
            <option value="-p">Phylip</option>
            </param>
            <param argument="-b" label="Output constant sites (suitable for use in BEAST)" truevalue="-b" falsevalue="" 
            type="boolean" help="Output monomorphic (constant) as opposed to polymorphic (variable) sites"/>
            <param argument="-c" label="Only output columns containing exclusively ACTG" truevalue="-c" falsevalue=""
            type="boolean" help="Ignore columns containing ambiguous characters and gaps"/>
        </when>
        <when value="counts">
        </when>
        </conditional>
   </inputs>
   <outputs>
      <data name='output_fasta' format='fasta' label='${tool.name} on ${on_string}: FASTA'>
	      <!-- this becomes a catch-all for when no format is specified. if no format is specified the job ends with an error but shows 1 red dataset output -->
         <filter>(out_type["ot_select"] == "alignment" and out_type["formats"] is not None and '-m' in out_type["formats"]) or (out_type["ot_select"] == "alignment" and out_type.formats is None)</filter>
      </data>
      <data name='output_vcf' format='vcf' label='${tool.name} on ${on_string}: VCF' from_work_dir='output.vcf'>
         <filter>out_type["ot_select"] == "alignment" and out_type["formats"] is not None and '-v' in out_type["formats"]</filter>
      </data>
      <data name='output_phylip' format='phylip' label='${tool.name} on ${on_string}: phylip'>
         <filter>out_type["ot_select"] == "alignment" and out_type["formats"] is not None and '-p' in out_type["formats"]</filter>
      </data>
      <data name='output_counts' format='tabular' label='${tool.name} on ${on_string}: constant site counts'>
         <filter>out_type["ot_select"] == "counts"</filter>
      </data>
   </outputs>
   <tests>
      <test expect_num_outputs="3">
         <param name='input_fasta' value='input.fasta' ftype='fasta' />
         <conditional name="out_type">
            <param name="ot_select" value="alignment" />
            <param name='formats' value='-m,-p,-v' />
         </conditional>
        <output name='output_fasta' value='output.fasta' ftype='fasta' />
        <output name='output_vcf' value='output.vcf' ftype='vcf' />
        <output name='output_phylip' value='output.phylip' ftype='phylip' />
      </test>
      <test expect_num_outputs="1">
         <param name='input_fasta' value='input.fasta' ftype='fasta' />
         <conditional name="out_type">
            <param name="ot_select" value="alignment" />
            <param name='formats' value='-m' />
            <param name='b' value='True' />
         </conditional>
         <output name='output_fasta' value='output_monomorphic.fasta' ftype='fasta' />
      </test>
      <test expect_num_outputs="1">
         <param name='input_fasta' value='input.fasta' ftype='fasta' />
         <conditional name="out_type">
            <param name="ot_select" value="alignment" />
            <param name='formats' value='-m' />
            <param name='c' value='True' />
         </conditional>
         <output name='output_fasta' value='output_actg.fasta' ftype='fasta' />
      </test>
      <test expect_num_outputs="1">
         <param name='input_fasta' value='input.fasta' ftype='fasta' />
         <conditional name="out_type">
            <param name="ot_select" value="alignment" />
            <param name='formats' value='-m' />
            <param name='b' value='True' />
            <param name="c" value="True" />
         </conditional>
         <output name='output_fasta' value='output_monomorphic_actg.fasta' ftype='fasta' />
      </test>
      <test expect_num_outputs="1">
         <param name='input_fasta' value='input.fasta' ftype='fasta' />
         <conditional name="out_type">
            <param name="ot_select" value="counts" />
            <param name='C' value='True' />
         </conditional>
         <output name='output_counts' value='output_counts.tabular' ftype='tabular' />
      </test>
   </tests>
   <help>
   <![CDATA[
   
**SNP-sites**

This tool can rapidly extract SNPs from a multi-FASTA alignment using modest resources and can output results in multiple formats for downstream analysis. SNPs can be extracted from a 8.3 GB alignment file (1,842 taxa, 22,618 sites) in 267 seconds using 59 MB of RAM and 1 CPU core, making it feasible to run on modest computers. 
SNP-sites is implemented in C and is available under the open source license GNU GPL version 3.

Alternatively it can report on the number of constant sites in an alignment in a format (A count, C count, G count, T count) suitable for passing
to IQ-TREE's `-fconst` option.

**Input FASTA format:**

The first sequence will be taken as a reference.

.. code-block::

  >sample1
  AGACACAGTCAC

  >sample1
  AGACAC----AC

  >sample1
  AAACGCATTCAN

**Options** 

In addition to the default output mode, this tool supports three other options:

1. Output only constant (monomorphic) (i.e. not polymorphic) sites (useful for input to BEAST)

2. Output only columns that have purely ACTGs in them (i.e. no gaps or ambiguous nucleotides). This can be used together with the previous option. 

3. Output only a count of constant sites, in a format suitable for use with IQ-TREE `-fconst`. This option cannot be used together with the previously mentioned options.

**Output files:**

The output of the tool are three different files in following format:

- a multi fasta alignment,
- relaxed phylip format and,
- VCF.
- alternatively constant site counts (As, Cs, Gs and Ts).

The VCF file for the above specified input is

The output of the tool are three different files in following format:

- a multi fasta alignment,
- relaxed phylip format and,
- VCF.

The VCF file for the above specified input is

=====   === ==  === ===    ====    ======  ====    ======  ======= ======= =======
CHROM   POS ID  REF ALT    QUAL    FILTER  INFO    FORMAT  sample1 sample1 sample1
-----   --- --  --- ---    ----    ------  ----    ------  ------- ------- -------
1       2   .   G   A      .       .       .       GT      0       0       1
-----   --- --  --- ---    ----    ------  ----    ------  ------- ------- -------
1       5   .   A   G      .       .       .       GT      0       0       1
-----   --- --  --- ---    ----    ------  ----    ------  ------- ------- -------
1       8   .   G   .,T    .       .       .       GT      0       1       2
=====   === ==  === ===    ====    ======  ====    ======  ======= ======= =======

Thus the tool identified three variations (SNPs): in 2nd, 5th, and 8th positions (A instead of G, G instead of A, and unknown nucleotide or T instead of G, respectively).


	]]>
    </help>
	<citations>
        <citation type="doi">10.1099/mgen.0.000056</citation>
    </citations>
</tool>