view snpEff.xml @ 6:eb394dd65c98

Add mutli-select to data managers from Bjoern, filter unique database options in snpEff_download.xml snpEff.xml
author Jim Johnson <jj@umn.edu>
date Thu, 28 Nov 2013 08:16:11 -0600
parents 8952990fcab9
children 0ad9733e22a4
line wrap: on
line source

<tool id="snpEff" name="SnpEff" version="3.4">
    <description>Variant effect and annotation</description>
    <requirements>
        <requirement type="package" version="3.4">snpEff</requirement>
    </requirements>
    <command>
java -Xmx6G -jar \$SNPEFF_JAR_PATH/snpEff.jar eff 
-c \$SNPEFF_JAR_PATH/snpEff.config 
-i $inputFormat -o $outputFormat -upDownStreamLen $udLength 
#if $spliceSiteSize and $spliceSiteSize.__str__ != '':
  -spliceSiteSize $spliceSiteSize
#end if
#if $filterIn and $filterIn.__str__ != 'no_filter':
  $filterIn 
#end if
#if $filterHomHet and $filterHomHet.__str__ != 'no_filter':
  $filterHomHet 
#end if
#if $annotations and $annotations.__str__ != '':
  #echo " "
  #echo ' '.join($annotations.__str__.split(','))
#end if
#if $filterOut and $filterOut.__str__ != '':
  #echo " "
  #echo ' '.join($filterOut.__str__.split(','))
#end if
#if str( $transcripts ) != 'None':
  -onlyTr $transcripts
#end if
#if str( $intervals ) != 'None':     ### fix this for multiple dataset input
  -interval $intervals
#end if
#if $statsFile:
  -stats $statsFile 
#end if
#if $offset.__str__ != '':
  ${offset} 
#end if
#if $chr.__str__.strip() != '':
  -chr "$chr" 
#end if
  $noLog 
#if $snpDb.genomeSrc == 'cached':
  -dataDir ${snpDb.genomeVersion.fields.path}
  #if $snpDb.extra_annotations and $snpDb.extra_annotations.__str__ != '':
    #echo " "
    #echo ' '.join($snpDb.extra_annotations.__str__.split(','))
  #end if
  #if $snpDb.regulation and $snpDb.regulation.__str__ != '':
    -reg #echo ' -reg '.join($snpDb.regulation.__str__.split(','))#
  #end if
  $snpDb.genomeVersion
#elif $snpDb.genomeSrc == 'history':
  -dataDir ${snpDb.snpeff_db.extra_files_path}
  #if $snpDb.extra_annotations and $snpDb.extra_annotations.__str__ != '':
    #set annotations = [' '] + $snpDb.extra_annotations.__str__.split(',')
    #echo " "
    #echo ' -'.join($annotations)
  #end if
  #if $snpDb.regulation and $snpDb.regulation.__str__ != '':
    -reg #echo ' -reg '.join($snpDb.regulation.__str__.split(','))#
  #end if
  ${snpDb.snpeff_db.metadata.genome_version}
#else 
  -download
  $snpDb.genome_version
#end if
$input > $snpeff_output 
</command>
    <inputs>
        <param format="vcf,tabular,pileup,bed" name="input" type="data" label="Sequence changes (SNPs, MNPs, InDels)"/>

        <param name="inputFormat" type="select" label="Input format">
            <option value="vcf" selected="true">VCF</option>
            <option value="txt">Tabular (Deprecated)</option>
            <option value="pileup">Pileup (Deprecated)</option>
            <option value="bed">BED (Deprecated)</option>
        </param>

        <param name="outputFormat" type="select" label="Output format">
            <option value="vcf" selected="true">VCF (only if input is VCF)</option>
            <option value="txt">Tabular</option>
            <option value="bed">BED</option>
            <option value="bedAnn">BED Annotations</option>
        </param>

        <conditional name="snpDb">
            <param name="genomeSrc" type="select" label="">
                <option value="cached">Locally cached</option>
                <option value="history">history</option>
                <option value="named">named on demand</option>
            </param>
            <when value="cached">
                <param name="genomeVersion" type="select" label="Genome">
                    <!--GENOME    DESCRIPTION-->
                    <options from_data_table="snpeff_genomedb">
                           <filter type="unique_value" column="0" />
                    </options>
                </param>
                <param name="extra_annotations" type="select" display="checkboxes" multiple="true" label="Additional Annotations">
                       <help>These are available for only a few genomes</help>
                       <options from_data_table="snpeff_annotations">
                           <filter type="param_value" ref="genomeVersion" key="genome" column="0" />
                       </options>
                </param>
                <param name="regulation" type="select" display="checkboxes" multiple="true" label="Non-coding and regulatory Annotation">
                       <help>These are available for only a few genomes</help>
                       <options from_data_table="snpeff_regulationdb">
                           <filter type="param_value" ref="genomeVersion" key="genome" column="0" />
                       </options>
                </param>
            </when>
            <when value="history">
                <param format="snpeffdb" name="snpeff_db" type="data" label="SnpEff Genome Version Data"/>
                <!-- From metadata -->
                <param name="extra_annotations" type="select" display="checkboxes" multiple="true" label="Additional Annotations">
                    <help>These are available for only a few genomes</help>
                    <options>
                        <filter type="data_meta" ref="snpeff_db" key="annotation" />
                    </options>
                </param>
                <param name="regulation" type="select" display="checkboxes" multiple="true" label="Non-coding and regulatory Annotation">
                    <help>These are available for only a few genomes</help>
                    <options>
                        <filter type="data_meta" ref="snpeff_db" key="regulation" />
                    </options>
                </param>
            </when>
            <when value="named">
                <param name="genome_version" type="text" value="GRCh37.68" label="Snpff Version Name"/>
            </when>
        </conditional>

        <param name="udLength" type="select" label="Upstream / Downstream length">
            <option value="0">No upstream / downstream intervals (0 bases)</option>
            <option value="200">200 bases</option>
            <option value="500">500 bases</option>
            <option value="1000">1000 bases</option>
            <option value="2000">2000 bases</option>
            <option value="5000" selected="true">5000 bases</option>
            <option value="10000">10000 bases</option>
            <option value="20000">20000 bases</option>
        </param>

        <param name="spliceSiteSize" type="select" optional="true" label="Set size for splice sites (donor and acceptor) in bases. Default: 2">
            <option value="1">1 base</option>
            <option value="2">2 bases</option>
            <option value="3">3 bases</option>
            <option value="4">4 bases</option>
            <option value="5">5 bases</option>
            <option value="6">6 bases</option>
            <option value="7">7 bases</option>
            <option value="8">8 bases</option>
            <option value="9">9 bases</option>
        </param>

        <param name="filterHomHet" type="select" display="radio" label="Filter homozygous / heterozygous changes">
            <option value="no_filter" selected="true">No filter (analyze everything)</option>
            <option value="-hom">Analyze homozygous sequence changes only </option>
            <option value="-het">Analyze heterozygous sequence changes only </option>
        </param>

        <!-- The tool testing code can not handle select,radio,check boxes values that start with '-', so the '-' is added in the command generation -->
        <param name="filterIn" type="select" display="radio" label="Filter sequence changes">
            <option value="no_filter" selected="true">No filter (analyze everything)</option>
            <option value="-del">Analyze deletions only </option>
            <option value="-ins">Analyze insertions only </option>
            <option value="-mnp">Only MNPs (multiple nucleotide polymorphisms) </option>
            <option value="-snp">Only SNPs (single nucleotide polymorphisms) </option>
        </param>

        <param name="annotations" type="select" display="checkboxes" multiple="true" label="Annotation options">
            <option value="-cancer">Perform 'cancer' comparissons (Somatic vs Germline). Default: false</option>
            <option value="-canon">Only use canonical transcripts.</option>
            <option value="-geneId">Use gene ID instead of gene name (VCF output). Default: false</option>
            <option value="-hgvs">Use HGVS annotations for amino acid sub-field. Default: false</option>
            <option value="-lof">Add loss of function (LOF) and Nonsense mediated decay (NMD) tags.</option>
            <option value="-oicr">Add OICR tag in VCF file. Default: false</option>
            <option value="-onlyReg">Only use regulation tracks.</option>
            <option value="-sequenceOntolgy">Use Sequence Ontolgy terms. Default: false</option>
        </param>
        <param name="intervals" format="bed" type="data" optional="true" label="Use custom interval file for annotation"/>
        <param name="transcripts" format="tabular" type="data" optional="true" label="Only use the transcripts in this file. Format: One transcript ID per line."/>
        <param name="filterOut" type="select" display="checkboxes" multiple="true" label="Filter output">
            <option value="-no-downstream">Do not show DOWNSTREAM changes </option>
            <option value="-no-intergenic">Do not show INTERGENIC changes </option>
            <option value="-no-intron">Do not show INTRON changes </option>
            <option value="-no-upstream">Do not show UPSTREAM changes </option>
            <option value="-no-utr">Do not show 5_PRIME_UTR or 3_PRIME_UTR changes </option>
        </param>

        <param name="offset" type="select" display="radio" optional="true" label="Chromosomal position">
            <option value="" selected="true">Use default (based on input type)</option>
            <option value="-0">Force zero-based positions (both input and output)</option>
            <option value="-1">Force one-based positions (both input and output)</option>
        </param>
        <param name="chr" type="text" optionl="true" label="Text to prepend to chromosome name">
              <help>
               By default SnpEff simplifies all chromosome names. For instance 'chr1' is just '1'.  
               You can prepend any string you want to the chromosome name."
              </help>
                       <validator type="regex" message="No whitespace allows">^\S*$</validator>

        </param>
        <param name="generate_stats" type="boolean" truevalue="" falsevalue="-noStats" checked="true" label="Produce Summary Stats"/>
        <param name="noLog" type="boolean" truevalue="-noLog" falsevalue="" checked="true" label="Do not report usage statistics to server"/>
    </inputs>
    <outputs>
        <data format="vcf" name="snpeff_output" >
            <change_format>
                <when input="outputFormat" value="vcf" format="vcf" />
                <when input="outputFormat" value="txt" format="tabular" />
                <when input="outputFormat" value="bed" format="bed" />
                <when input="outputFormat" value="bedAnn" format="bed" />
            </change_format>
        </data>
        
        <data format="html" name="statsFile">
            <filter>generate_stats == True</filter>
        </data>
    </outputs>
    <stdio>
      <exit_code range="1:"  level="fatal"   description="Error" />
      <exit_code range="-1"  level="fatal"   description="Error: Cannot open file" />
    </stdio>
    <tests>
        <!-- Check that an effect was added in out VCF -->
        <!-- Check for a HTML header indicating that this was successful -->
        <!--
        <output name="statsFile">
            <assert_contents>
            <has_text text="SnpEff: Variant analysis" />
            </assert_contents>
        </output>
        --> 
        <!-- Setting filterOut throws exception in twilltestcase.py
        <test>
        <param name="input" ftype="vcf" value="vcf_homhet.vcf"/>
        <param name="inputFormat" value="vcf"/>
        <param name="outputFormat" value="vcf"/>
        <param name="genomeSrc" value="named"/>
        <param name="genome_version" value="testCase"/>
        <param name="udLength" value="0"/>
        <param name="filterHomHet" value="no_filter"/>
        <param name="filterIn" value="no_filter"/>
        <param name="generate_stats" value="False"/>
        <param name="filterOut" value="+-no-upstream"/>
        <output name="snpeff_output">
            <assert_contents>
            <has_text text="EFF=" />
            </assert_contents>
        </output>
        </test>
        --> 

        <test>
        <param name="input" ftype="vcf" value="vcf_homhet.vcf"/>
        <param name="inputFormat" value="vcf"/>
        <param name="outputFormat" value="vcf"/>
        <param name="genomeSrc" value="named"/>
        <param name="genome_version" value="testCase"/>
        <param name="udLength" value="0"/>
        <param name="filterHomHet" value="+-het"/>
        <param name="filterIn" value="no_filter"/>
        <!--
        <param name="filterOut" value=""/>
        -->
        <param name="generate_stats" value="False"/>
        <output name="snpeff_output">
            <assert_contents>
            <!-- Check that NO effects were added since -het is set -->
            <not_has_text text="EFF=NON_SYNONYMOUS_CODING" />
            </assert_contents>
        </output>
        </test>

        <test>
        <param name="input" ftype="vcf" value="vcf_homhet.vcf"/>
        <param name="inputFormat" value="vcf"/>
        <param name="outputFormat" value="vcf"/>
        <param name="genomeSrc" value="named"/>
        <param name="genome_version" value="testCase"/>
        <param name="udLength" value="0"/>
        <param name="filterHomHet" value="no_filter"/>
        <param name="filterIn" value="del"/>
        <!--
        <param name="filterOut" value=""/>
        -->
        <param name="generate_stats" value="False"/>
        <output name="snpeff_output">
            <assert_contents>
            <!-- Check that deleletions were evaluated -->
            <has_text_matching expression="Y\t59030478\t.*EFF=INTERGENIC" />
            <!-- Check that insertion on last line was NOT evaluated -->
            <has_text_matching expression="Y\t59032947\t.*SF=5\tGT" />
            </assert_contents>
        </output>
        </test>

        <!-- Check that NO UPSTREAM  effect was added -->
        <!-- Setting filterOut throws exception in twilltestcase.py
        <test>
        <param name="input" ftype="vcf" value="vcf_homhet.vcf"/>
        <param name="inputFormat" value="vcf"/>
        <param name="outputFormat" value="vcf"/>
        <param name="genomeSrc" value="named"/>
        <param name="genome_version" value="testCase"/>
        <param name="udLength" value="0"/>
        <param name="filterHomHet" value="no_filter"/>
        <param name="filterIn" value="no_filter"/>
        <param name="filterOut" value="+-no-upstream"/>
        <param name="generate_stats" value="False"/>
        <output name="snpeff_output">
            <assert_contents>
            <not_has_text text="UPSTREAM" />
            </assert_contents>
        </output>
        </test>
        -->

    </tests>
    <help>

This tool calculate the effect of variants (SNPs/MNPs/Insertions) and deletions.

For details about this tool, please go to http://snpEff.sourceforge.net

SnpEff citation:
"A program for annotating and predicting the effects of single nucleotide polymorphisms, SnpEff: SNPs in the genome of Drosophila melanogaster strain w1118; iso-2; iso-3.", Cingolani P, Platts A, Wang le L, Coon M, Nguyen T, Wang L, Land SJ, Lu X, Ruden DM. Fly (Austin). 2012 Apr-Jun;6(2):80-92. PMID: 22728672 [PubMed - in process]

SnpSift citation:
"Using Drosophila melanogaster as a model for genotoxic chemical mutational studies with a new program, SnpSift", Cingolani, P., et. al., Frontiers in Genetics, 3, 2012.

    </help>
</tool>