Mercurial > repos > iuc > raxmlng
changeset 0:21da84148596 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/raxml-ng commit 73e57581d32cd1ffa9b234faa87fc2e2ac3ae37f
| author | iuc |
|---|---|
| date | Sun, 21 Dec 2025 10:17:03 +0000 |
| parents | |
| children | |
| files | raxmlng.xml test-data/dna.phy test-data/tree10.raxml.galaxy |
| diffstat | 3 files changed, 437 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/raxmlng.xml Sun Dec 21 10:17:03 2025 +0000 @@ -0,0 +1,416 @@ +<tool id="raxmlng" name="RAxML-NG" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="22.01"> + <description>Maximum Likelihood based inference of large phylogenetic trees</description> + <macros> + <token name="@TOOL_VERSION@">1.2.2</token> + <token name="@VERSION_SUFFIX@">0</token> + </macros> + <xrefs> + <xref type="bio.tools">RAxML-NG</xref> + </xrefs> + <requirements> + <requirement type="package" version="@TOOL_VERSION@">raxml-ng</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ +raxml-ng +$command +#if $command == '--consense': + $consensus_type +#end if +--msa '$infile' +--prefix galaxy +#if $model.model_type == 'single_gui': + #if $model.seq_type == 'multistate': + #set model_matrix = '""'.join(["MULTI", str($model.single_model.multi_state_count),"_",str($model.single_model.subst_matrix)]) + #else: + #set model_matrix = str($model.single_model.subst_matrix) + #end if + #if str($model.rhas_model) in ['+G', '+R', '+I+G', '+I+R']: + #set model_rhas = '""'.join([str($model.rhas_model), str($model.rhas_cat_count)]) + #else + #set model_rhas = str($model.rhas_model) + #end if + --model ${model_matrix}${model.base_freqs}${model_rhas} +#elif $model.model_type == 'single_string' + --model '${model.model_string}' +#elif $model.model_type == 'multi_file' + --model '$model.model_file' + --brlen $model.brlen_linkage +#end if +#set start_trees = [] +#if $tree_file: + #set start_trees = start_trees + [str($tree_file)] +#end if +#if $tree_pars_count: + #set start_trees = start_trees + ['""'.join(["pars{", str($tree_pars_count), "}"])] +#end if +#if $tree_rand_count: + #set start_trees = start_trees + ['""'.join(["rand{", str($tree_rand_count), "}"])] +#end if +#set tree_str = '","'.join($start_trees) +#if $tree_str: + --tree $tree_str +#end if +#if $outgroup_name: + --outgroup '$outgroup_name' +#end if +#if $constraint_file: + --tree-constraint '$constraint_file' +#end if +#if $command == '--all' or $command == '--bootstrap': + #if $bs_metric + --bs-metric $bs_metric + #end if + #if $bs_mre: + --bs-trees autoMRE{$bs_reps} + --bs-cutoff $bs_cutoff + #else + --bs- trees $bs_reps + #end if +#elif $command == '--support': + #if $bs_metric + --bs-metric $bs_metric + #end if + --bs-trees $bs_trees +#elif $command == '--bsconverge': + --bs-cutoff $bs_cutoff + --bs-trees $bs_trees +#end if +#if $random_seed: + --seed $random_seed +#end if +#if $lh_epsilon: + --lh-epsilon $lh_epsilon +#end if +#if $lh_epsilon_triplet: + --lh-epsilon-triplet $lh_epsilon_triplet +#end if +#if $blmin: + --blmin $blmin +#end if +#if $blmax: + --blmax $blmax +#end if +$pat_comp +$site_repeats +$rate_scalers +#if $force: + --force $force +#end if +#if $log_level: + --log $log_level +#end if +#if $site_weights: + --site-weights $site_weights +#end if +--threads auto{\${GALAXY_SLOTS:-8}} + ]]></command> + <inputs> + <section name="general_opts" expanded="true" title="General options"> + <param name="command" type="select" label="Analysis type"> + <option value="--check">Check alignment correctness</option> + <!-- <option value="-parse">Convert alignment to a compressed binary format (RBA)</option> --> + <option value="--search" selected="true">Tree search (default)</option> + <option value="--search1">Tree search (FAST)</option> + <option value="--all">Tree search with branch support values (SLOW)</option> + <option value="--evaluate">Optimize branches and model parameters on a fixed topology</option> + <option value="--start">Generate parsimony and/or random starting trees</option> + <option value="--bootstrap">Bootstrap tree inference (SLOW)</option> + <option value="--support">Support value mapping from existing set of bootstrap trees</option> + <option value="--bsconverge">Bootstopping: Test bootstrap convergerge a posteriori</option> + <option value="--sitelh">Print per-site log-likelihoods</option> + <option value="--ancestral">Ancestral state reconstruction on a given tree</option> + <option value="--rfdist">RF: Compute pair-wise Robinson-Foulds distances between trees</option> + <option value="--consense">Build a consensus tree</option> + <option value="--terrace">Check whether a tree lies on a phylogenetic terrace</option> + </param> + <param name="infile" argument="--msa" type="data" format="fasta,phylip" label="Source file with aligned sequences" + help="At least four aligned genomes are needed for RAxML-NG." /> + <conditional name="model"> + <param name="model_type" type="select" display="radio" label="Model type"> + <option value="single_gui" selected="true">Single model (GUI)</option> + <option value="single_string">Single model (string)</option> + <option value="multi_file">Partitioned model file</option> + </param> + <when value="single_gui"> + <conditional name="single_model"> + <param name="seq_type" type="select" display="radio" label="Sequence type"> + <option value="nucleotide" selected="true">Nucleotide</option> + <option value="aminoacid">Amino Acid</option> + <option value="binary">Binary</option> + <option value="multistate">Multistate</option> + </param> + <when value="nucleotide"> + <param name="subst_matrix" type="select" label="Matrix"> + <option value="F81">F81</option> + <option value="GTR" selected="true">GTR</option> + <option value="HKY">HKY</option> + <option value="JC">JC</option> + <option value="K80">K80</option> + <option value="SYM">SYM</option> + <option value="TIM1">TIM1</option> + <option value="TIM2">TIM2</option> + <option value="TIM3">TIM3</option> + <option value="TN93">TN93</option> + <option value="TPM1">TPM1</option> + <option value="TPM2">TPM2</option> + <option value="TPM3">TPM3</option> + <option value="TVM">TVM</option> + </param> + </when> + <when value="aminoacid"> + <param name="subst_matrix" type="select" label="Matrix"> + <option value="BLOSUM62">BLOSUM62</option> + <option value="CPREV">CPREV</option> + <option value="DAYHOFF">DAYHOFF</option> + <option value="DCMUT">DCMUT</option> + <option value="FLU">FLU</option> + <option value="PROTGTR">GTR</option> + <option value="HIVB">HIVB</option> + <option value="HIVW">HIVW</option> + <option value="JTT">JTT</option> + <option value="JTT-DCMUT">JTT-DCMUT</option> + <option value="LG" selected="true">LG</option> + <option value="LG4M">LG4M</option> + <option value="LG4X">LG4X</option> + <option value="MTART">MTART</option> + <option value="MTMAM">MTMAM</option> + <option value="MTREV">MTREV</option> + <option value="MTZOA">MTZOA</option> + <option value="PMB">PMB</option> + <option value="RTREV">RTREV</option> + <option value="VT">VT</option> + <option value="WAG">WAG</option> + </param> + </when> + <when value="binary"> + <param name="subst_matrix" type="select" label="Matrix"> + <option value="BIN">BIN</option> + </param> + </when> + <when value="multistate"> + <param name="multi_state_count" type="integer" value="2" label="Number of states" /> + <param name="subst_matrix" type="select" label="Matrix"> + <option value="MK">MULTIx_MK</option> + <option value="GTR">MULTIx_GTR</option> + </param> + </when> + </conditional> + <param name="base_freqs" type="select" label="Stationary base frequencies"> + <option value="" selected="true">Default</option> + <option value="+FO">ML estimate</option> + <option value="+F">empirical</option> + <option value="+FE">equal</option> + </param> + <param name="rhas_model" type="select" label="Rate heterogeneity across sites (RHAS) model"> + <option value="">None / default</option> + <option value="+G" selected="true">GAMMA</option> + <option value="+I">Inv</option> + <option value="+I+G">Inv+GAMMA</option> + <option value="+R">FreeRate</option> + <option value="+I+R">Inv+FreeRate</option> + </param> + <param name="rhas_cat_count" type="integer" value="" optional="true" label="Number of RHAS categories" help="Typical range: 2..10 (default: 4)"/> + </when> + <when value="single_string"> + <param name="model_string" type="text" value="" optional="false" label="Model definition string" help="Help: https://github.com/amkozlov/raxml-ng/wiki/Input-data#single-model" > + <sanitizer> + <valid initial="string.ascii_letters,string.digits,string.punctuation"> + <remove value="';"/> + </valid> + </sanitizer> + </param> + </when> + <when value="multi_file"> + <param name="model_file" type="data" format="txt" label="Partitioned model file" help="Help: https://github.com/amkozlov/raxml-ng/wiki/Input-data#multiple-models" /> + <param name="brlen_linkage" type="select" display="radio" label="Branch length linkage among partitions"> + <option value="linked">Linked identical</option> + <option value="scaled" selected="true">Linked proportional</option> + <option value="unlinked">Unlinked</option> + </param> + </when> + </conditional> + </section> + <section name="tree_opts" expanded="false" title="Tree options"> + <param name="tree_file" type="data" format="nhx" optional="true" label="User starting trees (NEWICK file)" /> + <param name="tree_pars_count" type="integer" value="" optional="true" label="Number of PARSIMONY starting trees" /> + <param name="tree_rand_count" type="integer" value="" optional="true" label="Number of RANDOM starting trees" /> + <param name="outgroup_name" argument="--outgroup" type="text" value="" optional="true" label="Root a tree: Outgroup taxon name(s)" help="E.g. Mouse or Mouse,Rat. No spaces between taxon names are allowed"/> + <param name="constraint_file" argument="--tree-constraint" type="data" format="txt" optional="true" label="Constraint tree" help="Topological constraint in NEWICK format (can be partial)"/> + <param name="consensus_type" type="select" display="radio" label="Consensus type"> + <option value="strict">Strict</option> + <option value="mr" selected="true">Majority Rule (MR)</option> + <option value="mre">Majority Rule Extended (MRE)</option> + </param> + </section> + <section name="bootstrap_opts" expanded="false" title="Bootstrapping options"> + <param name="bs_metric" type="select" multiple="true" display="checkboxes" label="Branch support metric"> + <option value="fbp" selected="true">Felsenstein bootstrap</option> + <option value="tbe">Transfer bootstrap (TBE)</option> + </param> + <param name="bs_reps" type="integer" value="1000" min="1" max="10000" label="Number of replicates" /> + <param name="bs_mre" type="boolean" checked="true" label="Use bootstopping (autoMRE convergence test)" /> + <param name="bs_cutoff" type="float" value="0.03" min="0" max="1" label="Bootstopping cutoff" help="Cutoff threshold for the MRE-based convergence test" /> + <param argument="--bs-trees" type="data" format="nhx" optional="true" label="Existing set of bootstrap trees"/> + </section> + <section name="safety_opts" expanded="false" title="Safety checks"> + <param argument="--force" type="select" multiple="true" display="checkboxes" label="Disable safety checks (use with CAUTION!)"> + <option value="perf">Performance-related (e.g. number of threads)</option> + <option value="msa">MSA-related (e.g. duplicate or gap-only sequences) </option> + <option value="model">Model-related (e,g, invalid state frequencies)</option> + </param> + </section> + <section name="advanced_opts" expanded="false" title="Advanced options"> + <param name="random_seed" argument="--seed" type="integer" value="1" label="Random seed" /> + <param argument="--lh-epsilon" type="float" value="" optional="true" label="Log-likelihood epsilon for tree search and model optimization" help="Default: 0.1"/> + <param argument="--lh-epsilon-triplet" type="float" value="" optional="true" label="Log-likelihood epsilon for branch length triplet optimization" help="Default: 1000"/> + <param argument="--blmin" type="float" value="" optional="true" label="MIN branch length" help="Default: 10^-6"/> + <param argument="--blmax" type="float" value="" optional="true" label="MAX branch length" help="Default: 100"/> + <param name="pat_comp" type="boolean" truevalue="--pat-comp off" falsevalue="" label="Disable alignment pattern compression" help="Default: NO" /> + <param name="site_repeats" type="boolean" truevalue="--site-repeats off" falsevalue="" label="Disable site repeats optimization" help="Default: NO" /> + <param name="rate_scalers" type="boolean" truevalue="--rate-scalers on" falsevalue="" label="ALWAYS use individual CLV scalers for each rate category" help="Default: use if MSA has >2000 taxa" /> + <param name="log_level" argument="--log" type="select" optional="true" label="Log verbosity"> + <option value="error">ERROR</option> + <option value="warning">WARNING</option> + <option value="result">RESULT</option> + <option value="info">INFO</option> + <option value="progress">PROGRESS</option> + <option value="verbose">VERBOSE</option> + <option value="debug">DEBUG</option> + </param> + <param argument="--site-weights" type="data" format="txt" optional="true" label="File with custom MSA column weights (positive integers only!)" /> + </section> + </inputs> + <outputs> + <data format="txt" name="log" from_work_dir="galaxy.raxml.log" label="${tool.name} on ${on_string}: Log"/> + <!-- + <data format="binary" name="rba" from_work_dir="galaxy.raxml.rba" label="${tool.name} on ${on_string}: RAxML Binary Alignment"> + <filter> + general_opts['command'] in ["-parse", "-search", "-search1", "-all"] + </filter> + </data> + --> + <data format="nhx" name="bestTree" from_work_dir="galaxy.raxml.bestTree" label="${tool.name} on ${on_string}: Best-scoring ML Tree"> + <filter>general_opts['command'] in ["--search", "--search1", "--all", "--evaluate"] </filter> + </data> + <data format="nhx" name="supportTree" from_work_dir="galaxy.raxml.support" label="${tool.name} on ${on_string}: ML Tree with branch support values"> + <filter>general_opts['command'] in ["--all", "--support"] </filter> + </data> + <data format="nhx" name="bootstrapTrees" from_work_dir="galaxy.raxml.bootstraps" label="${tool.name} on ${on_string}: Bootstrap trees"> + <filter>general_opts['command'] in ["--all", "--bootstrap"] </filter> + </data> + <data format="txt" name="bestModel" from_work_dir="galaxy.raxml.bestModel" label="${tool.name} on ${on_string}: Optimized model parameters"> + <filter>general_opts['command'] in ["--search", "--search1", "--all", "--evaluate"]</filter> + </data> + <data format="nhx" name="startTree" from_work_dir="galaxy.raxml.startTree" label="${tool.name} on ${on_string}: Starting trees"> + <filter>general_opts['command'] in ["--search", "--search1", "--all", "--start"] </filter> + </data> + <data format="txt" name="siteLH" from_work_dir="galaxy.raxml.siteLH" label="${tool.name} on ${on_string}: Per-site log-likelihoods"> + <filter>general_opts['command'] == "--sitelh"</filter> + </data> + <data format="txt" name="rfDistances" from_work_dir="galaxy.raxml.rfDistances" label="${tool.name} on ${on_string}: Pair-wise RF distances"> + <filter>general_opts['command'] == "--rfdist"</filter> + </data> + <data format="txt" name="terrace" from_work_dir="galaxy.raxml.terrace" label="${tool.name} on ${on_string}: Terrace"> + <filter>general_opts['command'] == "--terrace"</filter> + </data> + <data format="nhx" name="consensusTreeSTRICT" from_work_dir="galaxy.raxml.consensusTreeSTRICT" label="${tool.name} on ${on_string}: Consensus Tree (strict)"> + <filter>general_opts['command'] == "--consense" and tree_opts['consensus_type'] == "strict" </filter> + </data> + <data format="nhx" name="consensusTreeMR" from_work_dir="galaxy.raxml.consensusTreeMR" label="${tool.name} on ${on_string}: Consensus Tree (MR)"> + <filter>general_opts['command'] == "--consense" and tree_opts['consensus_type'] == "mr" </filter> + </data> + <data format="nhx" name="consensusTreeMRE" from_work_dir="galaxy.raxml.consensusTreeMRE" label="${tool.name} on ${on_string}: Consensus Tree (MRE)"> + <filter>general_opts['command'] == "--consense" and tree_opts['consensus_type'] == "mre" </filter> + </data> + <data format="nhx" name="ancestralTree" from_work_dir="galaxy.raxml.ancestralTree" label="${tool.name} on ${on_string}: Ancestral None-labeled Tree"> + <filter>general_opts['command'] == "--ancestral" </filter> + </data> + <data format="txt" name="ancestralStates" from_work_dir="galaxy.raxml.ancestralStates" label="${tool.name} on ${on_string}: Ancestral Sequences"> + <filter>general_opts['command'] == "--ancestral" </filter> + </data> + <data format="txt" name="ancestralProbs" from_work_dir="galaxy.raxml.ancestralProbs" label="${tool.name} on ${on_string}: Ancestral Marginal Probabilities"> + <filter>general_opts['command'] == "--ancestral" </filter> + </data> + </outputs> + <tests> + <test expect_num_outputs="4"> + <section name="general_opts"> + <param name="command" value="--search"/> + <param name="infile" value="dna.phy"/> + <conditional name="model"> + <param name="model_type" value="single_gui"/> + <conditional name="single_model"> + <param name="seq_type" value="nucleotide"/> + <param name="subst_matrix" value="HKY"/> + </conditional> + </conditional> + </section> + <section name="tree_opts"> + <param name="tree_pars_count" value="6"/> + <param name="tree_rand_count" value="4"/> + </section> + <section name="advanced_opts"> + <param name="random_seed" value="1"/> + </section> + <output name="log"> + <assert_contents> + <has_text text="Final LogLikelihood:"/> + <has_text text="Elapsed time:"/> + </assert_contents> + </output> + <output name="startTree" file="tree10.raxml.galaxy" ftype="nhx"/> + <output name="bestModel"> + <assert_contents> + <has_n_columns n="2" sep="="/> + <has_n_lines n="1"/> + <has_text text="HKY"/> + </assert_contents> + </output> + <output name="bestTree" ftype="nhx"> + <assert_contents> + <has_text_matching expression="Frog"/> + </assert_contents> + </output> + </test> + <test expect_num_outputs="2"> + <section name="general_opts"> + <param name="command" value="--consense"/> + <param name="infile" value="dna.phy"/> + </section> + <section name="tree_opts"> + <param name="tree_file" value="tree10.raxml.galaxy"/> + <param name="consensus_type" value="mr"/> + </section> + <section name="advanced_opts"> + <param name="random_seed" value="1"/> + </section> + <output name="log"> + <assert_contents> + <has_text text="run mode: Build consensus tree"/> + <has_text text="Elapsed time:"/> + </assert_contents> + </output> + <output name="consensusTreeMR" ftype="nhx"> + <assert_contents> + <has_text text="Cow"/> + <has_text text="Frog"/> + <has_n_lines n="1"/> + </assert_contents> + </output> + </test> + </tests> + <help><![CDATA[ +RAxML-NG is a phylogenetic tree inference tool which uses Maximum-Likelihood (ML) optimality criterion. +Its search heuristic is based on iteratively performing a series of Subtree Pruning and Regrafting (SPR) moves, +which allows to quickly navigate to the best-known ML tree. +RAxML-NG is a successor of RAxML 8.x (Stamatakis 2014). + +Documentation: https://github.com/amkozlov/raxml-ng/wiki + +.. _RAxML-NG: http://www.exelixis-lab.org/web/software/raxml-ng/ + + ]]></help> + <citations> + <citation type="doi">10.1093/bioinformatics/btz305</citation> + </citations> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/dna.phy Sun Dec 21 10:17:03 2025 +0000 @@ -0,0 +1,11 @@ +10 60 +Cow ATGGCATATCCCATACAACTAGGATTCCAAGATGCAACATCACCAATCATAGAAGAACTA +Carp ATGGCACACCCAACGCAACTAGGTTTCAAGGACGCGGCCATACCCGTTATAGAGGAACTT +Chicken ATGGCCAACCACTCCCAACTAGGCTTTCAAGACGCCTCATCCCCCATCATAGAAGAGCTC +Human ATGGCACATGCAGCGCAAGTAGGTCTACAAGACGCTACTTCCCCTATCATAGAAGAGCTT +Loach ATGGCACATCCCACACAATTAGGATTCCAAGACGCGGCCTCACCCGTAATAGAAGAACTT +Mouse ATGGCCTACCCATTCCAACTTGGTCTACAAGACGCCACATCCCCTATTATAGAAGAGCTA +Rat ATGGCTTACCCATTTCAACTTGGCTTACAAGACGCTACATCACCTATCATAGAAGAACTT +Seal ATGGCATACCCCCTACAAATAGGCCTACAAGATGCAACCTCTCCCATTATAGAGGAGTTA +Whale ATGGCATATCCATTCCAACTAGGTTTCCAAGATGCAGCATCACCCATCATAGAAGAGCTC +Frog ATGGCACACCCATCACAATTAGGTTTTCAAGACGCAGCCTCTCCAATTATAGAAGAATTA \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/tree10.raxml.galaxy Sun Dec 21 10:17:03 2025 +0000 @@ -0,0 +1,10 @@ +(((((Frog:0.100000,Rat:0.100000):0.100000,(Whale:0.100000,Mouse:0.100000):0.100000):0.100000,Human:0.100000):0.100000,Cow:0.100000):0.100000,Carp:0.100000,(Loach:0.100000,(Seal:0.100000,Chicken:0.100000):0.100000):0.100000); +((Loach:0.100000,(Seal:0.100000,(Human:0.100000,((Whale:0.100000,Mouse:0.100000):0.100000,Cow:0.100000):0.100000):0.100000):0.100000):0.100000,Carp:0.100000,(Rat:0.100000,(Frog:0.100000,Chicken:0.100000):0.100000):0.100000); +(((Whale:0.100000,Loach:0.100000):0.100000,Cow:0.100000):0.100000,((Seal:0.100000,Human:0.100000):0.100000,(Rat:0.100000,(Mouse:0.100000,(Frog:0.100000,Carp:0.100000):0.100000):0.100000):0.100000):0.100000,Chicken:0.100000); +((((Rat:0.100000,(Frog:0.100000,Loach:0.100000):0.100000):0.100000,(Mouse:0.100000,(Seal:0.100000,Human:0.100000):0.100000):0.100000):0.100000,Cow:0.100000):0.100000,Carp:0.100000,(Whale:0.100000,Chicken:0.100000):0.100000); +((Cow:0.100000,(((Loach:0.100000,Carp:0.100000):0.100000,Frog:0.100000):0.100000,Seal:0.100000):0.100000):0.100000,Whale:0.100000,(Chicken:0.100000,((Human:0.100000,Mouse:0.100000):0.100000,Rat:0.100000):0.100000):0.100000); +((((((Loach:0.100000,Carp:0.100000):0.100000,Frog:0.100000):0.100000,Cow:0.100000):0.100000,Seal:0.100000):0.100000,Chicken:0.100000):0.100000,Whale:0.100000,((Mouse:0.100000,Rat:0.100000):0.100000,Human:0.100000):0.100000); +((Whale:0.100000,((Carp:0.100000,Loach:0.100000):0.100000,Frog:0.100000):0.100000):0.100000,((Human:0.100000,Mouse:0.100000):0.100000,Rat:0.100000):0.100000,((Seal:0.100000,Cow:0.100000):0.100000,Chicken:0.100000):0.100000); +((Seal:0.100000,Whale:0.100000):0.100000,(Chicken:0.100000,Mouse:0.100000):0.100000,((((Loach:0.100000,Carp:0.100000):0.100000,Frog:0.100000):0.100000,Cow:0.100000):0.100000,(Rat:0.100000,Human:0.100000):0.100000):0.100000); +((Rat:0.100000,Human:0.100000):0.100000,((Cow:0.100000,(Loach:0.100000,Carp:0.100000):0.100000):0.100000,((Chicken:0.100000,Mouse:0.100000):0.100000,Whale:0.100000):0.100000):0.100000,(Frog:0.100000,Seal:0.100000):0.100000); +((Cow:0.100000,Seal:0.100000):0.100000,(((Frog:0.100000,(Carp:0.100000,Loach:0.100000):0.100000):0.100000,(Human:0.100000,(Rat:0.100000,Mouse:0.100000):0.100000):0.100000):0.100000,Chicken:0.100000):0.100000,Whale:0.100000);
