view iqtree.xml @ 4:f97743d52b87 draft

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/iqtree/ commit dc68d9064facc8da0024b4c2c41ef82150bdd386"
author iuc
date Fri, 03 Apr 2020 09:04:30 -0400
parents 973a28be3b7f
children fc06db7794f1
line wrap: on
line source

<tool id="iqtree" name="IQ-TREE" version="@TOOL_VERSION@.3" >
    <description>Phylogenomic / evolutionary tree construction from multiple sequences</description>
    <macros>
        <import>iqtree_macros.xml</import>
    </macros>
    <expand macro="requirements" />
    <command detect_errors="exit_code"><![CDATA[
iqtree
    -pre PREF
    #if $general_options.short_alignments:
        -nt 1
    #else:
        -nt \${GALAXY_SLOTS:-10}
    #end if
    -redo

## file
#if $general_options.s
    -s '$general_options.s'
#end if

## file
#if $general_options.t
    -t '$general_options.t'
    $tree_parameters.constructing_consensus.con
    $tree_parameters.constructing_consensus.net
    #if str($tree_parameters.constructing_consensus.bi) != ''
        -bi '$tree_parameters.constructing_consensus.bi'
    #end if

    ## file
    #if $tree_parameters.constructing_consensus.sup
        -sup '$tree_parameters.constructing_consensus.sup'
    #end if

    #if str($tree_parameters.constructing_consensus.suptag) != ''
        -suptag '$tree_parameters.constructing_consensus.suptag'
    #end if

    ## file
    #if $tree_parameters.computing_robinson_foulds.rf
        -rf '$tree_parameters.computing_robinson_foulds.rf'
        $tree_parameters.computing_robinson_foulds.rf_all
        $tree_parameters.computing_robinson_foulds.rf_adj
    #end if
#end if

## file
#if $general_options.te
    -te '$general_options.te'
#end if

#if str($general_options.st) != ''
    -st '$general_options.st'
#end if

#if str($general_options.seed) != ''
    -seed '$general_options.seed'
#end if

$general_options.keep_ident
$general_options.safe

#if str($likelihood_mapping.lmap) != ''
    -lmap '$likelihood_mapping.lmap'
#end if

## file
#if $likelihood_mapping.lmclust
    -lmclust '$likelihood_mapping.lmclust'
#end if

$likelihood_mapping.wql

#if str($modelling_parameters.automatic_model.cond_model.m) != ''
    -m '$modelling_parameters.automatic_model.cond_model.m'
#end if

#if str($modelling_parameters.automatic_model.rcluster) != ''
    -rcluster '$modelling_parameters.automatic_model.rcluster'
#end if

#if str($modelling_parameters.automatic_model.mset) != ''
    -mset '$modelling_parameters.automatic_model.mset'
#end if

#if str($modelling_parameters.automatic_model.msub) != ''
    -msub '$modelling_parameters.automatic_model.msub'
#end if

#if str($modelling_parameters.automatic_model.mfreq) != ''
    -mfreq '$modelling_parameters.automatic_model.mfreq'
#end if

#if str($modelling_parameters.automatic_model.mrate) != ''
    -mrate '$modelling_parameters.automatic_model.mrate'
#end if

#if str($modelling_parameters.automatic_model.cmin) != ''
    -cmin '$modelling_parameters.automatic_model.cmin'
#end if

#if str($modelling_parameters.automatic_model.cmax) != ''
    -cmax '$modelling_parameters.automatic_model.cmax'
#end if

#if str($modelling_parameters.automatic_model.merit) != ''
    -merit '$modelling_parameters.automatic_model.merit'
#end if

$modelling_parameters.automatic_model.mtree

#if str($modelling_parameters.automatic_model.madd) != ''
    -madd '$modelling_parameters.automatic_model.madd'
#end if

## file
#if $modelling_parameters.automatic_model.mdef
    -mdef '$modelling_parameters.automatic_model.mdef'
#end if

$modelling_parameters.specifying_substitution.mwopt

#if str($modelling_parameters.rate_heterogeneity.a) != ''
    -a '$modelling_parameters.rate_heterogeneity.a'
#end if

$modelling_parameters.rate_heterogeneity.gmedian

#if str($modelling_parameters.rate_heterogeneity.i) != ''
    -i '$modelling_parameters.rate_heterogeneity.i'
#end if

$modelling_parameters.rate_heterogeneity.opt_gamma_inv
$modelling_parameters.rate_heterogeneity.wsr

## file
#if $modelling_parameters.partition_model.q
    -q '$modelling_parameters.partition_model.q'
#end if

$modelling_parameters.partition_model.spp

## file
#if $modelling_parameters.partition_model.sp
    -sp '$modelling_parameters.partition_model.sp'
#end if

## file
#if $modelling_parameters.site_specific_frequency.ft
    -ft '$modelling_parameters.site_specific_frequency.ft'
#end if

#if str($modelling_parameters.site_specific_frequency.fs) != ''
    -fs '$modelling_parameters.site_specific_frequency.fs'
#end if

$modelling_parameters.site_specific_frequency.fmax

#if str($tree_parameters.tree_search.ninit) != ''
    -ninit '$tree_parameters.tree_search.ninit'
#end if

#if str($tree_parameters.tree_search.ntop) != ''
    -ntop '$tree_parameters.tree_search.ntop'
#end if

#if str($tree_parameters.tree_search.nbest) != ''
    -nbest '$tree_parameters.tree_search.nbest'
#end if

#if str($tree_parameters.tree_search.nstop) != ''
    -nstop '$tree_parameters.tree_search.nstop'
#end if

#if str($tree_parameters.tree_search.n) != ''
    -n '$tree_parameters.tree_search.n'
#end if

#if str($tree_parameters.tree_search.sprrad) != ''
    -sprrad '$tree_parameters.tree_search.sprrad'
#end if

#if str($tree_parameters.tree_search.pers) != ''
    -pers '$tree_parameters.tree_search.pers'
#end if

$tree_parameters.tree_search.allnni
$tree_parameters.tree_search.djc

## file
#if $tree_parameters.tree_search.g
    -g '$tree_parameters.tree_search.g'
#end if

#if str($tree_parameters.single_branch.alrt) != ''
    -alrt '$tree_parameters.single_branch.alrt'
#end if

$tree_parameters.single_branch.abayes

#if str($tree_parameters.single_branch.lbp) != ''
    -lbp '$tree_parameters.single_branch.lbp'
#end if

## file
#if $tree_parameters.tree_topology.z
    -z '$tree_parameters.tree_topology.z'
#end if

#if str($tree_parameters.tree_topology.zb) != ''
    -zb '$tree_parameters.tree_topology.zb'
#end if

$tree_parameters.tree_topology.zw
$tree_parameters.tree_topology.au

#if str($tree_parameters.constructing_consensus.minsup) != ''
    -minsup '$tree_parameters.constructing_consensus.minsup'
#end if


#if str($tree_parameters.generating_random.r) != ''
    -r '$tree_parameters.generating_random.r'
#end if

$tree_parameters.generating_random.ru
$tree_parameters.generating_random.rcat
$tree_parameters.generating_random.rbal
$tree_parameters.generating_random.rcsg

#if str($tree_parameters.generating_random.rlen) != ''
    -rlen '$tree_parameters.generating_random.rlen'
#end if

#if str($bootstrap_parameters.ultrafast_bootstrap.bb) != ''
    -bb '$bootstrap_parameters.ultrafast_bootstrap.bb'
#end if

$bootstrap_parameters.ultrafast_bootstrap.wbt
$bootstrap_parameters.ultrafast_bootstrap.wbtl

#if str($bootstrap_parameters.ultrafast_bootstrap.nm) != ''
    -nm '$bootstrap_parameters.ultrafast_bootstrap.nm'
#end if

#if str($bootstrap_parameters.ultrafast_bootstrap.bcor) != ''
    -bcor '$bootstrap_parameters.ultrafast_bootstrap.bcor'
#end if

#if str($bootstrap_parameters.ultrafast_bootstrap.nstep) != ''
    -nstep '$bootstrap_parameters.ultrafast_bootstrap.nstep'
#end if

#if str($bootstrap_parameters.ultrafast_bootstrap.beps) != ''
    -beps '$bootstrap_parameters.ultrafast_bootstrap.beps'
#end if

#if str($bootstrap_parameters.ultrafast_bootstrap.bspec) != ''
    -bspec '$bootstrap_parameters.ultrafast_bootstrap.bspec'
#end if

$bootstrap_parameters.ultrafast_bootstrap.bnni

#if str($bootstrap_parameters.nonparametric_bootstrap.b) != ''
    -b '$bootstrap_parameters.nonparametric_bootstrap.b'
#end if

$bootstrap_parameters.nonparametric_bootstrap.bc
$bootstrap_parameters.nonparametric_bootstrap.bo

#if str($miscellaneous_options.fconst) != ''
    -fconst '$miscellaneous_options.fconst'
#end if
]]>
    </command>
    <inputs>
        <section name="general_options" expanded="true" title="General options">
            <param argument="-s" type="data" format="txt" optional="true" label="Specify input alignment file in PHYLIP, FASTA, NEXUS, CLUSTAL or MSF format."/>
            <param type="boolean" name="short_alignments" truevalue="true" falsevalue="false" label="Short alignments" help="IQ-TREE will fail if given too many threads on input data that consists of short alignments, this option will force the use of a single thread." />
            <param argument="-st" type="select" label="Specify sequence type as either of DNA, AA, BIN, MORPH, CODON or NT2AA for DNA, amino-acid, binary, morphological, codon or DNA-to-AA-translated sequences">
                <help><![CDATA[
Note that -st CODON is always necessary when using codon models and you also need to specify a genetic code like this if differed from the standard genetic code.
<br/><i>-st</i> NT2AA tells IQ-TREE to translate protein-coding DNA into AA sequences and then subsequent analysis will work on the AA sequences. You can also use a genetic code like -st NT2AA5 for the Invertebrate Mitochondrial Code (see genetic code table).]]>
                </help>
                <option value="DNA">DNA</option>
                <option value="AA">AA</option>
                <option value="BIN">BIN</option>
                <option value="MORPH">MORPH</option>
                <option value="CODON">CODON</option>
                <option value="NT2AA">NT2AA</option>
            </param>
            <param argument="-t" type="data" format="nhx" optional="true" label="Specify a file containing starting tree for tree search"/>
            <param argument="-te" type="data" format="nhx" optional="true" label="Like -t but fixing user tree" help="That means, no tree search is performed and IQ-TREE computes the log-likelihood of the fixed user tree."/>
            <param argument="-seed" type="integer" optional="true" label="Specify a random number seed to reproduce a previous run (leave blank to randomize)"/>
            <param argument="-keep_ident" type="boolean" truevalue="-keep-ident" falsevalue="" checked="false" label="Keep identical sequences in the alignment" help="By default: IQ-TREE will remove them during the analysis and add them in the end."/>
            <param argument="-safe" type="boolean" truevalue="-safe" falsevalue="" checked="false" label="Turn on safe numerical mode to avoid numerical underflow for large data sets with many sequences (typically in the order of thousands)" help="This mode is automatically turned on when having more than 2000 sequences."/>
        </section>
        <section name="likelihood_mapping" expanded="False" title="Likelihood mapping analysis">
            <param argument="-lmap" type="integer" optional="true" label="Specify the number of quartets to be randomly drawn" help="If you specify -lmap ALL, all unique quartets will be drawn, instead."/>
            <param argument="-lmclust" type="data" format="txt" optional="true" label="Specify a NEXUS file containing taxon clusters (see below for example) for quartet mapping analysis."/>
            <param argument="-wql" type="boolean" truevalue="-wql" falsevalue="" checked="false" label="Write quartet log-likelihoods into .lmap.quartetlh file (typically not needed)."/>
        </section>
        <section name="modelling_parameters" title="Modelling Parameters">
            <section name="automatic_model" expanded="False" title="Automatic model selection">
                <conditional name="cond_model" >
                    <param name="opt_custommodel" type="boolean" checked="false" label="Use Custom Model" help="See http://www.iqtree.org/doc/Substitution-Models"/>
                    <when value="true">
                        <param argument="-m" type="text" label="Model">
                            <expand macro="sanitize_query"
                                    validinitial="string.ascii_uppercase,string.digits,string.punctuation" />
                        </param>
                    </when>
                    <when value="false">
                        <param argument="-m" type="select" label="Perform standard model selection like jModelTest (for DNA) and ProtTest (for protein)" >
                            <help><![CDATA[
<b>Note:</b> Only <code>TEST</code> and custom models that do not rely on <code>MF</code> can be used in conjunction with bootstrap parameters (-b)<br/><br/>
IQ-TREE also works for codon, binary and morphogical data.
<table>
    <tr>
        <td><i>TESTONLY</i></td>
        <td>Perform standard model selection like jModelTest (for DNA) and ProtTest (for protein). Moreover, IQ-TREE also works for codon, binary and morphogical data.</td>
    </tr>
    <tr>
        <td><i>TEST</i></td>
        <td>Like -m TESTONLY but immediately followed by tree reconstruction using the best-fit model found. So this performs both model selection and tree inference within a single run.</td>
    </tr>
    <tr>
        <td><i>TESTNEWONLY</i></td>
        <td>Perform an extended model selection that additionally includes FreeRate model compared with -m TESTONLY. Recommended as replacement for -m TESTONLY. Note that LG4X is a FreeRate model, but by default is not included because it is also a protein mixture model. To include it, use -madd option (see table below).</td>
    </tr>
    <tr>
        <td><i>TESTNEW</i></td>
        <td>Like -m MF but immediately followed by tree reconstruction using the best-fit model found.</td>
    </tr>
    <tr>
        <td><i>TESTMERGEONLY</i></td>
        <td>Select best-fit partitioning scheme like PartitionFinder.</td>
    </tr>
    <tr>
        <td><i>TESTMERGE</i></td>
        <td>Like -m TESTMERGEONLY but immediately followed by tree reconstruction using the best partitioning scheme found.</td>
    </tr>
    <tr>
        <td><i>TESTNEWMERGEONLY</i></td>
        <td>Like -m TESTMERGEONLY but additionally includes FreeRate model.</td>
    </tr>
    <tr>
        <td><i>TESTNEWMERGE</i></td>
        <td>Like -m MF+MERGE but immediately followed by tree reconstruction using the best partitioning scheme found.</td>
    </tr>
</table>
]]>
                            </help>
                            <option value="" selected="true">(None)</option>
                            <option value="TESTONLY">TESTONLY</option>
                            <option value="TEST">TEST</option>
                            <option value="TESTNEWONLY">TESTNEWONLY</option>
                            <option value="TESTNEW">TESTNEW</option>
                            <option value="TESTMERGEONLY">TESTMERGEONLY</option>
                            <option value="TESTMERGE">TESTMERGE</option>
                            <option value="TESTNEWMERGEONLY">TESTNEWMERGEONLY</option>
                            <option value="TESTNEWMERGE">TESTNEWMERGE</option>
                        </param>
                    </when>
                </conditional>
                <param argument="-rcluster" type="integer" optional="true" label="Specify the percentage for the relaxed clustering algorithm (Lanfear et al., 2014)" help="This is similar to --rcluster-percent option of PartitionFinder. For example, with -rcluster 10 only the top 10% partition schemes are considered to save computations." />
                <param argument="-mset" type="text" optional="true" label="Specify the name of a program (raxml, phyml or mrbayes) to restrict to only those models supported by the specified program" help="Alternatively, one can specify a comma-separated list of base models. For example, -mset WAG,LG,JTT will restrict model selection to WAG, LG, and JTT instead of all 18 AA models to save computations.">
                    <expand macro="sanitize_query"
                    validinitial="string.ascii_uppercase,string.punctuation" />
                </param>
                <param argument="-msub" type="select" label="Specify either nuclear, mitochondrial, chloroplast or viral to restrict to those AA models designed for specified source." help="">
                    <option value="nuclear">nuclear</option>
                    <option value="mitochondrial">mitochondrial</option>
                    <option value="chloroplast">chloroplast</option>
                    <option value="viral">viral</option>
                </param>
                <param argument="-mfreq" type="text" optional="true" label="Specify a comma-separated list of frequency types for model selection" >
                    <expand macro="sanitize_query"
                    validinitial="string.ascii_uppercase,string.digits,x,string.punctuation" />
                </param>
                <param argument="-mrate" type="text" optional="true" label="Specify a comma-separated list of rate heterogeneity types for model selection">
                    <expand macro="sanitize_query"
                    validinitial="string.ascii_uppercase,string.punctuation" />
                </param>
                <param argument="-cmin" type="integer" value="2" optional="true" label="Specify minimum number of categories for FreeRate model"/>
                <param argument="-cmax" type="integer" value="10" optional="true" label="Specify maximum number of categories for FreeRate model"/>
                <param argument="-merit" type="select" label="Specify either AIC, AICc or BIC for the optimality criterion to apply for new procedure" help="">
                    <option value="AIC">AIC</option>
                    <option value="AICc">AICc</option>
                    <option value="BIC">BIC</option>
                </param>
                <param argument="-mtree" type="boolean" truevalue="-mtree" falsevalue="" checked="false" label="Turn on full tree search for each model considered, to obtain more accurate result"/>
                <param argument="-madd" type="text" optional="true" label="Specify a comma-separated list of mixture models to additionally consider for model selection" help="For example, -madd LG4M,LG4X to additionally include these two protein mixture models.">
                    <expand macro="sanitize_query"
                    validinitial="string.ascii_uppercase,string.digits,string.punctuation" />
                </param>
                <param argument="-mdef" type="data" format="txt" optional="true" label="Specify a NEXUS model file to define new models."/>
            </section>
            <section name="specifying_substitution" expanded="False" title="Specifying substitution models">
                <param argument="-mwopt" type="boolean" truevalue="-mwopt" falsevalue="" checked="false" label="Turn on optimizing weights of mixture models" help="Note that for models like LG+C20+F+G this mode is automatically turned on, but not for LG+C20+G."/>
            </section>
            <section name="rate_heterogeneity" expanded="False" title="Rate heterogeneity">
                <param argument="-a" type="text" optional="true" label="Specify the Gamma shape parameter (default: estimate)">
                    <expand macro="sanitize_query" />
                </param>
                <param argument="-gmedian" type="boolean" truevalue="-gmedian" falsevalue="" checked="false" label="Perform the median approximation for Gamma rate heterogeneity instead of the default mean approximation (Yang, 1994)"/>
                <param argument="-i" type="text" optional="true" label="Specify the proportion of invariable sites (default: estimate)">
                    <expand macro="sanitize_query" />
                </param>
                <param argument="--opt_gamma_inv" type="boolean" truevalue="--opt-gamma-inv" falsevalue="" checked="false" label="Perform more thorough estimation for +I+G model parameters"/>
                <param argument="-wsr" type="boolean" truevalue="-wsr" falsevalue="" checked="false" label="Write per-site rates to .rate file"/>
            </section>
            <section name="partition_model" expanded="False" title="Partition model options">
                <param argument="-q" type="data" format="txt" optional="true" label="Specify partition file for edge-equal partition model" help="That means, all partitions share the same set of branch lengths (like -q option of RAxML)."/>
                <param argument="-spp" type="boolean" truevalue="-spp" falsevalue="" checked="false" label="Like -q but allowing partitions to have different evolutionary speeds (edge-proportional partition model)."/>
                <param argument="-sp" type="data" format="txt" optional="true" label="Specify partition file for edge-unlinked partition model" help="That means, each partition has its own set of branch lengths (like -M option of RAxML). This is the most parameter-rich partition model to accomodate heterotachy."/>
            </section>
            <section name="site_specific_frequency" expanded="False" title="Site-specific frequency model options">
                <param argument="-ft" type="data" format="nhx" optional="true" label="Specify a guide tree to infer site frequency profiles."/>
                <param argument="-fs" type="float" optional="true" label="Specify a site frequency file, e.g" help="the .sitefreq file obtained from -ft run. This will save memory used for the first phase of the analysis."/>
                <param argument="-fmax" type="boolean" truevalue="-fmax" falsevalue="" checked="false" label="Switch to posterior maximum mode for obtaining site-specific profiles" help="Default: posterior mean."/>
            </section>
        </section>
        <section name="tree_parameters" title="Tree Parameters">
            <section name="tree_search" expanded="False" title="Tree search parameters">
                <param argument="-n" type="integer" optional="true" label="Skip subsequent tree search (n = 0), useful when you only want to assess the phylogenetic information of the alignment. Otherwise specify number of iterations to stop (this option overrides -nstop criterion)." />
                <param argument="-ninit" type="integer" value="100" optional="true" label="Specify number of initial parsimony trees"/>
                <param argument="-ntop" type="integer" value="20" optional="true" label="Specify number of top initial parsimony trees to optimize with ML nearest neighbor interchange (NNI) search to initialize the candidate set"/>
                <param argument="-nbest" type="integer" value="5" optional="true" label="Specify number of trees in the candidate set to maintain during ML tree search"/>
                <param argument="-nstop" type="integer" value="100" optional="true" label="Specify number of unsuccessful iterations to stop"/>
                <param argument="-sprrad" type="integer" value="6" optional="true" label="Specify SPR radius for the initial parsimony tree search"/>
                <param argument="-pers" type="float" value="0.5" optional="true" label="Specify perturbation strength (between 0 and 1) for randomized NNI"/>
                <param argument="-allnni" type="boolean" truevalue="-allnni" falsevalue="" checked="false" label="Turn on more thorough and slower NNI search"/>
                <param argument="-djc" type="boolean" truevalue="-djc" falsevalue="" checked="false" label="Avoid computing ML pairwise distances and BIONJ tree."/>
                <param argument="-g" type="data" format="txt" optional="true" label="Specify a topological constraint tree file in NEWICK format" help="The constraint tree can be a multifurcating tree and need not to include all taxa."/>
            </section>
            <section name="single_branch" expanded="False" title="Single branch tests">
                <param argument="-alrt" type="integer" optional="true" label="Specify number of replicates (&gt;=1000) to perform SH-like approximate likelihood ratio test (SH-aLRT) (Guindon et al., 2010)" help="If number of replicates is set to 0 (-alrt 0), then the parametric aLRT test (Anisimova and Gascuel 2006) is performed, instead of SH-aLRT."/>
                <param argument="-abayes" type="boolean" truevalue="-abayes" falsevalue="" checked="false" label="Perform approximate Bayes test (Anisimova et al., 2011)."/>
                <param argument="-lbp" type="integer" optional="true" label="Specify number of replicates (&gt;=1000) to perform fast local bootstrap probability method (Adachi and Hasegawa, 1996)."/>
            </section>
            <section name="tree_topology" expanded="False" title="Tree topology tests">
                <param argument="-z" type="data" format="txt" optional="true" label="Specify a file containing a set of trees" help="IQ-TREE will compute the log-likelihoods of all trees."/>
                <param argument="-zb" type="integer" optional="true" label="Specify the number of RELL (Kishino et al., 1990) replicates (&gt;=1000) to perform several tree topology tests for all trees passed via -z" help="The tests include bootstrap proportion (BP), KH test (Kishino and Hasegawa, 1989), SH test (Shimodaira and Hasegawa, 1999) and expected likelihood weights (ELW) (Strimmer and Rambaut, 2002)."/>
                <param argument="-zw" type="boolean" truevalue="-zw" falsevalue="" checked="false" label="Used together with -zb to additionally perform the weighted-KH and weighted-SH tests."/>
                <param argument="-au" type="boolean" truevalue="-au" falsevalue="" checked="false" label="Used together with -zb to additionally perform the approximately unbiased (AU) test (Shimodaira, 2002)" help="Note that you have to specify the number of replicates for the AU test via -zb."/>
            </section>
            <section name="constructing_consensus" expanded="False" title="Constructing consensus tree">
                <param argument="-con" type="boolean" truevalue="-con" falsevalue="" checked="false" label="Compute consensus tree of the trees passed via -t" help="Resulting consensus tree is written to .contree file."/>
                <param argument="-net" type="boolean" truevalue="-net" falsevalue="" checked="false" label="Compute consensus network of the trees passed via -t" help="Resulting consensus network is written to .nex file."/>
                <param argument="-minsup" type="float" value="0.0" optional="true" label="Specify a minimum threshold (between 0 and 1) to keep branches in the consensus tree"/>
                <param argument="-bi" type="integer" optional="true" label="Specify a burn-in, which is the number of beginning trees passed via -t to discard before consensus construction" help="This is useful e.g. when summarizing trees from MrBayes analysis."/>
                <param argument="-sup" type="data" format="nhx" optional="true" label="Specify an input “target” tree file" help="That means, support values are first extracted from the trees passed via -t, and then mapped onto the target tree. Resulting tree with assigned support values is written to .suptree file. This option is useful to map and compare support values from different approaches onto a single tree."/>
                <param argument="-suptag" type="text" optional="true" label="Specify name of a node in -sup target tree" help="The corresponding node of .suptree will then be assigned with IDs of trees where this node appears. Special option -suptag ALL will assign such IDs for all nodes of the target tree."/>
            </section>
            <section name="computing_robinson_foulds" expanded="False" title="Computing Robinson-Foulds distance">
                <param argument="-rf" type="data" format="nhx" optional="true" label="Specify a second set of trees" help="IQ-TREE computes all pairwise RF distances between two tree sets passed via -t and -rf"/>
                <param argument="-rf_all" type="boolean" truevalue="-rf_all" falsevalue="" checked="false" label="Compute all-to-all RF distances between all trees passed via -t"/>
                <param argument="-rf_adj" type="boolean" truevalue="-rf_adj" falsevalue="" checked="false" label="Compute RF distances between adjacent trees passed via -t"/>
            </section>
            <section name="generating_random" expanded="False" title="Generating random trees">
                <param argument="-r" type="integer" optional="true" label="Specify number of taxa" help="IQ-TREE will create a random tree under Yule-Harding model with specified number of taxa"/>
                <param argument="-ru" type="boolean" truevalue="-ru" falsevalue="" checked="false" label="Like -r, but a random tree is created under uniform model."/>
                <param argument="-rcat" type="boolean" truevalue="-rcat" falsevalue="" checked="false" label="Like -r, but a random caterpillar tree is created."/>
                <param argument="-rbal" type="boolean" truevalue="-rbal" falsevalue="" checked="false" label="Like -r, but a random balanced tree is created."/>
                <param argument="-rcsg" type="boolean" truevalue="-rcsg" falsevalue="" checked="false" label="Like -r, bur a random circular split network is created."/>
                <param argument="-rlen" type="text" optional="true" label="Specify three numbers: minimum, mean and maximum branch lengths of the random tree">
                    <sanitizer>
                        <valid initial="string.digits,string.whitespace" />
                    </sanitizer>
                </param>
            </section>
        </section>
        <section name="bootstrap_parameters" title="Bootstrap Parameters">
            <section name="ultrafast_bootstrap" expanded="False" title="Ultrafast bootstrap parameters">
                <param argument="-bb" type="integer" optional="true" label="Specify number of bootstrap replicates (&gt;=1000)."/>
                <param argument="-wbt" type="boolean" truevalue="-wbt" falsevalue="" checked="false" label="Turn on writing bootstrap trees to .ufboot file"/>
                <param argument="-wbtl" type="boolean" truevalue="-wbtl" falsevalue="" checked="false" label="Like -wbt but bootstrap trees written with branch lengths"/>
                <param argument="-nm" type="integer" value="1000" optional="true" label="Specify maximum number of iterations to stop"/>
                <param argument="-bcor" type="float" value="0.99" optional="true" label="Specify minimum correlation coefficient for UFBoot convergence criterion"/>
                <param argument="-nstep" type="integer" value="100" optional="true" label="Specify iteration interval checking for UFBoot convergence"/>
                <param argument="-beps" type="float" value="0.5" optional="true" label="Specify a small epsilon to break tie in RELL evaluation for bootstrap trees"/>
                <param argument="-bspec" type="text" optional="true" label="Specify the resampling strategies for partitioned analysis" help="By default, IQ-TREE resamples alignment sites within partitions. With -bspec GENE IQ-TREE will resample partitions. With -bspec GENESITE IQ-TREE will resample partitions and then resample sites within resampled partitions (Gadagkar et al., 2005).">
                    <sanitizer>
                        <valid initial="string.ascii_uppercase" />
                    </sanitizer>
                </param>
                <param argument="-bnni" type="boolean" truevalue="-bnni" falsevalue="" checked="false" label="Perform an additional step to further optimize UFBoot trees by nearest neighbor interchange (NNI) based directly on bootstrap alignments" help="This option is recommended in the presence of severe model violations. It increases computing time by 2-fold but reduces the risk of overestimating branch supports due to severe model violations. Introduced in IQ-TREE 1.6."/>
            </section>
            <section name="nonparametric_bootstrap" expanded="False" title="Nonparametric bootstrap">
                <param argument="-b" type="integer" optional="true" label="Specify number of bootstrap replicates (recommended &gt;=100)" help="This will perform both bootstrap and analysis on original alignment and provide a consensus tree."/>
                <param argument="-bc" type="boolean" truevalue="-bc" falsevalue="" checked="false" label="Like -b but omit analysis on original alignment."/>
                <param argument="-bo" type="boolean" truevalue="-bo" falsevalue="" checked="false" label="Like -b but only perform bootstrap analysis (no analysis on original alignment and no consensus tree)."/>
            </section>
        </section>
        <section name="miscellaneous_options" expanded="False" title="Miscellaneous options">
            <param argument="-fconst" type="text" optional="true" label="Specify a list of comma-separated integer numbers" help="The number of entries should be equal to the number of states in the model (e.g. 4 for DNA and 20 for protein). IQ-TREE will then add a number of constant sites accordingly. For example, -fconst 10,20,15,40 will add 10 constant sites of all A, 20 constant sites of all C, 15 constant sites of all G and 40 constant sites of all T into the alignment.">
                <expand macro="sanitize_query"
                validinitial="string.digits,string.punctuation" />
            </param>
        </section>
    </inputs>
    <outputs>
        <data name="bionj" format="nhx" from_work_dir="*.bionj" label="${tool.name} on ${on_string}: BIONJ Tree" />
        <data name="treefile" format="nhx" from_work_dir="*.treefile" label="${tool.name} on ${on_string}: MaxLikelihood Tree" />
        <data name="contree" format="nhx" from_work_dir="*.contree" label="${tool.name} on ${on_string}: Consensus Tree" />
        <data name="mldist" format="mldist" from_work_dir="*.mldist" label="${tool.name} on ${on_string}: MaxLikelihood Distance Matrix"/>
        <data name="splits.nex" format="nex" from_work_dir="*.splits.nex" label="${tool.name} on ${on_string}: Occurence Frequencies in Bootstrap Trees" />
        <data name="iqtree" format="iqtree" from_work_dir="*.iqtree" label="${tool.name} on ${on_string}: Report and Final Tree" />
    </outputs>
    <tests>
        <test>
            <param name="seed" value="1257" />
            <param name="st" value="AA" />
            <param name="s" value="example.phy" />
            <param name="m" value="TESTNEW" />
            <param name="msub" value="nuclear" />
            <param name="madd" value="LG4M,LG4X" />
            <param name="merit" value="AICc" />
            <param name="bb" value="1000" />
            <output name="bionj">
                <assert_contents>
                    <has_text_matching expression=".*Human.*Whale.*" />
                </assert_contents>
            </output>
            <output name="iqtree">
                <assert_contents>
                    <has_text_matching expression="VT\+F\+R3(\s+((-|\d|\.)+))+" />
                </assert_contents>
            </output>
            <output name="mldist">
                <assert_contents>
                    <has_line_matching expression="^Frog(\s+((\d|\.)+))+\s+$" />
                    <has_line_matching expression="^Whale(\s+((\d|\.)+))+\s+$" />
                    <has_line_matching expression="^Cow(\s+((\d|\.)+))+\s+$" />
                </assert_contents>
            </output>
            <output name="treefile">
                <assert_contents>
                    <has_line_matching expression="\(LngfishAu:(\d|\..)+,\(LngfishSA:(\d.)+,.*" />
                </assert_contents>
            </output>
            <output name="contree">
                <assert_contents>
                    <has_line_matching
                        expression="\(LngfishAu:(\d|\..)+,\(LngfishSA:(\d.)+,.*\)\d+:(\d|\.)+,.*" />
                </assert_contents>
            </output>
            <output name="splits.nex">
                <assert_contents>
                    <has_line line="BEGIN Splits;" />
                    <has_line line="END; [Splits]" />
                </assert_contents>
            </output>
        </test>
        <test>
            <!-- bootstrap sans model -->
            <param name="seed" value="1257" />
            <param name="st" value="AA" />
            <param name="s" value="example.phy" />
            <!-- <param name="m" value="TESTONLY" /> -->
            <param name="msub" value="nuclear" />
            <param name="cmin" value="2" />
            <param name="cmax" value="10" />
            <param name="merit" value="AICc" />
            <param name="madd" value="LG4M,LG4X" />
            <param name="ninit" value="100" />
            <param name="ntop" value="20" />
            <param name="nbest" value="5" />
            <param name="nstop" value="100" />
            <param name="sprrad" value="6" />
            <param name="pers" value="0.5" />
            <param name="minsup" value="0.0" />
            <param name="nm" value="1000" />
            <param name="bcor" value="0.99" />
            <param name="nstep" value="100" />
            <param name="beps" value="0.5" />
            <param name="b" value="2" />
            <output name="iqtree">
                <assert_contents>
                    <has_text_matching expression="VT\+F\+I(\s+((-|\d|\.)+))+" />
                </assert_contents>
            </output>
            <output name="treefile">
                <assert_contents>
                    <has_line_matching expression="\(LngfishAu:(\d|\..)+,\(LngfishSA:(\d.)+,.*" />
                </assert_contents>
            </output>
        </test>
        <test>
            <!-- model sans bootstrap -->
            <param name="seed" value="1257" />
            <param name="st" value="AA" />
            <param name="s" value="example.phy" />
            <param name="m" value="TESTONLY" />
            <param name="msub" value="nuclear" />
            <param name="cmin" value="2" />
            <param name="cmax" value="10" />
            <param name="merit" value="AICc" />
            <param name="madd" value="LG4M,LG4X" />
            <param name="ninit" value="100" />
            <param name="ntop" value="20" />
            <param name="nbest" value="5" />
            <param name="nstop" value="100" />
            <param name="sprrad" value="6" />
            <param name="pers" value="0.5" />
            <param name="minsup" value="0.0" />
            <param name="nm" value="1000" />
            <param name="bcor" value="0.99" />
            <param name="nstep" value="100" />
            <param name="beps" value="0.5" />
            <!-- <param name="b" value="100" /> -->
            <output name="iqtree">
                <assert_contents>
                    <has_text_matching expression="VT\+F\+I(\s+((-|\d|\.)+))+" />
                </assert_contents>
            </output>
            <output name="treefile">
                <assert_contents>
                    <has_line_matching expression="\(LngfishAu:(\d|\..)+,\(LngfishSA:(\d.)+,.*" />
                </assert_contents>
            </output>
        </test>
        <test>
            <param name="s" value="example.phy" />
            <output name="iqtree">
                <assert_contents>
                    <has_text_matching expression=".*Human.*Whale.*" />
                </assert_contents>
            </output>
            <output name="treefile">
                <assert_contents>
                    <has_text_matching expression="\(LngfishAu:(\d|\..)+,\(LngfishSA:(\d.)+,.*" />
                </assert_contents>
            </output>
        </test>
        <test>
            <param name="s" value="example.phy" />
            <param name="opt_custommodel" value="true" />
            <param name="m" value="GTR+G{0.9}" />
            <output name="iqtree">
                <assert_contents>
                    <has_text_matching expression=".*Human.*Whale.*" />
                </assert_contents>
            </output>
            <output name="treefile">
                <assert_contents>
                    <has_text_matching expression="\(LngfishAu:(\d|\..)+,\(LngfishSA:(\d.)+,.*" />
                </assert_contents>
            </output>
        </test>
        <test>
            <param name="s" value="short.fasta" />
            <param name="short_alignments" value="true" />
        </test>
    </tests>
    <help><![CDATA[
IQ-TREE
=======

The full documentation can be found here_.

.. _here : http://www.iqtree.org/doc/

General Tutorial
===================

Input data
----------

IQ-TREE takes as input a *multiple sequence alignment* and will reconstruct an evolutionary tree that is best explained by the input data. The input alignment can be in various common formats. For example the PHYLIP_ format which may look like:

.. _PHYLIP: http://evolution.genetics.washington.edu/phylip/doc/sequence.html

::

    7 28
    Frog       AAATTTGGTCCTGTGATTCAGCAGTGAT
    Turtle     CTTCCACACCCCAGGACTCAGCAGTGAT
    Bird       CTACCACACCCCAGGACTCAGCAGTAAT
    Human      CTACCACACCCCAGGAAACAGCAGTGAT
    Cow        CTACCACACCCCAGGAAACAGCAGTGAC
    Whale      CTACCACGCCCCAGGACACAGCAGTGAT
    Mouse      CTACCACACCCCAGGACTCAGCAGTGAT

This tiny alignment contains 7 DNA sequences from several animals with the sequence length of 28 nucleotides. IQ-TREE also supports other file formats such as FASTA, NEXUS, CLUSTALW. The FASTA file for the above example may look like this:

::

    >Frog
    AAATTTGGTCCTGTGATTCAGCAGTGAT
    >Turtle
    CTTCCACACCCCAGGACTCAGCAGTGAT
    >Bird
    CTACCACACCCCAGGACTCAGCAGTAAT
    >Human
    CTACCACACCCCAGGAAACAGCAGTGAT
    >Cow
    CTACCACACCCCAGGAAACAGCAGTGAC
    >Whale
    CTACCACGCCCCAGGACACAGCAGTGAT
    >Mouse
    CTACCACACCCCAGGACTCAGCAGTGAT

**NOTE**: If you have raw sequences, you need to first apply alignment programs like MAFFT_ or ClustalW_ to align the sequences, before feeding them into IQ-TREE.

.. _MAFFT: http://mafft.cbrc.jp/alignment/software/
.. _ClustalW: http://www.clustal.org


Running example
---------------------

From the download_ there is an example alignment called `example.phy`
in PHYLIP format. This example contains parts of the mitochondrial DNA sequences of several animals (Source: `Phylogenetic Handbook`_)

.. _`Phylogenetic Handbook` : http://www.kuleuven.be/aidslab/phylogenybook/home.html)).
.. _download: http://www.iqtree.org/#download

You can now start to reconstruct a maximum-likelihood tree
from this alignment by entering (assuming that you are now in the same folder with `example.phy`):

::iqtree -s example.phy -st AA -seed 9999 -m TESTNEW -msub nuclear -madd LG4M,LG4x -merit AICc -bb 2000

* **-s** is the option to specify the name of the alignment file

* **-st** specifies the sequence type as amino-acid

* **-seed** ensures that the output files remain the same for subsequent runs

* **-m** sets the modelling parameter for standard model selection

* **-msub** determines the type sub-modelling

* **-madd** provides an additional selection mixed models

* **-merit** asserts the type of optimality criterion

* **-bb** defines the number of replicates


Each of these parameters are available under the relevant sub-sections in the main tool interface.

At the end of the run IQ-TREE will write several output files including:

* **example.phy.iqtree**: the main report file that is self-readable. You should look at this file to see the computational results. It also contains a textual representation of the final tree (see below).

* **example.phy.treefile**: the ML tree in NEWICK format, which can be visualized by any supported tree viewer programs like FigTree or  iTOL.

**NOTE**: Starting with version 1.5.4, with this simple command IQ-TREE will by default perform ModelFinder to find the best-fit substitution model and then infer a phylogenetic tree using the selected model.

For this example data the resulting maximum-likelihood tree may look like this (extracted from **.iqtree** file):

**NOTE**: Tree is UNROOTED although outgroup taxon 'LngfishAu' is drawn at root

::

    +--------------LngfishAu
    |
    |        +--------------LngfishSA
    +--------|
    |        +--------------LngfishAf
    |
    |      +-------------------Frog
    +------|
    |               +-----------------Turtle
    |         +-----|
    |         |     |      +-----------------------Sphenodon
    |         |     |   +--|
    |         |     |   |  +--------------------------Lizard
    |         |     +---|
    |         |         |      +---------------------Crocodile
    |         |         +------|
    |         |                +------------------Bird
    +---------|
    |                  +----------------Human
    |               +--|
    |               |  |  +--------Seal
    |               |  +--|
    |               |     |   +-------Cow
    |               |     +---|
    |               |         +---------Whale
    |          +----|
    |          |    |         +------Mouse
    |          |    +---------|
    |          |              +--------Rat
    +----------|
    |   +----------------Platypus
    +---|
    +-------------Opossum


This makes sense as the mammals (**Human** to **Opossum**) form a clade, whereas the reptiles **Turtle** to **Crocodile**) and **Bird** form a separate sister clade. Here the tree is drawn at the *outgroup* Lungfish which is more accient than other species in this example. However, please note that IQ-TREE always produces an **unrooted tree** as it knows nothing about this biological background; IQ-TREE simply draws the tree this way as **LngfishAu** is the first sequence occuring in the alignment.

Choosing the right substitution model
-------------------------------------

IQ-TREE will choose the best model for you automatically if specify any of the TEST models, but valid custom models can also be specified that conform to those found in Models_ page.

.. _Models: http://www.iqtree.org/doc/Substitution-Models#binary-and-morphological-models


------------------------------

Advanced Parameter Selection
============================

Using codon models
------------------

IQ-TREE supports a number of codon models. You need to input a protein-coding DNA alignment and specify codon data by option **-st CODON** (Otherwise, IQ-TREE applies DNA model because it detects that your alignment has DNA sequences):

::

  iqtree -s coding_gene.phy -st CODON

If your alignment length is not divisible by 3, IQ-TREE will stop with an error message. IQ-TREE will group sites 1,2,3 into codon site 1; sites 4,5,6 to codon site 2; etc. Moreover, any codon, which has at least one gap/unknown/ambiguous nucleotide, will be treated as unknown codon character.

Note that the above command assumes the standard genetic code. If your sequences follow 'The Invertebrate Mitochondrial Code', then run:

::

   iqtree -s coding_gene.phy -st CODON5

Note that ModelFinder works for codon alignments. IQ-TREE version >= 1.5.4 will automatically invokes ModelFinder to find the best-fit codon model.


Assessing branch supports with ultrafast bootstrap approximation
----------------------------------------------------------------

To overcome the computational burden required by the nonparametric bootstrap, IQ-TREE introduces an ultrafast bootstrap approximation (UFBoot) ([Minh et al., 2013]) that is  orders of magnitude faster than the standard procedure and provides relatively unbiased branch support values. Citation for UFBoot:

   B.Q. Minh, M.A.T. Nguyen, and A. von Haeseler (2013) Ultrafast approximation for phylogenetic bootstrap. _Mol. Biol. Evol., 30:1188-1195.

::

   iqtree -s example.phy -m TIM2+I+G -bb 1000

**-bb** specifies the number of bootstrap replicates where 1000 is the minimum number recommended. The section  **MAXIMUM LIKELIHOOD TREE** in  **example.phy.iqtree** shows a textual representation of the maximum likelihood tree with branch support values in percentage. The NEWICK format of the tree is printed to the file  **example.phy.treefile**. In addition, IQ-TREE writes the following files:

* **example.phy.contree**: the consensus tree with assigned branch supports where branch lengths are optimized  on the original alignment.

* **example.phy.splits**: support values in percentage for all splits (bipartitions), computed as the occurence frequencies in the bootstrap trees. This file is in "star-dot" format.

* **example.phy.splits.nex**: has the same information as **example.phy.splits** but in NEXUS format, which can be viewed with the program SplitsTree_ to explore the conflicting signals in the data. So it is more informative than consensus tree, e.g. you can see how highly supported the second best conflicting split is, which had no chance to enter the consensus tree.

.. _SplitsTree: http://www.splitstree.org


Reducing impact of severe model violations with UFBoot
------------------------------------------------------

Starting with IQ-TREE version 1.6 we provide a new option **-bnni** to reduce the risk of overestimating branch supports with UFBoot due to severe model violations. With this option UFBoot will further optimize each bootstrap tree using a hill-climbing nearest neighbor interchange (NNI) search based directly on the corresponding bootstrap alignment.

Thus, if severe model violations are present in the data set at hand, users are advised to append **-bnni** to the regular UFBoot command:

iqtree -s example.phy -m TIM2+I+G -bb 1000 -bnni

For more details see:

  D.T. Hoang, O. Chernomor, A. von Haeseler, B.Q. Minh, L.S. Vinh (2017) UFBoot2: Improving the ultrafast bootstrap approximation.


Assessing branch supports with  standard nonparametric bootstrap
----------------------------------------------------------------

The standard nonparametric bootstrap is invoked by  the  **-b** option:

iqtree -s example.phy -m TIM2+I+G -b 100

**-b** specifies the number of bootstrap replicates where 100
is the minimum recommended number. The output files are similar to those produced by the UFBoot procedure.



Assessing branch supports with single branch tests
--------------------------------------------------

IQ-TREE provides an implementation of the SH-like approximate likelihood ratio test ([Guindon et al., 2010]). To perform this test,  run:

::

  iqtree -s example.phy -m TIM2+I+G -alrt 1000

**-alrt** specifies the number of bootstrap replicates for SH-aLRT where 1000 is the minimum number recommended.

IQ-TREE also supports other tests such as the aBayes test (Anisimova et al., 2011) and the local bootstrap test (Adachi and Hasegawa, 1996).

You can also perform both SH-aLRT and the ultrafast bootstrap within one single run:

::

  iqtree -s example.phy -m TIM2+I+G -alrt 1000 -bb 1000

The branches of the resulting **.treefile** will be assigned with both SH-aLRT and UFBoot support values, which are readable by any tree viewer program like FigTree, Dendroscope or ETE. You can also look at the textual tree figure in **.iqtree** file:

**NOTE**: Tree is UNROOTED although outgroup taxon 'LngfishAu' is drawn at root
Numbers in parentheses are SH-aLRT support (%) / ultrafast bootstrap support (%)

::

    +-------------LngfishAu
    |
    |       +--------------LngfishSA
    +-------| (100/100)
    |       +------------LngfishAf
    |
    |      +--------------------Frog
    +------| (99.8/100)
    |                     +-----------------Turtle
    |                  +--| (85/72)
    |                  |  |    +------------------------Crocodile
    |                  |  +----| (96.5/97)
    |                  |       +------------------Bird
    |               +--| (39/51)
    |               |  +---------------------------Sphenodon
    |         +-----| (98.2/99)
    |         |     +-------------------------------Lizard
    +---------| (100/100)
    |                   +--------------Human
    |                +--| (92.3/93)
    |                |  |  +------Seal
    |                |  +--| (68.3/75)
    |                |     |  +-----Cow
    |                |     +--| (99.7/100)
    |                |        +-------Whale
    |           +----| (99.1/100)
    |           |    |         +---Mouse
    |           |    +---------| (100/100)
    |           |              +------Rat
    +-----------| (100/100)
    |  +--------------Platypus
    +--| (93/98)
    +-----------Opossum


From this figure, the branching patterns within reptiles are poorly supported (e.g. **Sphenodon** with SH-aLRT: 39%, UFBoot: 51% and **Turtle** with SH-aLRT: 85%, UFBoot: 72%) as well as the phylogenetic position of **Seal** within mammals (SH-aLRT: 68.3%, UFBoot: 75%). Other branches appear to be well supported.
    ]]></help>
    <citations>
        <citation type="doi">10.1093/molbev/msu300</citation>
        <citation type="doi">10.1093/molbev/mst024</citation>
    </citations>
</tool>