changeset 17:65ae79bddc69 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tool_collections/snpeff commit 5ab504d384299d8c2ed496650f1f9e4a887cd102
author iuc
date Thu, 06 Sep 2018 13:23:57 -0400
parents c9ecd2a96ecf
children dd3622f501f3
files snpEff.xml snpEff_create_db.xml snpEff_databases.xml snpEff_download.xml snpEff_macros.xml
diffstat 5 files changed, 68 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/snpEff.xml	Tue Aug 28 03:03:45 2018 -0400
+++ b/snpEff.xml	Thu Sep 06 13:23:57 2018 -0400
@@ -1,4 +1,4 @@
-<tool id="snpEff" name="SnpEff eff:" version="@wrapper_version@.galaxy1">
+<tool id="snpEff" name="SnpEff eff:" version="@WRAPPER_VERSION@.galaxy1">
     <description> annotate variants</description>
     <macros>
         <import>snpEff_macros.xml</import>
@@ -9,7 +9,7 @@
     <expand macro="stdio" />
     <expand macro="version_command" />
     <command><![CDATA[
-        snpEff @java_options@ eff
+        snpEff @JAVA_OPTIONS@ eff
         -i $inputFormat -o ${outputConditional.outputFormat} -upDownStreamLen $udLength
         #if $spliceSiteSize and str($spliceSiteSize) != '':
           -spliceSiteSize "$spliceSiteSize"
@@ -140,7 +140,7 @@
                 <param name="genomeVersion" type="select" label="Genome">
                     <!--GENOME    DESCRIPTION-->
                     <options from_data_table="snpeffv_genomedb">
-                            <filter type="static_value" name="snpeff_version" value="@snpeff_version@" column="1"/>
+                            <filter type="static_value" name="snpeff_version" value="@SNPEFF_VERSION@" column="1"/>
                             <filter type="unique_value" column="2" />
                     </options>
                 </param>
@@ -154,11 +154,11 @@
                 </section>
             </when>
             <when value="history">
-                <param name="snpeff_db" type="data" format="snpeffdb" label="@snpeff_version@ Genome Data">
+                <param name="snpeff_db" type="data" format="snpeffdb" label="@SNPEFF_VERSION@ Genome Data">
                     <options options_filter_attribute="metadata.snpeff_version" >
-                        <filter type="add_value" value="@snpeff_version@" />
+                        <filter type="add_value" value="@SNPEFF_VERSION@" />
                     </options>
-                    <validator type="expression" message="This version of SnpEff will only work with @snpeff_version@ genome databases">value is not None and value.metadata.snpeff_version == "@snpeff_version@"</validator>
+                    <validator type="expression" message="This version of SnpEff will only work with @SNPEFF_VERSION@ genome databases">value is not None and value.metadata.snpeff_version == "@SNPEFF_VERSION@"</validator>
                 </param>
                 <section name="reg_section" expanded="false" title="Regulation options">
                     <!-- From metadata -->
@@ -171,16 +171,16 @@
             </when>
             <when value="named">
                 <param name="genome_version" type="text" value="" label="Snpff Genome Version Name (e.g. GRCh38.76)">
-                    <help>@snpeff_database_url@</help>
-                    <validator type="regex" message="A genome version name is required">\S+</validator>
+                    <help>@SNPEFF_DATABASE_URL@</help>
+                    <validator type="empty_field" message="A genome version name is required" />
                 </param>
             </when>
             <when value="custom">
-                <param name="snpeff_db" type="data" format="snpeffdb" label="@snpeff_version@ Genome Data">
+                <param name="snpeff_db" type="data" format="snpeffdb" label="@SNPEFF_VERSION@ Genome Data">
                     <options options_filter_attribute="metadata.snpeff_version" >
-                        <filter type="add_value" value="@snpeff_version@" />
+                        <filter type="add_value" value="@SNPEFF_VERSION@" />
                     </options>
-                    <validator type="expression" message="This version of SnpEff will only work with @snpeff_version@ genome databases">value is not None and value.metadata.snpeff_version == "@snpeff_version@"</validator>
+                    <validator type="expression" message="This version of SnpEff will only work with @SNPEFF_VERSION@ genome databases">value is not None and value.metadata.snpeff_version == "@SNPEFF_VERSION@"</validator>
                 </param>
                 <param name="codon_table" type="select" label="Select genetic code for this sequence" help="If this sequence uses non-standard genetic code, select one from these options">
                     <option selected="true" value="Standard">Standard</option>
@@ -212,7 +212,7 @@
             </when>
         </conditional>
 
-        <param name="udLength" type="select" label="Upstream / Downstream length" argument="-ud" >
+        <param name="udLength" argument="-ud" 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>
@@ -223,7 +223,7 @@
             <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" argument="-ss">
+        <param name="spliceSiteSize" argument="-ss" type="select" optional="true" label="Set size for splice sites (donor and acceptor) in bases">
             <option value="1">1 base</option>
             <option value="2" selected="true">2 bases</option>
             <option value="3">3 bases</option>
@@ -242,9 +242,9 @@
             </param>
             <when value="no"/>
             <when value="yes">
-                <param name="spliceRegionExonSize" type="integer" value="" min="1" max="10" optional="true" label="Set size for splice site region within exons. Default: 3 bases" argument="-spliceRegionExonSize"/>
-                <param name="spliceRegionIntronMin" type="integer" value="" min="1" max="10" optional="true" label="Set minimum number of bases for splice site region within intron. Default: 3 bases" argument="-spliceRegionIntronMin"/>
-                <param name="spliceRegionIntronMax" type="integer" value="" min="1" max="10" optional="true" label="Set maximum number of bases for splice site region within intron. Default: 8 bases" argument="-spliceRegionIntronMax"/>
+                <param argument="-spliceRegionExonSize" type="integer" value="" min="1" max="10" optional="true" label="Set size for splice site region within exons. Default: 3 bases" />
+                <param argument="-spliceRegionIntronMin" type="integer" value="" min="1" max="10" optional="true" label="Set minimum number of bases for splice site region within intron. Default: 3 bases" />
+                <param argument="-spliceRegionIntronMax" type="integer" value="" min="1" max="10" optional="true" label="Set maximum number of bases for splice site region within intron. Default: 8 bases" />
             </when>
         </conditional>
 
@@ -274,7 +274,7 @@
             -->
         </param>
         <!-- -cancerSamples <file>           : Two column TXT file defining 'oringinal \t derived' samples. -->
-        <param name="intervals" type="data" format="bed" optional="true" label="Use custom interval file for annotation" argument="-interval"/>
+        <param name="intervals" argument="-interval" type="data" format="bed" optional="true" label="Use custom interval file for annotation" />
         <param name="transcripts" type="data" format="tabular" optional="true" label="Only use the transcripts in this file" help="Format is 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>
@@ -337,20 +337,20 @@
             </when>
         </conditional>
 
-        <param name="offset" type="select" display="radio" label="Chromosomal position" argument="-0 and -1">
+        <param name="offset" type="select" display="radio" label="Chromosomal position">
             <option value="default" 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" label="Text to prepend to chromosome name" argument="-chr">
+        <param argument="-chr" type="text" 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 allowed">^\S*$</validator>
         </param>
-        <param name="generate_stats" type="boolean" truevalue="" falsevalue="-noStats" checked="true" label="Produce Summary Stats" argument="-noStats"/>
-        <param name="noLog" type="boolean" truevalue="-noLog" falsevalue="" checked="true" label="Suppress reporting usage statistics to server" argument="-noLog"/>
+        <param name="generate_stats" argument="-noStats" type="boolean" truevalue="" falsevalue="-noStats" checked="true" label="Produce Summary Stats" />
+        <param argument="-noLog" type="boolean" truevalue="-noLog" falsevalue="" checked="true" label="Suppress reporting usage statistics to server" />
     </inputs>
     <outputs>
         <data name="snpeff_output" format="vcf">
@@ -374,7 +374,7 @@
             <param name="genomeSrc" value="named"/>
             <param name="genome_version" value="ebola_zaire"/>
             <param name="udLength" value="0"/>
-            <param name="generate_stats" value="False"/>
+            <param name="generate_stats" value="false"/>
             <output name="snpeff_output">
                 <assert_contents>
                     <has_text_matching expression="KJ660346\t572\t.*missense_variant" />
@@ -384,7 +384,6 @@
         </test>
     </tests>
     <help><![CDATA[
-
 **What it does**
 
 SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of genetic variants (such as amino acid changes).
@@ -410,8 +409,8 @@
 Suppose you have a huge file describing all the differences between your sample and the reference genome. But you want to know more about these variants than just their genetic coordinates. E.g.: Are they in a gene? In an exon? Do they change protein coding? Do they cause premature stop codons? SnpEff can help you answer all these questions. The process of adding this information about the variants is called "Annotation".
 SnpEff provides several degrees of annotations, from simple (e.g. which gene is each variant affecting) to extremely complex annotations (e.g. will this non-coding variant affect the expression of a gene?). It should be noted that the more complex the annotations, the more it relies in computational predictions. Such computational predictions can be incorrect, so results from SnpEff (or any prediction algorithm) cannot be trusted blindly, they must be analyzed and independently validated by corresponding wet-lab experiments.
 
-@snpeff_in_galaxy_info@
-@external_documentation@
+@SNPEFF_IN_GALAXY_INFO@
+@EXTERNAL_DOCUMENTATION@
 ]]>
     </help>
     <expand macro="citations" />
--- a/snpEff_create_db.xml	Tue Aug 28 03:03:45 2018 -0400
+++ b/snpEff_create_db.xml	Thu Sep 06 13:23:57 2018 -0400
@@ -1,4 +1,4 @@
-<tool id="snpEff_build_gb" name="SnpEff build:" version="@wrapper_version@.galaxy3">
+<tool id="snpEff_build_gb" name="SnpEff build:" version="@WRAPPER_VERSION@.galaxy3">
     <description> database from Genbank or GFF record</description>
     <macros>
         <import>snpEff_macros.xml</import>
@@ -13,7 +13,6 @@
     <expand macro="stdio" />
     <expand macro="version_command" />
     <command><![CDATA[
-
         #if str( $input_type.input_type_selector ) == "gb":
             #if str( $input_type.fasta ) == "yes":
                 python3 '$__tool_directory__/gbk2fa.py' '${input_type.input_gbk}' '${output_fasta}'
@@ -41,7 +40,7 @@
             ln -s '${input_type.input_gff}' '${snpeff_output.files_path}'/'${genome_version}'/genes.gff &&
         #end if
 
-        snpEff @java_options@ build -v
+        snpEff @JAVA_OPTIONS@ build -v
         -configOption '${genome_version}'.genome='${genome_version}'
         -configOption '${genome_version}'.codonTable='${codon_table}'
         #if str( $input_type.input_type_selector ) == "gb":
@@ -55,8 +54,8 @@
 
     ]]></command>
     <inputs>
-        <param name="genome_version" type="text" value="" label="Name for the database" help="for E. coli K12 you may want to use 'EcK12' etc.">
-            <validator type="regex" message="A genome version name is required">\S+</validator>
+        <param name="genome_version" type="text" value="" label="Name for the database" help="For E. coli K12 you may want to use 'EcK12' etc.">
+            <validator type="empty_field" message="A genome version name is required" />
         </param>
         <conditional name="input_type">
             <param name="input_type_selector" type="select" display="radio" label="Input annotations are in" help="Specify format for annotations you are using to create SnpEff database">
@@ -69,9 +68,9 @@
                         <option value="yes" selected="true">Yes</option>
                         <option value="no">No</option>
                 </param>
-                <param type="boolean" name="remove_version" truevalue="--remove_version" falsevalue="" checked="true" label="Remove sequence version label?" help="Genbank sequences have vesion numbers such as B000564.2. This option removes them leaving only B000564" argument="--remove_version"/>
+                <param argument="--remove_version" type="boolean" truevalue="--remove_version" falsevalue="" checked="true" label="Remove sequence version label?" help="Genbank sequences have vesion numbers such as B000564.2. This option removes them leaving only B000564" />
             </when>
-            <when value="gff"> 
+            <when value="gff">
                 <param name="input_gff" type="data" format="gff3" label="GFF dataset to build database from" help="This GFF file will be used to generate snpEff database"/>
                 <param name="input_fasta" type="data" format="fasta,fasta.gz" label="Genome in FASTA format" help="This dataset is required for generating SnpEff database. See help section below."/>
             </when>
@@ -105,7 +104,7 @@
         </param>
     </inputs>
     <outputs>
-        <data name="snpeff_output" format="snpeffdb" label="@snpeff_version@ database for ${genome_version}"/>
+        <data name="snpeff_output" format="snpeffdb" label="@SNPEFF_VERSION@ database for ${genome_version}"/>
         <data name="output_fasta" format="fasta" label="Fasta sequences for ${genome_version}">
             <filter>input_type['input_type_selector'] == 'gb'</filter>
             <filter>input_type['fasta'] == 'yes'</filter>
@@ -160,7 +159,7 @@
     <help><![CDATA[
 **What it does**
 
-This tool uses `"snpEff build -genbank"` or `"snpEff build -gff3"` commands to create a snpEff database. 
+This tool uses `"snpEff build -genbank"` or `"snpEff build -gff3"` commands to create a snpEff database.
 
 ------
 
@@ -170,12 +169,12 @@
 
 Using Genbank data for creating databases has several advantages:
 
- #. Genbank files contain annotations (such as locations of genes) together with sequences. This ensures that these two are in sync with each other. 
+ #. Genbank files contain annotations (such as locations of genes) together with sequences. This ensures that these two are in sync with each other.
  #. When you are analyzing small genomes (or not so small) it is much more convenient to create a database on the fly and use it.
 
  .. class:: warningmark
 
- SnpEff errors out on highly fragmented genomes containing multiple scaffolds. This is because a single gene may be split between multiple scaffolds causing SnpEff to crash. If this is happening use GFF route described below. 
+ SnpEff errors out on highly fragmented genomes containing multiple scaffolds. This is because a single gene may be split between multiple scaffolds causing SnpEff to crash. If this is happening use GFF route described below.
 
 -------
 
@@ -184,7 +183,7 @@
 Suppose you have a series of Illumina reads from an experiment involving *E. coli* K-12 MG1655. You want to map these reads to the reference genome of K-12 MG1655, call variants, and annotate them using snpEff. This tool enables you to follow the following analysis steps:
 
  #. Go to `NCBI <http://www.ncbi.nlm.nih.gov>`_ page for K-12 MG1655 genome (note that all NCBI genomes have similar list of files associated with them).
- #. Copy URL for file with extension `gbff.gz` 
+ #. Copy URL for file with extension `gbff.gz`
  #. Paste the URL into upload tool and set datatype to `genbank.gz`.
  #. Use this tool to generate a snpEff database and FASTA sequences from the dataset you've uploaded during the previous step.
  #. Use your Illumina reads to map against FASTA dataset generated in the previous step using BWA-MEM.
@@ -208,7 +207,7 @@
 
 ------
 
-**GFF usage scenario**   
+**GFF usage scenario**
 
 The following example also uses *E. coli* K-12 MG1655:
 
@@ -219,8 +218,8 @@
 #. Map your reads against the FASTA dataset and continue as described in the above example.
 
 
-@snpeff_in_galaxy_info@
-@external_documentation@
+@SNPEFF_IN_GALAXY_INFO@
+@EXTERNAL_DOCUMENTATION@
 ]]>
     </help>
     <expand macro="citations" />
--- a/snpEff_databases.xml	Tue Aug 28 03:03:45 2018 -0400
+++ b/snpEff_databases.xml	Thu Sep 06 13:23:57 2018 -0400
@@ -1,4 +1,4 @@
-<tool id="snpEff_databases" name="SnpEff databases:" version="@wrapper_version@.galaxy1">
+<tool id="snpEff_databases" name="SnpEff databases:" version="@WRAPPER_VERSION@.galaxy1">
     <description> list available databases</description>
     <macros>
         <import>snpEff_macros.xml</import>
@@ -9,7 +9,6 @@
     <expand macro="stdio" />
     <expand macro="version_command" />
     <command><![CDATA[
-
         snpEff databases | grep -v '^---' | sed 's/^Genome/#Genome/' | sed 's/  *//g'
 
         #if $include_pattern:
@@ -21,10 +20,9 @@
         #end if
 
         > '${snpeff_dbs}'
-
     ]]></command>
     <inputs>
-        <param name="include_pattern" size="40" type="text" value="" optional="True" label="List entries matching the following expression" help="Databases matching this expression will be listed. Here you can enter text or regular expression. For example, to show only mouse databases use 'Mouse'. Note that this parameter is case-sensitive.">
+        <param name="include_pattern" type="text" value="" optional="true" label="List entries matching the following expression" help="Databases matching this expression will be listed. Here you can enter text or regular expression. For example, to show only mouse databases use 'Mouse'. Note that this parameter is case-sensitive.">
             <sanitizer>
                 <valid initial="string.digits,string.letters">
                     <add value="^" />
@@ -32,7 +30,7 @@
                 </valid>
             </sanitizer>
         </param>
-        <param name="exclude_pattern" size="40" type="text" value="" optional="True" label="Do not output entries matching the following expression" help="Databases matching this expression WILL NOT BE listed. Here you can enter text or regular expression. For excample, to avoid all ENSEMBL bundles enter 'ENSEMBL'. Note that this parameter is case-sensitive.">
+        <param name="exclude_pattern" type="text" value="" optional="true" label="Do not output entries matching the following expression" help="Databases matching this expression WILL NOT BE listed. Here you can enter text or regular expression. For excample, to avoid all ENSEMBL bundles enter 'ENSEMBL'. Note that this parameter is case-sensitive.">
             <sanitizer>
                 <valid initial="string.digits,string.letters">
                     <add value="^" />
@@ -43,7 +41,7 @@
 
     </inputs>
     <outputs>
-        <data format="tabular" name="snpeff_dbs" label="${tool.name} @snpeff_version@ available databases" />
+        <data name="snpeff_dbs" format="tabular" label="${tool.name} @SNPEFF_VERSION@ available databases" />
     </outputs>
     <tests>
         <test>
@@ -63,10 +61,9 @@
         </test>
     </tests>
     <help><![CDATA[
-
 **What it does**
 
-This tool downloads the master list of snpEff databases from @snpeff_database_url@. You can then look at this list and decide which database to use for your analysis. For example, if **List entries matching the following expression** parameter of this tool is set to *Mouse* the it will produce a tabular dataset with the following content::
+This tool downloads the master list of snpEff databases from @SNPEFF_DATABASE_URL@. You can then look at this list and decide which database to use for your analysis. For example, if **List entries matching the following expression** parameter of this tool is set to *Mouse* the it will produce a tabular dataset with the following content::
 
     mm10  Mouse  http://downloads.sourceforge.net/project/snpeff/databases/v4_3/snpEff_v4_3_mm10.zip
     mm9   Mouse  http://downloads.sourceforge.net/project/snpeff/databases/v4_3/snpEff_v4_3_mm9.zip
@@ -84,8 +81,8 @@
     #. Use **SnpEff download** tool. It will download the database to the history and you will be able to use it in **SnpEff eff** tool using *Downloaded snpEff database in your history* option of the **Genome source** parameter.
     #. Use *Download on demand* option of the **SnpEff eff** tool (again, **Genome source** parameter). In this case snpEff will download the database before performing annotation.
 
-@snpeff_in_galaxy_info@
-@external_documentation@
+@SNPEFF_IN_GALAXY_INFO@
+@EXTERNAL_DOCUMENTATION@
     ]]></help>
     <expand macro="citations" />
 </tool>
--- a/snpEff_download.xml	Tue Aug 28 03:03:45 2018 -0400
+++ b/snpEff_download.xml	Thu Sep 06 13:23:57 2018 -0400
@@ -1,4 +1,4 @@
-<tool id="snpEff_download" name="SnpEff download:" version="@wrapper_version@.galaxy1">
+<tool id="snpEff_download" name="SnpEff download:" version="@WRAPPER_VERSION@.galaxy2">
     <description> download a pre-built database</description>
     <macros>
         <import>snpEff_macros.xml</import>
@@ -9,16 +9,17 @@
     <expand macro="stdio" />
     <expand macro="version_command" />
     <command><![CDATA[
-snpEff download -dataDir '$snpeff_db.files_path' -v '$genome_version'
+snpEff download -dataDir "\$PWD/temp" -v '$genome_version' &&
+mkdir -p '$snpeff_db.files_path' &&
+mv temp/'$genome_version' '$snpeff_db.files_path'
     ]]></command>
     <inputs>
         <param name="genome_version" type="text" value="" label="Select the annotation database you want to download (e.g. GRCh38.86, mm10 etc.)" help="The list of available databases can be obtained with 'SnpEff databases' tool">
-            <help>@snpeff_database_url@</help>
-            <validator type="regex" message="A genome version name is required">\S+</validator>
+            <validator type="empty_field" message="A genome version name is required" />
         </param>
     </inputs>
     <outputs>
-        <data format="snpeffdb" name="snpeff_db" label="${tool.name} @snpeff_version@ ${genome_version}"/>
+        <data name="snpeff_db" format="snpeffdb" label="${tool.name} @SNPEFF_VERSION@ ${genome_version}"/>
     </outputs>
     <tests>
         <test>
@@ -29,12 +30,19 @@
                 </assert_contents>
             </output>
         </test>
+        <test>
+            <param name="genome_version" value="Bdellovibrio_bacteriovorus_hd100"/>
+            <output name="snpeff_db">
+                <assert_contents>
+                    <has_text text="Bdellovibrio_bacteriovorus_hd100" />
+                </assert_contents>
+            </output>
+        </test>
     </tests>
     <help><![CDATA[
-
 **What it does**
 
-This tool downloads a specified database from @snpeff_database_url@. It deposits it into the history.
+This tool downloads a specified database from @SNPEFF_DATABASE_URL@. It deposits it into the history.
 
 -------
 
@@ -47,8 +55,8 @@
     #. Download mm10 snpEff database by typing *mm10* into **Select the annotation database...** text box.
     #. Use **SnpEff eff** by choosing the downloaded database from the history using *Downloaded snpEff database in your history* option of the **Genome source** parameter.
 
-@snpeff_in_galaxy_info@
-@external_documentation@
+@SNPEFF_IN_GALAXY_INFO@
+@EXTERNAL_DOCUMENTATION@
     ]]></help>
     <expand macro="citations" />
 </tool>
--- a/snpEff_macros.xml	Tue Aug 28 03:03:45 2018 -0400
+++ b/snpEff_macros.xml	Thu Sep 06 13:23:57 2018 -0400
@@ -13,18 +13,18 @@
 snpEff -version
     ]]></version_command>
   </xml>
-  <token name="@wrapper_version@">4.3+T</token>
-  <token name="@snpeff_version@">SnpEff4.3</token>
-  <token name="@snpeff_database_url@">https://sourceforge.net/projects/snpeff/files/databases/v4_3/</token>
-  <token name="@java_options@">-Xmx\${GALAXY_MEMORY_MB:-8192}m</token>
-  <token name="@external_documentation@">
+  <token name="@WRAPPER_VERSION@">4.3+T</token>
+  <token name="@SNPEFF_VERSION@">SnpEff4.3</token>
+  <token name="@SNPEFF_DATABASE_URL@">https://sourceforge.net/projects/snpeff/files/databases/v4_3/</token>
+  <token name="@JAVA_OPTIONS@">-Xmx\${GALAXY_MEMORY_MB:-8192}m</token>
+  <token name="@EXTERNAL_DOCUMENTATION@">
 
 
 -------
 
 To learn more about snpEff read its manual at http://snpeff.sourceforge.net/SnpEff_manual.html
   </token>
-  <token name="@snpeff_in_galaxy_info@">
+  <token name="@SNPEFF_IN_GALAXY_INFO@">
 
 -------