view phyml.xml @ 3:7157a5b34a68 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/phyml commit fd76965826549db42ae414b80e4254089babe6a5
author iuc
date Mon, 23 Oct 2023 17:15:37 +0000
parents 2bf47d57ebb5
children
line wrap: on
line source

<tool id="phyml" name="PhyML" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="22.05">
    <description>Phylogeny software based on the maximum-likelihood method</description>
    <macros>
        <token name="@TOOL_VERSION@">3.3.20220408</token>
        <token name="@VERSION_SUFFIX@">0</token>
    </macros>
    <xrefs>
        <xref type="bio.tools">phyml</xref>
    </xrefs>
    <requirements>
        <requirement type="package" version="@TOOL_VERSION@">phyml</requirement>
    </requirements>
    <stdio>
        <regex source="stdout" match="failed" level="fatal" description="PhyML failed"/>
    </stdio>
    <version_command>
        <![CDATA[ phyml --version || true ]]>
    </version_command>
    <command>
        <![CDATA[
          #import re
          ##PhyML outputs are based on input path and we need to create outputs in working_dir.
          #set input_name = re.sub('[^\s\w\-]', '_', str($input.element_identifier))
          ln -sf '$input' '$input_name' &&
          #if $userInputTree
            #set userInputTree_name = re.sub('[^\s\w\-]', '_', str($userInputTree_name.element_identifier))
            ln -sf '$$userInputTree' '$userInputTree_name' && 
          #end if

          phyml --input '$input_name'
                ${phylip_format}
                --datatype '${seq.type_of_seq}'
                --multiple '${nb_data_set}'
                
                #if (str($support_condition.branchSupport) in ['0','-1','-2','-4','-5']):
                    --bootstrap '${support_condition.branchSupport}'
                #else:
                    --bootstrap '${support_condition.replicate}'
                #end if
                    
                --model '${seq.model}'
                #if $seq.type_of_seq == "nt":
                    -t '${seq.tstv}'
                #end if
            
                -f '${equi_freq}'
                --pinv '${prop_invar}'
                
                --nclasses '${nbSubstCat}'
                
                #if (str($nbSubstCat) != "1"):
                    --alpha '${gamma}'
                #end if

                --search '${move}'
                -o '${optimisationTopology}'
                
                #if $userInputTree:
                    --inputtree '${$userInputTree_name}'
                #end if
                
                #if $numStartSeed != "0":
                    --r_seed '${numStartSeed}'
                #end if
                
                --no_memory_check 
                | tee '${output_stdout}' 
        ]]>
    </command>
    <inputs>
        <param argument="--input" type="data" format="phylip,phy" label="Alignment file" help="phylip format"/>
        <param argument="--sequential" name="phylip_format" type="select"  label="Changes interleaved format">
            <option value="">Interleaved</option>
            <option value="--sequential">Sequential</option>
        </param> 
        <param argument="--multiple" name="nb_data_set" type="integer" min="1" value="1" label="Number of data sets" />
        <conditional name="seq">
            <param argument="--datatype name" name="type_of_seq" type="select"  label="Data type">
                <option value="nt">Nucleic acids</option>
                <option value="aa">Amino acids</option>
            </param>
            <when value="nt">
               <param argument="--ts/tv" name="tstv" type="text" value="e" label="Transition/transversion ratio" help="Must be a positive integer, 'e' if you want PhyML to estimate it"  />
               <param argument="--model" type="select" label="Substitution model">
                    <option value="HKY85">HKY85</option>
                    <option value="JC69">JC69</option>
                    <option value="K80">K80</option>
                    <option value="F81">F81</option>
                    <option value="F84">F84</option>
                    <option value="TN93">TN93</option>
                    <option value="GTR">GTR</option>
                </param>
            </when>
            <when value="aa">
                <param argument="--model" type="select" label="Evolution model">
                    <option value="LG">LG</option>
                    <option value="WAG">WAG</option>
                    <option value="JTT">JTT</option>
                    <option value="MtREV">MtREV</option>
                    <option value="Dayhoff">Dayhoff</option>
                    <option value="DCMut">DCMut</option>
                    <option value="RtREV">RtREV</option>
                    <option value="CpREV">CpREV</option>
                    <option value="VT">VT</option>
                    <option value="Blosum62">Blosum62</option>
                    <option value="MtMam">MtMam</option>
                    <option value="MtArt">MtArt</option>
                    <option value="HIVw">HIVw</option>
                    <option value="HIVb">HIVb</option>
                </param>            
           </when>
        </conditional>
        <param argument="--pinvname" name="prop_invar" type="text" value="e" label="Proportion of invariant sites" help="Can be a fixed value in the [0,1] range or 'e' to get the maximum likelihood estimate, 0 to ignore this parameter"/>
        <param argument="-f" name="equi_freq" type="select" label="Equilibrium frequencies" help="Empirical: frequencies are estimated by counting the occurences in the alignment. ML/Model: frequencies are estimated using ML for nucleotides or defined by the proteic substitution model.">
            <option value="m">ML/Model</option>
            <option value="e">Empirical</option>
        </param>
        <param argument="--nclasses" name="nbSubstCat" type="integer" min="1" value="4" label="Number of categories for the discrete gamma model" help="1 means no gamma model"  />
        <param argument="--alpha" name="gamma"  type="text" value="e" label="Parameter of the gamma model" help="'e' if you want PhyML to estimate it"/>
        <param argument="--search" name="move" type="select" label="Tree topology search">
            <option value="NNI">NNI (Nearest Neighbor Interchange)</option>
            <option value="SPR">SPR (Subtree Pruning and Regraphing)</option>
            <option value="BEST">Best of NNI and SPR</option>
        </param>
        <param argument="-o" name="optimisationTopology" type="select" label="Optimise topology">
            <option value="tlr">Tree topology, Branch length, Rate parameter</option>
            <option value="tl">Tree topology, Branch length</option>
            <option value="l">Branch length</option>
            <option value="r">Rate parameter</option>
            <option value="n">No parameter is optimized</option>
        </param>
            <conditional name="support_condition">
                <param argument="--bootstrap" name="branchSupport" type="select" label="Statistical tests for branch support" help="Use aLRT or aBayes to save computing time">
                    <option value="0">No bootstrap</option>
                    <option value="1">Bootstrap</option>
                    <option value="-1">likelihood aLRT statistics</option>
                    <option value="-2">likelihood Chi2-based</option>
                    <option value="-4" selected='true'>SH-like</option>
                    <option value="-5">Approximate Bayes branch supports</option>
                </param>  
                <when value="0"/>
                <when value="-1"/>
                <when value="-2"/>
                <when value="-4"/>
                <when value="-5"/>
                <when value="1">
                    <param argument="--bootstrap" name="replicate" type="integer" min="1" value="100" label="Number of bootstrap replicates" help="Must be a positive integer" />
                </when>
        </conditional>
        <param argument="--r_seed" name="numStartSeed" type="integer" value="0" label="Number of seed used to initiate the random number generator" help="0 to random seed"/>
        <param argument="--inputtree" name="userInputTree" optional="true" type="data" format="nhx" label="Tree file" help="newick format"/>
    </inputs>
    <outputs>
        <data name="output_tree" format="nhx" label="PhyML Newick tree: ${input.name}.nwk" from_work_dir="*_phyml_tree.txt" />
        <data name="output_stats" format="txt" label="PhyML Statistic: ${input.name}.stats.txt" from_work_dir="*_phyml_stats.txt"/>
        <data name="output_stdout" format="txt" label="PhyML Stdout: ${input.name}"/>
    </outputs>
    <tests>
        <test>
            <param name="input" value="phylip" />
            <param name="prop_invar" value="0"/>
            <param name="type_of_seq" value="nt" />
            <param name="numStartSeed" value="1458308600" />
            <output name="output_tree">
               <assert_contents>
                   <has_text text="Rhes_cDNA:0.0"/>
                   <has_text text="Baboon:0.0"/>
                   <has_text text="Orangutan:0.0"/>
                   <has_text text="Gibbon:0.0"/>
                   <has_text text="Human:0.0"/>
                   <has_text text="Chimp:0.0"/>
               </assert_contents>
            </output>
            <output name="output_stats" file="phylip_phyml_stats.txt" lines_diff="4"/>
        </test>
    </tests>
    <help>
    <![CDATA[ 
.. class:: infomark

#########
PhyML 3.3
#########

A simple, fast, and accurate algorithm to estimate
large phylogenies by maximum likelihood''

==========
 Overview:
==========

PhyML is a phylogeny software based on the maximum-likelihood principle. Early PhyML versions used a fast algorithm to perform Nearest Neighbor Interchanges (NNIs), in order to improve a reasonable starting tree topology. Since the original publication (Guindon and Gascuel 2003), PhyML has been widely used due to its simplicity and a fair accuracy/speed compromise. In the mean time research around PhyML has continued. 

We designed an efficient algorithm to search the tree space using Subtree Pruning and Regrafting (SPR) topological moves (Hordijk and Gascuel 2005), and proposed a fast branch test based on an approximate likelihood ratio test (Anisimova and Gascuel 2006). However, these novelties were not included in the official version of PhyML, and we found that improvements were still needed in order to make them effective in some practical cases. PhyML 3.0 achieves this task. 

It implements new algorithms to search the space of tree topologies with user-defined intensity. A non-parametric, Shimodaira-Hasegawa-like branch test is also available. The program provides a number of new evolutionary models and its interface was entirely re-designed. We tested PhyML 3.0 on a large collection of real data sets to ensure that the new version is stable, ready-to-use and still reasonably fast and accurate. 

-----


For further informations, please visite the PhyML_ website.

.. _PhyML: http://www.atgc-montpellier.fr/phyml/

Please cite this paper if you use this software in your publications.


 ]]>
    </help>
    <citations>
       <citation type="doi">10.1093/sysbio/syq010</citation> 
    </citations>
</tool>