diff cmsearch.xml @ 5:6e18e0b098cd draft

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/infernal commit 80c721dcfe02a2b8baf8e2c64b76cbcd71b23d86
author bgruening
date Sat, 21 Jan 2017 17:36:57 -0500
parents 2c2c5e5e495b
children c9e29ac5d099
line wrap: on
line diff
--- a/cmsearch.xml	Mon Dec 19 15:27:06 2016 -0500
+++ b/cmsearch.xml	Sat Jan 21 17:36:57 2017 -0500
@@ -1,193 +1,236 @@
-<tool id="infernal_cmsearch" name="Search covariance model(s)" version="1.1.0.2">
-    <description>against a sequence database (cmsearch)</description>
-    <parallelism method="multi" split_inputs="seqdb" split_mode="to_size" split_size="500" shared_inputs="" merge_outputs="outfile,multiple_alignment_output"></parallelism>
-    <requirements>
-        <requirement type="package">infernal</requirement>
-        <requirement type="package" version="1.1">infernal</requirement>
-        <requirement type="package" version="8.22">gnu_coreutils</requirement>
-    </requirements>
+<tool id="infernal_cmsearch" name="cmsearch" version="@VERSION@.0">
+    <description>Search covariance model(s) against a sequence database </description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <parallelism method="multi" split_inputs="seqdb" split_mode="to_size" split_size="500" merge_outputs="outfile,multiple_alignment_output"></parallelism>
+    <expand macro="requirements"/>
+    <expand macro="stdio" />
     <command>
 <![CDATA[
         ## a temp file is needed, because the standard tabular output from infernal is not usefull in Galaxy
         ## it will be converted to a tab delimited file and piped to Galaxy
-        temp_tabular_output=\$(mktemp);
+        temp_tabular_output=\$(mktemp) &&
 
         cmsearch
             ## Infernal Options
-            --cpu "\${GALAXY_SLOTS:-12}"
+            --cpu "\${GALAXY_SLOTS:-2}"
             -o /dev/null
             --tformat $seqdb.ext ##target format: fasta, embl, genbank, ddbj, stockholm, pfam, a2m, afa, clustal, and phylip
             $bottomonly
             $toponly
             $cyk
+            $acyk
             $notrunc
-            $max
-            $nohmm
-            $mid
-            ##$bitscore_thresholds
+            $anytrunc
+            $nonull3
+            #if $smxsize <> 128.0
+                --smxsize $smxsize
+            #end if
+            #if $mxsize <> 128.0
+                --mxsize $mxsize
+            #end if
             --tblout \$temp_tabular_output
             $g
+            #if $Z
+                -Z $Z
+            #end if
             #if $A:
-                $A $multiple_alignment_output
+                $A '$multiple_alignment_output'
             #end if
-
             #if str($inclusion_thresholds_opts.inclusion_thresholds_selector) == "--incE":
                 --incE $inclusion_thresholds_opts.incE
             #elif str($inclusion_thresholds_opts.inclusion_thresholds_selector) == "--incT":
                 --incT $inclusion_thresholds_opts.incT
             #end if
-
             #if str($reporting_thresholds_opts.reporting_thresholds_selector) == "-E":
                 -E $reporting_thresholds_opts.E
             #elif str($reporting_thresholds_opts.reporting_thresholds_selector) == "-T":
                 -T $reporting_thresholds_opts.T
             #end if
-
+            $model_thresholds.cut_ga
+            $model_thresholds.cut_nc
+            $model_thresholds.cut_tc
+            #if $acceleration_huristics.acceleration_huristics_selector == "FZ"
+                --FZ $$acceleration_huristics.FZ
+            #else
+                $acceleration_huristics.acceleration_huristics_selector
+                #if $acceleration_huristics.acceleration_huristics_selector == "--mid"
+                    --Fmid $acceleration_huristics.Fmid
+                #end if
+            #end if
             ## CM file from the history or stored as database on disc
-
             #if str($cm_opts.cm_opts_selector) == "db":
                 $cm_opts.database.fields.path
             #else:
                 $cm_opts.cmfile
             #end if
-
             ## sequence file
-            $seqdb
+            '$seqdb'
             2>&1
-            ;
-
+            &&
             ## 1. replace all lines starting # (comment lines)
             ## 2. replace the first 18 spaces with tabs, 18th field is a free text field (can contain spaces)
-            sed -e 's/#.*$//' -e '/^$/d' -e 's/\s\+/\t/g' -e 's/\t/ /18g' \$temp_tabular_output > $outfile
+            sed -e 's/#.*$//' -e '/^$/d' -e 's/\s\+/\t/g' -e 's/\t/ /18g' \$temp_tabular_output > '$outfile'
 
 ]]>
     </command>
-        <inputs>
+    <inputs>
 
-            <param name="seqdb" type="data" format="fasta" label="Sequence database"/>
+        <param name="seqdb" type="data" format="fasta" label="Sequence database"/>
 
-            <conditional name="cm_opts">
-                <param name="cm_opts_selector" type="select" label="Subject covariance models">
-                  <option value="db" selected="True">Locally installed covariance models</option>
-                  <option value="histdb">Covariance model from your history</option>
+        <conditional name="cm_opts">
+            <param name="cm_opts_selector" type="select" label="Subject covariance models">
+              <option value="db" selected="True">Locally installed covariance models</option>
+              <option value="histdb">Covariance model from your history</option>
+            </param>
+            <when value="db">
+                <param name="database" type="select" label="Covariance models">
+                    <options from_file="infernal.loc">
+                      <column name="value" index="0"/>
+                      <column name="name" index="1"/>
+                      <column name="path" index="2"/>
+                    </options>
                 </param>
-                <when value="db">
-                    <param name="database" type="select" label="Covariance models">
-                        <options from_file="infernal.loc">
-                          <column name="value" index="0"/>
-                          <column name="name" index="1"/>
-                          <column name="path" index="2"/>
-                        </options>
-                    </param>
-                </when>
-                <when value="histdb">
-                    <param name="cmfile" type="data" format="cm" label="Covariance models file from the history."/>
-                </when>
-            </conditional>
+            </when>
+            <when value="histdb">
+                <param name="cmfile" type="data" format="cm" label="Covariance models file from the history."/>
+            </when>
+        </conditional>
+
+        <param argument="-g" truevalue="-g" falsevalue="" checked="False" type="boolean"
+            label="Turn on the glocal alignment algorithm" help="... global with respect to the query model and local with respect to the target database."/>
+        <param argument="-Z" type="float" min="0" optional="true" label="Calculate E-values as if the search space size is 'x' megabases (Mb)" help=""/>
+
+        <param argument="--bottomonly" truevalue="--bottomonly" falsevalue="" checked="False" type="boolean"
+            label="Only search the bottom (Crick) strand of target sequences" help="in the sequence database"/>
+        <param argument="--toponly" truevalue="--toponly" falsevalue="" checked="False" type="boolean"
+            label="Only search the top (Watson) strand of target sequences" help="in the sequence database"/>
+
+        <param argument="--cyk" truevalue="--cyk" falsevalue="" checked="False" type="boolean"
+            label="Use the CYK algorithm, not Inside, to determine the final score of all hits" help=""/>
+        <param argument="--acyk" truevalue="--cyk" falsevalue="" checked="False" type="boolean"
+            label="Use the CYK algorithm to align hits" help="By default, the Durbin/Holmes optimal accuracy algorithm is used, which finds the alignment that maximizes the expected accuracy of all aligned residues."/>
 
-            <param name="g" truevalue="-g" falsevalue="" checked="False" type="boolean"
-                label="Turn on the glocal alignment algorithm" help="... global with respect to the query model and local with respect to the target database."/>
-
-            <param name="bottomonly" truevalue="--bottomonly" falsevalue="" checked="False" type="boolean"
-                label="Only search the bottom (Crick) strand of target sequences" help="in the sequence database"/>
-            <param name="toponly" truevalue="--toponly" falsevalue="" checked="False" type="boolean"
-                label="Only search the top (Watson) strand of target sequences" help="in the sequence database"/>
-
-            <param name="cyk" truevalue="--cyk" falsevalue="" checked="False" type="boolean"
-                label="Use the CYK algorithm, not Inside, to determine the final score of all hits" help=""/>
-            <param name="--acyk" truevalue="--cyk" falsevalue="" checked="False" type="boolean"
-                label="Use the CYK algorithm to align hits" help="By default, the Durbin/Holmes optimal accuracy algorithm is used, which finds the alignment that maximizes the expected accuracy of all aligned residues."/>
+        <param argument="--notrunc" truevalue="--notrunc" falsevalue="" checked="False" type="boolean"
+            label="Skip truncated hit detection" help=""/>
+        <param argument="--anytrunc" truevalue="--anytrunc" falsevalue="" checked="false" type="boolean"
+            label="Allow full and truncated hits anywhere within sequences" help=""/>
+        <param argument="--nonull3" truevalue="--nonull3" falsevalue="" checked="false" type="boolean"
+            label="Turn off the null3 CM score corrections for biased composition" help="This correction is not used during the HMM filter stages."/>
+        <param argument="--mxsize" type="float" value="128.0" min="0.1"
+            label="Set the maximum allowable CM DP matrix size to 'x' megabytes" help=""/>
+        <param argument="--smxsize" type="float" value="128.0" min="0.1"
+            label="Set the maximum allowable CM search DP matrix size to 'x' megabytes." help=""/>
 
-            <param name="notrunc" truevalue="--notrunc" falsevalue="" checked="False" type="boolean"
-                label="Turn off truncated hit detection" help=""/>
-
-            <!-- accelleration pipeline -->
-
-            <param name="max" truevalue="--max" falsevalue="" checked="False" type="boolean"
-                label="Turn off all filters, and run non-banded Inside on every full-length target sequence" help="This
-                increases sensitivity somewhat, at an extremely large cost in speed."/>
-
-            <param name="nohmm" truevalue="--nohmm" falsevalue="" checked="False" type="boolean"
-                label="Turn off all HMM filter stages " help=""/>
-
-            <param name="mid" truevalue="--mid" falsevalue="" checked="False" type="boolean"
-                label="Turn off the HMM SSV and Viterbi filter stages" help=""/>
+        <!-- accelleration pipeline -->
+        <conditional name="acceleration_huristics">
+            <param name="acceleration_huristics_selector" type="select" label="Options controlling acceleration heuristics" help="These options are, in order from least strict (slowest but most sensitive) to most strict (fastest but least sensitive)">
+                <option value="--max">Turn all heuristic filters off (--max)</option>
+                <option value="--nohmm">Skip all HMM filter stages, use only CM (--nohmm)</option>
+                <option value="--mid">Skip first two HMM filter stages (SSV and Vit) (--mid)</option>
+                <option value="--default" selected="true">Run search space size-dependent pipeline (--default)</option>
+                <option value="--rfam">Use a strict filtering strategy devised for large databases (more than 20 Gb) (--rfam)</option>
+                <option value="--hmmonly">Use HMM only, don't use a CM at all (--hmmonly)</option>
+                <option value="FZ">set filters to defaults used for a search space of size 'x' Mb (--FZ)</option>
+            </param>
+            <when value="--max">
+            </when>
+            <when value="--nohmm">
+            </when>
+            <when value="--mid">
+                    <param argument="--Fmid" type="float" value="0.02" label="P-value threshold for HMM stages"/>
+            </when>
+            <when value="--default">
+            </when>
+            <when value="--rfam">
+            </when>
+            <when value="--hmmonly">
+            </when>
+            <when value="FZ">
+                <param argument="--FZ" type="float" value="" label="Size of search space in Mb"/>
+            </when>
+        </conditional>
 
 
-            <!-- Options for model-specific score thresholding -->
-            <!--
-            <param name="bitscore_thresholds" type="select" label="Bit score thresholds" help="Curated CM databases may define specific bit score thresholds for each CM, superseding any thresholding based on statistical significance alone.">
-                <option value="" selected="true">None</option>
-                <option value=" - -cut_ga">GA (gathering) bit scores</option>
-                <option value=" - -cut_nc">NC (noise cutoff) bit score</option>
-                <option value=" - -cut_tc">TC (trusted cutoff) bit score</option>
+
+        <!-- Options for model-specific score thresholding -->
+
+        <section name="model_thresholds" title="Options controlling model-specific reporting thresholds" help="Curated CM databases may define specific bit score thresholds for each CM, superseding any thresholding based on statistical significance alone.">
+            <param argument="--cut_ga" truevalue="--cut_ga" falsevalue="" checked="false" type="boolean"
+                label="Use CM's GA gathering cutoffs as reporting thresholds" help="GA thresholds are generally considered to be the reliable curated thresholds defining family membership"/>
+            <param argument="--cut_nc" truevalue="--cut_nc" falsevalue="" checked="false" type="boolean"
+                label="use CM's NC noise cutoffs as reporting thresholds" help="NC thresholds are generally considered to be the score of the highest-scoring known false positive."/>
+            <param argument="--cut_tc" truevalue="--cut_tc" falsevalue="" checked="false" type="boolean"
+                label="use CM's TC trusted cutoffs as reporting thresholds" help="TC thresholds are generally considered to be the score of the lowest-scoring known true positive that is above all known false positives."/>
+        </section>
+
+        <!-- Options for inclusion thresholds -->
+        <conditional name="inclusion_thresholds_opts">
+            <param name="inclusion_thresholds_selector" type="select" label="Inclusion thresholds"
+            help="Inclusion thresholds are stricter than reporting thresholds. Inclusion thresholds control which hits are considered to be reliable enough to be included in an output alignment or in a possible subsequent search round, or marked as significant (”!”) as opposed to questionable (”?”) in hit output.">
+                <option value="" selected="true">default</option>
+                <option value="--incE">Use E-value</option>
+                <option value="--incT">Use bit score</option>
             </param>
-            -->
-            <!-- Options for inclusion thresholds -->
-
-
-            <conditional name="inclusion_thresholds_opts">
-                <param name="inclusion_thresholds_selector" type="select" label="Inclusion thresholds"
-                help="Inclusion thresholds are stricter than reporting thresholds. Inclusion thresholds control which hits are considered to be reliable enough to be included in an output alignment or in a possible subsequent search round, or marked as significant (”!”) as opposed to questionable (”?”) in hit output.">
-                    <option value="" selected="true">default</option>
-                    <option value="--incE">Use E-value</option>
-                    <option value="--incT">Use bit score</option>
+            <when value=""/>
+            <when value="--incE">
+                <param name="incE" type="float" value="0.01" label="Use E-value" help="of &lt;= X as the hit inclusion threshold.">
+                    <sanitizer>
+                        <valid initial="string.printable">
+                            <remove value="&apos;"/>
+                        </valid>
+                    </sanitizer>
+                </param>
+            </when>
+            <when value="--incT">
+                <param name="incT" type="integer" value="0" label="Use bit score" help="of >= X as the hit inclusion threshold.">
+                    <sanitizer>
+                        <valid initial="string.printable">
+                            <remove value="&apos;"/>
+                        </valid>
+                    </sanitizer>
                 </param>
-                <when value=""/>
-                <when value="--incE">
-                    <param name="incE" type="float" value="0.01" label="Use E-value" help="of &lt;= X as the hit inclusion threshold.">
-                        <sanitizer>
-                            <valid initial="string.printable">
-                                <remove value="&apos;"/>
-                            </valid>
-                        </sanitizer>
-                    </param>
-                </when>
-                <when value="--incT">
-                    <param name="incT" type="integer" value="0" label="Use bit score" help="of >= X as the hit inclusion threshold.">
-                        <sanitizer>
-                            <valid initial="string.printable">
-                                <remove value="&apos;"/>
-                            </valid>
-                        </sanitizer>
-                    </param>
-                </when>
-            </conditional>
+            </when>
+        </conditional>
 
-            <!-- Options controlling reporting thresholds -->
+        <!-- Options controlling reporting thresholds -->
 
-            <conditional name="reporting_thresholds_opts">
-                <param name="reporting_thresholds_selector" type="select" label="reporting thresholds"
-                help="Reporting thresholds control which hits are reported in output files">
-                    <option value="" selected="true">default</option>
-                    <option value="-E">Use E-value</option>
-                    <option value="-T">Use bit score</option>
+        <conditional name="reporting_thresholds_opts">
+            <param name="reporting_thresholds_selector" type="select" label="reporting thresholds"
+            help="Reporting thresholds control which hits are reported in output files">
+                <option value="" selected="true">default</option>
+                <option value="-E">Use E-value</option>
+                <option value="-T">Use bit score</option>
+            </param>
+            <when value=""/>
+            <when value="-E">
+                <param name="E" type="float" value="10.0" label="Use E-value" help="of &lt;= X as the hit reporting threshold. The default is 10.0, meaning that on average, about 10 false positives will be reported per query, so you can see the top of the noise and decide for yourself if it’s really noise.">
+                    <sanitizer>
+                        <valid initial="string.printable">
+                            <remove value="&apos;"/>
+                        </valid>
+                    </sanitizer>
                 </param>
-                <when value=""/>
-                <when value="-E">
-                    <param name="E" type="float" value="10.0" label="Use E-value" help="of &lt;= X as the hit reporting threshold. The default is 10.0, meaning that on average, about 10 false positives will be reported per query, so you can see the top of the noise and decide for yourself if it’s really noise.">
-                        <sanitizer>
-                            <valid initial="string.printable">
-                                <remove value="&apos;"/>
-                            </valid>
-                        </sanitizer>
-                    </param>
-                </when>
-                <when value="-T">
-                    <param name="T" type="integer" value="0" label="Use bit score" help="of >= X as the hit reporting threshold.">
-                        <sanitizer>
-                            <valid initial="string.printable">
-                                <remove value="&apos;"/>
-                            </valid>
-                        </sanitizer>
-                    </param>
-                </when>
-            </conditional>
+            </when>
+            <when value="-T">
+                <param name="T" type="integer" value="0" label="Use bit score" help="of >= X as the hit reporting threshold.">
+                    <sanitizer>
+                        <valid initial="string.printable">
+                            <remove value="&apos;"/>
+                        </valid>
+                    </sanitizer>
+                </param>
+            </when>
+        </conditional>
 
-            <param name="A" truevalue="-A" falsevalue="" checked="False" type="boolean"
-                label="Save a multiple alignment of all significant hits" help="... those satisfying inclusion thresholds"/>
-
-        </inputs>
+        <param argument="-A" truevalue="-A" falsevalue="" checked="False" type="boolean"
+            label="Save a multiple alignment of all significant hits" help="... those satisfying inclusion thresholds"/>
+        <param argument="--noali" type="boolean" truevalue="--noali" falsevalue="" checked="false"
+            label="Omit the alignment section from the main input" help="This can greatly reduce the output volume"/>
+        <param argument="--verbose" type="boolean" truevalue="--verbose" falsevalue="" checked="false"
+            label="Include extra search pipeline statistics in the main output" help="They include filter survival statistics for truncated hit detection and number of envelopes discarded due to matrix size overflows."/>
+    </inputs>
     <outputs>
 
         <data format="tabular" name="outfile" label="cmsearch on ${on_string}"/>
@@ -196,6 +239,18 @@
         </data>
 
     </outputs>
+    <tests>
+        <test>
+            <conditional name="cm_opts">
+                <param name="cm_opts_selector" value="histdb"/>
+                <param name="cmfile" value="cmsearch_input1.cm"/>
+            </conditional>
+            <param name="seqdb" value="cmsearch_input2.fa"/>
+            <output name="outfile" file="cmsearch_result.tabular"/>
+
+        </test>
+    </tests>
+
     <help>
 <![CDATA[
 
@@ -210,7 +265,7 @@
 
 **Input**
 
-The CM query file must have been calibrated for E-values with cmcalibrate. As a special exception, any models CM query files that have zero basepairs need not be calibrated. 
+The CM query file must have been calibrated for E-values with cmcalibrate. As a special exception, any models CM query files that have zero basepairs need not be calibrated.
 
 
 **Options**
@@ -223,67 +278,60 @@
 
 - *Use the CYK algorithm, not Inside, to determine the final score of all hits*: If selecting "yes", the CYK algorithm instead of the CM Inside algorithm (the SCFG analog of the HMM Forward algorithm) is used.
 
-- *Use the CYK algorithm to align hits*: By default, the Durbin/Holmes optimal accuracy algo-
-rithm is used, which finds the alignment that maximizes the expected accuracy of all aligned
-residues.
+- *Use the CYK algorithm to align hits*: By default, the Durbin/Holmes optimal accuracy algorithm is used, which finds the alignment that maximizes the expected accuracy of all aligned residues.
 
 - *Turn off truncated hit detection*: Turns off truncated hit detection and will reduce the running time most significantly for target files that include many short sequences.
 
-- *Turn off all filters, and run non-banded Inside on every full-length target sequence*: This
-increases sensitivity somewhat, at an extremely large cost in speed.
+- *Turn off all filters, and run non-banded Inside on every full-length target sequence*: This increases sensitivity somewhat, at an extremely large cost in speed.
 
 - *Turn off all HMM filter stages*: The CYK filter, using QDBs, will be run on every full-length target sequence and will enforce a P-value threshold of 0.0001. Each subsequence that survives CYK will be passed to Inside, which will also use QDBs (but a looser set). This increases sensitivity somewhat, at a very large cost in speed.
 
--*Turn off the HMM SSV and Viterbi filter stages*:Sets remaining HMM filter
-thresholds to 0.02 by default. This may increase sensitivity, at a significant cost in speed.
+- *Turn off the HMM SSV and Viterbi filter stages*:Sets remaining HMM filter thresholds to 0.02 by default. This may increase sensitivity, at a significant cost in speed.
 
-- *Inclusion thresholds*: *Use E-value* - Use an E-value as the hit inclusion threshold. The default is 0.01, meaning that on average, about 1 false positive would be expected in every 100 searches with different
-query sequences. *Use Bit Score* - Instead of using E-values for setting the inclusion threshold, instead use a bit score as the hit inclusion threshold. By default this option is unset.
+- *Inclusion thresholds*: *Use E-value* - Use an E-value as the hit inclusion threshold. The default is 0.01, meaning that on average, about 1 false positive would be expected in every 100 searches with different query sequences. *Use Bit Score* - Instead of using E-values for setting the inclusion threshold, instead use a bit score as the hit inclusion threshold. By default this option is unset.
 
 
 **Output Options**
 
-- *reporting thresholds*: Hits are ranked by statistical significance (E-value). By *default*, all hits with an E-value <= 10 are reported. The following options allow you to change the default *E-value* reporting thresholds, or to use *bit score* thresholds instead. 
-
-
-Output Example:
+- *reporting thresholds*: Hits are ranked by statistical significance (E-value). By *default*, all hits with an E-value <= 10 are reported. The following options allow you to change the default *E-value* reporting thresholds, or to use *bit score* thresholds instead.
 
 
-# cmsearch :: search CM(s) against a sequence database
-# INFERNAL 1.1.1 (July 2014)
-# Copyright (C) 2014 Howard Hughes Medical Institute.
-# Freely distributed under the GNU General Public License (GPLv3).
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# query CM file:                         tRNA5.cm
-# target sequence database:              tutorial/mrum-genome.fa
-# number of worker threads:              8
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+Output columns:
+
+(1)  rank
+
+(2)  E-value
+
+(3)  score
+
+(4)  bias
+
+(5)  sequence
+
+(6)  start
+
+(7)  end
+
+(8)  mdl
+
+(9)  trunc
+
+(10)  gc
+
+(11)  description
+
+----   --------- ------ -----  ----------- ------- -------   --- ----- ----  -----------
+
+!   1.3e-18   71.5   0.0  NC_013790.1  362026  361955 -  cm    no 0.50  Methanobrevibacter ruminantium M1
+
+!   3.3e-18   70.2   0.0  NC_013790.1 2585265 2585193 -  cm    no 0.60  Methanobrevibacter ruminantium M1
 
 
-The second section is a list of ranked top hits (sorted by E-value, most significant hit first):
-
-rank     E-value  score  bias  sequence      start     end   mdl trunc   gc  description
-----   --------- ------ -----  ----------- ------- -------   --- ----- ----  -----------
-(1) !   1.3e-18   71.5   0.0  NC_013790.1  362026  361955 -  cm    no 0.50  Methanobrevibacter ruminantium M1 
-(2) !   3.3e-18   70.2   0.0  NC_013790.1 2585265 2585193 -  cm    no 0.60  Methanobrevibacter ruminantium M1 
-
-
-
-For further questions please refere to the Infernal `Userguide <http://selab.janelia.org/software/infernal/Userguide.pdf>`_.
+For further questions please refere to the Infernal `Userguide <http://eddylab.org/infernal/Userguide.pdf>`_.
 
 ]]>
     </help>
-    <citations>
-        <citation type="doi">10.1093/bioinformatics/btt509</citation>
-        <citation type="bibtex">
-            @ARTICLE{bgruening_galaxytools,
-                Author = {Björn Grüning, Cameron Smith, Torsten Houwaart, Nicola Soranzo, Eric Rasche},
-                keywords = {bioinformatics, ngs, galaxy, cheminformatics, rna},
-                title = {{Galaxy Tools - A collection of bioinformatics and cheminformatics tools for the Galaxy environment}},
-                url = {https://github.com/bgruening/galaxytools}
-            }
-        </citation>
-    </citations>
-   
-    
+    <expand macro="citations" />
+
+
 </tool>