<?xml version='1.0'?>
<!DOCTYPE art SYSTEM 'http://www.biomedcentral.com/xml/article.dtd'>
<art>
   <ui>1471-2105-9-550</ui>
   <ji>1471-2105</ji>
   <fm>
      <dochead>Research article</dochead>
      <bibl>
         <title>
            <p>Pathological rate matrices: from primates to pathogens</p>
         </title>
         <aug>
            <au id="A1">
               <snm>Schranz</snm>
               <mi>W</mi>
               <fnm>Harold</fnm>
               <insr iid="I1"/>
               <email>harold.schranz@anu.edu.au</email>
            </au>
            <au id="A2">
               <snm>Yap</snm>
               <mnm>Bing</mnm>
               <fnm>Von</fnm>
               <insr iid="I2"/>
               <email>stayapvb@nus.edu.sg</email>
            </au>
            <au id="A3">
               <snm>Easteal</snm>
               <fnm>Simon</fnm>
               <insr iid="I1"/>
               <email>Simon.Easteal@anu.edu.au</email>
            </au>
            <au id="A4">
               <snm>Knight</snm>
               <fnm>Rob</fnm>
               <insr iid="I3"/>
               <email>rob@spot.colorado.edu</email>
            </au>
            <au id="A5" ca="yes">
               <snm>Huttley</snm>
               <mi>A</mi>
               <fnm>Gavin</fnm>
               <insr iid="I1"/>
               <email>Gavin.Huttley@anu.edu.au</email>
            </au>
         </aug>
         <insg>
            <ins id="I1">
               <p>John Curtin School of Medical Research, The Australian National University, Canberra, ACT 0200, Australia</p>
            </ins>
            <ins id="I2">
               <p>Department of Statistics and Applied Probability National University of Singapore, Kent Ridge, Singapore</p>
            </ins>
            <ins id="I3">
               <p>Department of Chemistry &amp; Biochemistry, University of Colorado, Boulder, CO, USA</p>
            </ins>
         </insg>
         <source>BMC Bioinformatics</source>
         <issn>1471-2105</issn>
         <pubdate>2008</pubdate>
         <volume>9</volume>
         <issue>1</issue>
         <fpage>550</fpage>
         <url>http://www.biomedcentral.com/1471-2105/9/550</url>
         <xrefbib>
            <pubidlist>
               <pubid idtype="pmpid">19099591</pubid>
               <pubid idtype="doi">10.1186/1471-2105-9-550</pubid>
            </pubidlist>
         </xrefbib>
      </bibl>
      <history>
         <rec>
            <date>
               <day>30</day>
               <month>6</month>
               <year>2008</year>
            </date>
         </rec>
         <acc>
            <date>
               <day>19</day>
               <month>12</month>
               <year>2008</year>
            </date>
         </acc>
         <pub>
            <date>
               <day>19</day>
               <month>12</month>
               <year>2008</year>
            </date>
         </pub>
      </history>
      <cpyrt>
         <year>2008</year>
         <collab>Schranz et al; licensee BioMed Central Ltd.</collab>
         <note>This is an Open Access article distributed under the terms of the Creative Commons Attribution License (<url>http://creativecommons.org/licenses/by/2.0</url>), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</note>
      </cpyrt>
      <abs>
         <sec>
            <st>
               <p>Abstract</p>
            </st>
            <sec>
               <st>
                  <p>Background</p>
               </st>
               <p>Continuous-time Markov models allow flexible, parametrically succinct descriptions of sequence divergence. Non-reversible forms of these models are more biologically realistic but are challenging to develop. The instantaneous rate matrices defined for these models are typically transformed into substitution probability matrices using a matrix exponentiation algorithm that employs eigendecomposition, but this algorithm has characteristic vulnerabilities that lead to significant errors when a rate matrix possesses certain 'pathological' properties. Here we tested whether pathological rate matrices exist in nature, and consider the suitability of different algorithms to their computation.</p>
            </sec>
            <sec>
               <st>
                  <p>Results</p>
               </st>
               <p>We used concatenated protein coding gene alignments from microbial genomes, primate genomes and independent intron alignments from primate genomes. The Taylor series expansion and eigendecomposition matrix exponentiation algorithms were compared to the less widely employed, but more robust, Pad&#233; with scaling and squaring algorithm for nucleotide, dinucleotide, codon and trinucleotide rate matrices. Pathological dinucleotide and trinucleotide matrices were evident in the microbial data set, affecting the eigendecomposition and Taylor algorithms respectively. Even using a conservative estimate of matrix error (occurrence of an invalid probability), both Taylor and eigendecomposition algorithms exhibited substantial error rates: ~100% of all exonic trinucleotide matrices were pathological to the Taylor algorithm while ~10% of codon positions 1 and 2 dinucleotide matrices and intronic trinucleotide matrices, and ~30% of codon matrices were pathological to eigendecomposition. The majority of Taylor algorithm errors derived from occurrence of multiple unobserved states. A small number of negative probabilities were detected from the Pad&#233; algorithm on trinucleotide matrices that were attributable to machine precision. Although the Pad&#233; algorithm does not facilitate caching of intermediate results, it was up to 3&#215; faster than eigendecomposition on the same matrices.</p>
            </sec>
            <sec>
               <st>
                  <p>Conclusion</p>
               </st>
               <p>Development of robust software for computing non-reversible dinucleotide, codon and higher evolutionary models requires implementation of the Pad&#233; with scaling and squaring algorithm.</p>
            </sec>
         </sec>
      </abs>
   </fm>
   <bdy>
      <sec>
         <st>
            <p>Background</p>
         </st>
         <p>The dynamics of genetic divergence are typically modelled as a Markov process where the rates of exchange between discrete sequence states are described by rate matrices. Discrete- or continuous-time Markov processes employ different, but related, rate matrices. The former involve a substitution matrix that specifies the probabilities of substitution between sequence states in a discrete period of time (<b>P</b>(<it>t</it>), <abbrgrp><abbr bid="B1">1</abbr></abbrgrp>). The continuous-time Markov process employs an instantaneous rate matrix (<b>Q</b>), which defines the instantaneous relative rates of interchange between sequence states from which the substitution probabilities for a specified time period are obtained by <b>P</b>(<it>t</it>) = exp(<b>Q</b><it>t</it>) where <it>t </it>represents time and exp is the matrix exponential. The most commonly employed rate matrices impose the restriction that evolutionary processes are time-reversible (e.g. <abbrgrp><abbr bid="B1">1</abbr></abbrgrp>). The inaccuracy of this restriction is shown by the specificity of particular mutagens and repair enzymes <abbrgrp><abbr bid="B2">2</abbr></abbrgrp>, and by the apparent directionality of amelioration of horizontally transferred genes to the background genome composition <abbrgrp><abbr bid="B3">3</abbr></abbrgrp>.</p>
         <p>Relaxing the assumption of time-reversibility requires consideration of non-reversible matrices. Assessments of time-reversibility, which have largely been restricted to nucleotide rate matrices, show that non-reversible models can provide better estimation of important evolutionary parameters including rates of evolution and, when employed with the maximum-likelihood phylogenetic inference framework, phylogenetic tree support <abbrgrp><abbr bid="B4">4</abbr></abbrgrp>. The development of approaches to identifying both biologically accurate and parametrically succinct models is therefore of considerable interest. Non-reversible forms of codon substitution models would allow, for instance, consideration of temporal changes in mutation pressure on natural selection. However, limitations of matrix exponentiation algorithms have been cited as motivation for continued development of reversible models (for example, <abbrgrp><abbr bid="B5">5</abbr></abbrgrp>). Exploration of statistically efficient (parametrically reduced) forms might be most readily achieved using continuous time processes, but the accuracy of these approaches hinges on the properties of exponentiation of matrices from real biological data.</p>
         <p>The most obvious method for computing a matrix exponential is the generalisation of the Taylor series expansion of a scalar exponential <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>. Instead of a series of scalar terms, the matrix exponential is expressed as a Taylor series over terms involving matrix products. The series is truncated at a sufficiently large finite number of terms (<it>M</it>).</p>
         <p>
            <display-formula>
               <m:math name="1471-2105-9-550-i1" xmlns:m="http://www.w3.org/1998/Math/MathML">
                  <m:semantics>
                     <m:mrow>
                        <m:mtable>
                           <m:mtr>
                              <m:mtd>
                                 <m:mrow>
                                    <m:mstyle mathvariant="bold" mathsize="normal">
                                       <m:mi>P</m:mi>
                                    </m:mstyle>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>t</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                    <m:mo>=</m:mo>
                                    <m:mi>exp</m:mi>
                                    <m:mo>&#8289;</m:mo>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mstyle mathvariant="bold" mathsize="normal">
                                       <m:mi>Q</m:mi>
                                    </m:mstyle>
                                    <m:mi>t</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                 </m:mrow>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd>
                                 <m:mrow>
                                    <m:mo>=</m:mo>
                                    <m:mstyle mathvariant="bold" mathsize="normal">
                                       <m:mi>I</m:mi>
                                    </m:mstyle>
                                    <m:mo>+</m:mo>
                                    <m:mstyle mathvariant="bold" mathsize="normal">
                                       <m:mi>Q</m:mi>
                                    </m:mstyle>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>t</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                    <m:mo>+</m:mo>
                                    <m:mfrac>
                                       <m:mrow>
                                          <m:msup>
                                             <m:mstyle mathvariant="bold" mathsize="normal">
                                                <m:mi>Q</m:mi>
                                             </m:mstyle>
                                             <m:mn>2</m:mn>
                                          </m:msup>
                                          <m:msup>
                                             <m:mi>t</m:mi>
                                             <m:mn>2</m:mn>
                                          </m:msup>
                                       </m:mrow>
                                       <m:mrow>
                                          <m:mn>2</m:mn>
                                          <m:mo>!</m:mo>
                                       </m:mrow>
                                    </m:mfrac>
                                    <m:mo>+</m:mo>
                                    <m:mfrac>
                                       <m:mrow>
                                          <m:msup>
                                             <m:mstyle mathvariant="bold" mathsize="normal">
                                                <m:mi>Q</m:mi>
                                             </m:mstyle>
                                             <m:mn>3</m:mn>
                                          </m:msup>
                                          <m:msup>
                                             <m:mi>t</m:mi>
                                             <m:mn>3</m:mn>
                                          </m:msup>
                                       </m:mrow>
                                       <m:mrow>
                                          <m:mn>3</m:mn>
                                          <m:mo>!</m:mo>
                                       </m:mrow>
                                    </m:mfrac>
                                    <m:mo>+</m:mo>
                                    <m:mo>&#8230;</m:mo>
                                 </m:mrow>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd>
                                 <m:mrow>
                                    <m:mo>&#8776;</m:mo>
                                    <m:mstyle displaystyle="true">
                                       <m:munderover>
                                          <m:mo>&#8721;</m:mo>
                                          <m:mrow>
                                             <m:mi>i</m:mi>
                                             <m:mo>=</m:mo>
                                             <m:mn>0</m:mn>
                                          </m:mrow>
                                          <m:mi>M</m:mi>
                                       </m:munderover>
                                       <m:mrow>
                                          <m:mfrac>
                                             <m:mrow>
                                                <m:msup>
                                                   <m:mstyle mathvariant="bold" mathsize="normal">
                                                      <m:mi>Q</m:mi>
                                                   </m:mstyle>
                                                   <m:mi>i</m:mi>
                                                </m:msup>
                                                <m:msup>
                                                   <m:mi>t</m:mi>
                                                   <m:mi>i</m:mi>
                                                </m:msup>
                                             </m:mrow>
                                             <m:mrow>
                                                <m:mi>i</m:mi>
                                                <m:mo>!</m:mo>
                                             </m:mrow>
                                          </m:mfrac>
                                       </m:mrow>
                                    </m:mstyle>
                                 </m:mrow>
                              </m:mtd>
                           </m:mtr>
                        </m:mtable>
                     </m:mrow>
                     <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeWabmqaaaqaaiabhcfaqjabcIcaOiabdsha0jabcMcaPiabg2da9iGbcwgaLjabcIha4jabcchaWjabcIcaOiabhgfarjabdsha0jabcMcaPaqaaiabg2da9iabhMeajjabgUcaRiabhgfarjabcIcaOiabdsha0jabcMcaPiabgUcaRKqbaoaalaaabaGaeCyuae1aaWbaaeqabaGaeGOmaidaaiabdsha0naaCaaabeqaaiabikdaYaaaaeaacqaIYaGmcqGGHaqiaaGccqGHRaWkjuaGdaWcaaqaaiabhgfarnaaCaaabeqaaiabiodaZaaacqWG0baDdaahaaqabeaacqaIZaWmaaaabaGaeG4mamJaeiyiaecaaOGaey4kaSIaeSOjGSeabaGaeyisIS7aaabCaKqbagaadaWcaaqaaiabhgfarnaaCaaabeqaaiabdMgaPbaacqWG0baDdaahaaqabeaacqWGPbqAaaaabaGaemyAaKMaeiyiaecaaaWcbaGaemyAaKMaeyypa0JaeGimaadabaGaemyta0eaniabggHiLdaaaaaa@6451@</m:annotation>
                  </m:semantics>
               </m:math>
            </display-formula>
         </p>
         <p>Convergence of the series expansion depends on the magnitude of the matrix norm ||<b>Q</b>|| (a measure of the size of the elements in <b>Q</b>, see Methods equation 1) <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>. An important property of the Taylor series is a reduced rate of convergence for matrices with large ||<b>Q</b>|| such that achieving a required accuracy involves increasingly larger <it>M</it>. A further problem is that the impact of roundoff error increases with term order so the method becomes impractical and inaccurate for matrices with large ||<b>Q</b>||. Although some efficiency improvements can be made to reduce the number of matrix products required <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>, the essential defect remains. Accordingly, the Taylor series expansion performs worst on potentially the most biologically relevant matrices and thus sets a lower bound on both accuracy and computational performance. We will subsequently refer to the Taylor series matrices exponentiation algorithm as exp<sub>TAYL</sub>.</p>
         <p>Several other algorithms compute the matrix exponential, but differ substantially in their computational behaviour, performance, and vulnerability to so called pathological matrices. For the purposes of this paper, we define a pathological matrix as one that results in a substantial discrepancy between the 'true' value of <b>P </b>and the value computed as exp(<b>Q</b><it>t</it>) by a given algorithm. It is important to note that a matrix property responsible for a discrepancy affecting one particular algorithm may not necessarily affect another algorithm to the same extent.</p>
         <p>Of the collection of algorithms, that proposed as most robust (described below) is seldom adopted in the field of molecular evolution: instead, the method of matrix exponentiation by eigendecomposition is most widely used by existing software packages but is far less robust <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>. This latter algorithm is based on a matrix decomposition approach involving similarity transformations of the form <b>Q </b>= <b>SBS</b><sup>-1 </sup>so that</p>
         <p>
            <display-formula>exp(<b>Q</b>) = <b>S </b>exp(<b>B</b>)<b>S</b><sup>-1</sup></display-formula>
         </p>
         <p>where the aim is to find an <b>S </b>for which exp(<b>B</b>) is easy to compute. In the case of eigendecomposition, if <b>Q </b>= <b>UDU</b><sup>-1 </sup>where <b>U </b>are the eigenvectors, <b>D </b>is a diagonal matrix containing the eigenvalues of <b>Q </b>and <b>P</b>(<it>t</it>) the matrix of substitution probabilities for time <it>t</it>, then</p>
         <p>
            <display-formula><b>P</b>(<it>t</it>) = <b>U </b>exp(<b>D</b><it>t</it>)<b>U</b><sup>-1</sup>.</display-formula>
         </p>
         <p>The eigendecomposition approach has an important practical advantage for molecular evolutionary applications &#8211; the spectral theorem allows the calculation of arbitrary many values of exp(<b>Q</b><it>t</it>) from a single decomposition <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>. For a phylogenetic model that assumes a single (global) <b>Q </b>across the entire tree, for instance, this property means the decomposition need be performed only once per model evaluation. The <it>O</it>(<it>n</it><sup>3</sup>) complexity of the decomposition is thus outweighed by its suitability for caching intermediate results. Eigendecomposition works well for normal matrices (where a normal matrix is defined as one that commutes with its conjugate transpose <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>) but breaks down when <b>Q </b>does not have a complete set of linearly independent eigenvectors (an invertible <b>U </b>does not exist) or when <b>U </b>is close to singular, i.e. when the condition number of the matrix of eigenvectors cond(<b>U</b>) = cond<sub>EV</sub>(<b>Q</b>) is large. (We illustrate the analytical conditions under which the eigendecomposition approach can fail with an example in Additional file <supplr sid="S1">1</supplr>.) We will subsequently refer to the eigendecomposition matrix exponentiation algorithm as exp<sub>EIG</sub>.</p>
         <suppl id="S1">
            <title>
               <p>Additional File 1</p>
            </title>
            <text>
               <p>A pathological rate matrix example. An analytical example of a matrix pathological to eigendecomposition.</p>
            </text>
            <file name="1471-2105-9-550-S1.pdf">
               <p>Click here for file</p>
            </file>
         </suppl>
         <p>The algorithm advocated by Moler and van Loan <abbrgrp><abbr bid="B6">6</abbr></abbrgrp> computes the matrix exponential using the Pad&#233; approximation in combination with scaling and squaring <abbrgrp><abbr bid="B8">8</abbr></abbrgrp>. Pad&#233; approximants converge if the matrix norm ||<b>Q</b>|| is not too large. Thus, the idea is to reduce the matrix norm by scaling the matrix and then use Pad&#233; approximation (a ratio of series) to compute the scaled matrix exponential and then the full matrix exponential by squaring operations. The scaling and squaring operation reduces the norm of the matrix ||<b>Q</b>|| to that of a matrix ||<b>Q</b><it>'</it>||</p>
         <p>
            <display-formula><b>P</b>(<it>t</it>) = [exp(<b>Q</b><it>t</it>/<it>m</it>)]<sup><it>m </it></sup>= [exp(<b>Q</b><it>'t</it>)]<sup><it>m</it></sup></display-formula>
         </p>
         <p>The Pad&#233; approximation is a ratio of series where, typically, the series (denoted <it>p </it>and <it>q</it>) are constrained to be equal as diagonal Pad&#233; approximants are preferred for numerical efficiency <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>. The Pad&#233; approximation with scaling and squaring is then</p>
         <p>
            <display-formula>
               <m:math name="1471-2105-9-550-i2" xmlns:m="http://www.w3.org/1998/Math/MathML">
                  <m:semantics>
                     <m:mrow>
                        <m:mtable>
                           <m:mtr>
                              <m:mtd>
                                 <m:mrow>
                                    <m:mstyle mathvariant="bold" mathsize="normal">
                                       <m:mi>P</m:mi>
                                    </m:mstyle>
                                    <m:mo stretchy="false">(</m:mo>
                                    <m:mi>t</m:mi>
                                    <m:mo stretchy="false">)</m:mo>
                                    <m:mo>=</m:mo>
                                    <m:mo stretchy="false">[</m:mo>
                                    <m:mi>exp</m:mi>
                                    <m:mo>&#8289;</m:mo>
                                    <m:msup>
                                       <m:mrow>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:msup>
                                                <m:mi>Q</m:mi>
                                                <m:mo>&#8242;</m:mo>
                                             </m:msup>
                                          </m:mstyle>
                                          <m:mo stretchy="false">(</m:mo>
                                          <m:mi>t</m:mi>
                                          <m:mo stretchy="false">)</m:mo>
                                          <m:mo stretchy="false">]</m:mo>
                                       </m:mrow>
                                       <m:mi>m</m:mi>
                                    </m:msup>
                                 </m:mrow>
                              </m:mtd>
                           </m:mtr>
                           <m:mtr>
                              <m:mtd>
                                 <m:mrow>
                                    <m:mo>=</m:mo>
                                    <m:msup>
                                       <m:mrow>
                                          <m:mrow>
                                             <m:mo>(</m:mo>
                                             <m:mrow>
                                                <m:mfrac>
                                                   <m:mrow>
                                                      <m:mstyle displaystyle="true">
                                                         <m:msubsup>
                                                            <m:mo>&#8721;</m:mo>
                                                            <m:mrow>
                                                               <m:mi>j</m:mi>
                                                               <m:mo>=</m:mo>
                                                               <m:mn>0</m:mn>
                                                            </m:mrow>
                                                            <m:mi>p</m:mi>
                                                         </m:msubsup>
                                                         <m:mrow>
                                                            <m:mfrac>
                                                               <m:mrow>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mi>p</m:mi>
                                                                  <m:mo>+</m:mo>
                                                                  <m:mi>q</m:mi>
                                                                  <m:mo>&#8722;</m:mo>
                                                                  <m:mi>j</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                                  <m:mo>!</m:mo>
                                                                  <m:mi>p</m:mi>
                                                                  <m:mo>!</m:mo>
                                                               </m:mrow>
                                                               <m:mrow>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mi>p</m:mi>
                                                                  <m:mo>+</m:mo>
                                                                  <m:mi>q</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                                  <m:mo>!</m:mo>
                                                                  <m:mi>j</m:mi>
                                                                  <m:mo>!</m:mo>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mi>p</m:mi>
                                                                  <m:mo>&#8722;</m:mo>
                                                                  <m:mi>j</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                                  <m:mo>!</m:mo>
                                                               </m:mrow>
                                                            </m:mfrac>
                                                            <m:msup>
                                                               <m:mrow>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mstyle mathvariant="bold" mathsize="normal">
                                                                     <m:msup>
                                                                        <m:mi>Q</m:mi>
                                                                        <m:mo>&#8242;</m:mo>
                                                                     </m:msup>
                                                                  </m:mstyle>
                                                                  <m:mi>t</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                               </m:mrow>
                                                               <m:mi>j</m:mi>
                                                            </m:msup>
                                                         </m:mrow>
                                                      </m:mstyle>
                                                   </m:mrow>
                                                   <m:mrow>
                                                      <m:mstyle displaystyle="true">
                                                         <m:msubsup>
                                                            <m:mo>&#8721;</m:mo>
                                                            <m:mrow>
                                                               <m:mi>j</m:mi>
                                                               <m:mo>=</m:mo>
                                                               <m:mn>0</m:mn>
                                                            </m:mrow>
                                                            <m:mi>q</m:mi>
                                                         </m:msubsup>
                                                         <m:mrow>
                                                            <m:mfrac>
                                                               <m:mrow>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mi>p</m:mi>
                                                                  <m:mo>+</m:mo>
                                                                  <m:mi>q</m:mi>
                                                                  <m:mo>&#8722;</m:mo>
                                                                  <m:mi>j</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                                  <m:mo>!</m:mo>
                                                                  <m:mi>q</m:mi>
                                                                  <m:mo>!</m:mo>
                                                               </m:mrow>
                                                               <m:mrow>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mi>p</m:mi>
                                                                  <m:mo>+</m:mo>
                                                                  <m:mi>q</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                                  <m:mo>!</m:mo>
                                                                  <m:mi>j</m:mi>
                                                                  <m:mo>!</m:mo>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mi>q</m:mi>
                                                                  <m:mo>&#8722;</m:mo>
                                                                  <m:mi>j</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                                  <m:mo>!</m:mo>
                                                               </m:mrow>
                                                            </m:mfrac>
                                                            <m:msup>
                                                               <m:mrow>
                                                                  <m:mo stretchy="false">(</m:mo>
                                                                  <m:mo>&#8722;</m:mo>
                                                                  <m:mstyle mathvariant="bold" mathsize="normal">
                                                                     <m:msup>
                                                                        <m:mi>Q</m:mi>
                                                                        <m:mo>&#8242;</m:mo>
                                                                     </m:msup>
                                                                  </m:mstyle>
                                                                  <m:mi>t</m:mi>
                                                                  <m:mo stretchy="false">)</m:mo>
                                                               </m:mrow>
                                                               <m:mi>j</m:mi>
                                                            </m:msup>
                                                         </m:mrow>
                                                      </m:mstyle>
                                                   </m:mrow>
                                                </m:mfrac>
                                             </m:mrow>
                                             <m:mo>)</m:mo>
                                          </m:mrow>
                                       </m:mrow>
                                       <m:mi>m</m:mi>
                                    </m:msup>
                                 </m:mrow>
                              </m:mtd>
                           </m:mtr>
                        </m:mtable>
                     </m:mrow>
                     <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeWabiqaaaqaaiabhcfaqjabcIcaOiabdsha0jabcMcaPiabg2da9iabcUfaBjGbcwgaLjabcIha4jabcchaWjabcIcaOiqbhgfarzaafaGaeiikaGIaemiDaqNaeiykaKIaeiyxa01aaWbaaSqabeaacqWGTbqBaaaakeaacqGH9aqpdaqadaqcfayaamaalaaabaWaaabmaeaadaWcaaqaaiabcIcaOiabdchaWjabgUcaRiabdghaXjabgkHiTiabdQgaQjabcMcaPiabcgcaHiabdchaWjabcgcaHaqaaiabcIcaOiabdchaWjabgUcaRiabdghaXjabcMcaPiabcgcaHiabdQgaQjabcgcaHiabcIcaOiabdchaWjabgkHiTiabdQgaQjabcMcaPiabcgcaHaaacqGGOaakcuWHrbqugaqbaiabdsha0jabcMcaPmaaCaaabeqaaiabdQgaQbaaaeaacqWGQbGAcqGH9aqpcqaIWaamaeaacqWGWbaCaiabggHiLdaabaWaaabmaeaadaWcaaqaaiabcIcaOiabdchaWjabgUcaRiabdghaXjabgkHiTiabdQgaQjabcMcaPiabcgcaHiabdghaXjabcgcaHaqaaiabcIcaOiabdchaWjabgUcaRiabdghaXjabcMcaPiabcgcaHiabdQgaQjabcgcaHiabcIcaOiabdghaXjabgkHiTiabdQgaQjabcMcaPiabcgcaHaaacqGGOaakcqGHsislcuWHrbqugaqbaiabdsha0jabcMcaPmaaCaaabeqaaiabdQgaQbaaaeaacqWGQbGAcqGH9aqpcqaIWaamaeaacqWGXbqCaiabggHiLdaaaaGccaGLOaGaayzkaaWaaWbaaSqabeaacqWGTbqBaaaaaaaa@9056@</m:annotation>
                  </m:semantics>
               </m:math>
            </display-formula>
         </p>
         <p>The diagonal Pad&#233; method with scaling and squaring requires of the order of <it>O</it>((<it>q </it>+ <it>m </it>+ 1/3)<it>n</it><sup>3</sup>) operations but is, in general, more efficient than the Taylor series. To compute single values of exp(<b>Q</b><it>t</it>) therefore also takes of the order of <it>O</it>(<it>n</it><sup>3</sup>) operations, but does not have intermediate results that can be cached. Thus, each tree branch (and unique value of <it>t</it>) requires an independent exp(<b>Q</b><it>t</it>). The robust computational performance of Pad&#233; therefore comes at the cost of requiring an independent exp(<b>Q</b><it>t</it>) computation for each value of <it>t</it>. We will subsequently refer to the diagonal Pad&#233; with scaling and squaring matrix exponentiation algorithm as exp<sub>PAD&#201; </sub>.</p>
         <p>Given the evidence that the algorithms commonly employed by molecular evolutionary software can significantly err in their computation of the exponential <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>, a survey of whether matrices pathological to these algorithms exist in nature is essential for the development of biologically realistic models of sequence evolution that are computationally robust. Here we report the results of a survey for matrices pathological to the exp algorithms in both protein coding and non-protein coding sequences from lineages as diverse as microbes and primates.</p>
      </sec>
      <sec>
         <st>
            <p>Results</p>
         </st>
         <p><b>P </b>matrices were derived from species triads composed of two ingroups and an outgroup. Knowledge of the outgroup allows determination of the sequence states ancestral to the ingroup lineages, thereby enabling a simple counting procedure for generating the <b>P </b>matrices (described in the Methods). The outgroup further allows the resulting matrices to be non-reversible. For the current comparisons we arbitrarily set the time <it>t </it>to 1.</p>
         <p>For each <b>P</b>, the corresponding <b>Q </b>was estimated using a constrained optimisation procedure. While the relationship between <b>P </b>and <b>Q </b>suggested using the matrix logarithm to estimate <b>Q</b>, doing so resulted in nearly all dinucleotide and higher matrices having negative off-diagonal elements. In preliminary analyses, we determined that this property arose from sampling error (results not shown). Importantly, because matrices with negative off-diagonals cannot be readily interpreted we developed a constrained optimisation procedure for estimation of <b>Q </b>from <inline-formula><m:math name="1471-2105-9-550-i3" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>P</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCiuaaLbaKaaaaa@2D12@</m:annotation></m:semantics></m:math></inline-formula>. This procedure, which we describe in more detail in the Methods, used a numerical optimisation algorithm to minimise the value of ||<inline-formula><m:math name="1471-2105-9-550-i3" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>P</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCiuaaLbaKaaaaa@2D12@</m:annotation></m:semantics></m:math></inline-formula>- exp(<inline-formula><m:math name="1471-2105-9-550-i4" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>Q</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCyuaeLbaKaaaaa@2D14@</m:annotation></m:semantics></m:math></inline-formula>)|| subject to the constraint <it>q</it><sub><it>ij</it>, <it>i </it>&#8800; <it>j </it></sub>&#8805; 0. By default, this procedure employed the exp<sub>PAD&#201; </sub>algorithm, resulting in a bias towards this algorithm which we address in detail later. We note here that as the results were not substantively different when we used the matrix logarithm for estimating <b>Q </b>and the constrained optimisation approach produces matrices more likely to be representative of naturally occurring rate matrices, we only report results from the latter procedure.</p>
         <p>To measure the magnitude of a matrix we employ the Frobenius norm <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>, the square root of the sum of the absolute squared elements of a matrix (see Methods equation 1). The matrix norm is also used as a measurement of the error, or discrepancy, between <inline-formula><m:math name="1471-2105-9-550-i3" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>P</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCiuaaLbaKaaaaa@2D12@</m:annotation></m:semantics></m:math></inline-formula> and the results of exp<sub>TAYL</sub>, exp<sub>EIG </sub>and exp<sub>PAD&#201; </sub>algorithms and we denote these error statistics as &#1013;<sub><it>TAYL</it></sub>, &#1013;<sub><it>EIG </it></sub>and &#1013;<sub><it>PAD&#201; </it></sub>(see Methods equations 2&#8211;4). The additional matrix property of eigenvector matrix condition number, the product of the spectral matrix norms of the eigenvector matrix and inverted eigenvector matrix of <b>Q </b>(Methods equation 5), is also used as it indicates the suitability for digital computation of a matrix for eigendecomposition <abbrgrp><abbr bid="B9">9</abbr><abbr bid="B10">10</abbr><abbr bid="B11">11</abbr></abbrgrp>. Finally, because the elements of <b>P </b>are probabilities, we also defined a matrix as pathological to an algorithm if it contained an invalid probability value (&lt; 0, > 1).</p>
         <sec>
            <st>
               <p>Pathological matrices in microbes</p>
            </st>
            <p>Orthologous protein coding gene sequences were sampled from all species triples in KEGG where neighbours were 0&#8211;2% distant by 16 S rRNA and outgroups were 2&#8211;10% divergent. This procedure resulted in 136 valid species triples. Given the large number of genes, and that preliminary work indicated estimating a single trinucleotide <b>Q </b>required nearly 1 day, we concatenated all alignments from a triad and estimated separate <b>Q </b>matrices for each ingroup lineage from these concatenated alignments. As described in the Methods, aligned codon columns with non-nucleotide characters (such as indels or ambiguous bases) were deleted. Nucleotide and trinucleotide samples were obtained from the unmodified resulting alignments. Two distinct dinucleotide samples were considered. The patterns of mutation are typically distinct between the three different codon positions due to their differing influence of variation in the encoded amino acid sequence. We therefore consider dinucleotides sampled from both the first and second or second and third codon positions. We refer to these as the dinucleotide 1+2 or 2+3 matrices respectively. The minimum, median and maximum filtered, concatenated alignment lengths were ~31 Kbp, ~1.5 Mbp and ~3.7 Mbp respectively.</p>
            <p>Measures of exponentiation error for nucleotide matrices were low across all algorithms (Table <tblr tid="T1">1</tblr>). There were no exponentiation failures by any algorithm for the nucleotide matrices. A small fraction (&lt; 1%) of exp<sub>EIG </sub>failed, however, for the dinucleotide matrices derived from codon positions 1+2 or 2+3, with one significant failure resulting from a large number of zero elements that lead to a singular eigenvector matrix, and four failures where the maximum element size resulted in an invalid probability. Almost all <inline-formula><m:math name="1471-2105-9-550-i5" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mrow><m:mo>(</m:mo><m:mrow><m:mfrac><m:mrow><m:mn>255</m:mn></m:mrow><m:mrow><m:mn>257</m:mn></m:mrow></m:mfrac></m:mrow><m:mo>)</m:mo></m:mrow></m:mrow><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqcfa4aaeWaaeaadaWcaaqaaiabikdaYiabiwda1iabiwda1aqaaiabikdaYiabiwda1iabiEda3aaaaiaawIcacaGLPaaaaaa@33C4@</m:annotation></m:semantics></m:math></inline-formula> the trinucleotide matrices were pathological to exp<sub>TAYL</sub>, but none of these matrices were pathological to either the exp<sub>EIG </sub>or exp<sub>PAD&#201; </sub>algorithms. The other descriptive statistics increased with the dimension of the matrices: matrix norm and eigenvector matrix condition numbers systematically increased from the nucleotide to trinucleotide matrices. The distinct dinucleotide positions were predominantly consistent with each other, with median matrix statistics and error values of similar order.</p>
            <tbl id="T1">
               <title>
                  <p>Table 1</p>
               </title>
               <caption>
                  <p>Exponentiation of matrices from microbes.</p>
               </caption>
               <tblbdy cols="9">
                  <r>
                     <c ca="right">
                        <p>
                           <b>Data</b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>Norm<sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>Cond<sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>TAYL</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>EIG</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>PAD&#201;</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <inline-formula>
                              <m:math name="1471-2105-9-550-i6" xmlns:m="http://www.w3.org/1998/Math/MathML">
                                 <m:semantics>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                          </m:mstyle>
                                          <m:mrow>
                                             <m:mi>T</m:mi>
                                             <m:mi>A</m:mi>
                                             <m:mi>Y</m:mi>
                                             <m:mi>L</m:mi>
                                          </m:mrow>
                                          <m:mn>2</m:mn>
                                       </m:msubsup>
                                    </m:mrow>
                                    <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabdsfaujabdgeabjabdMfazjabdYeambqaaiabikdaYaaaaaa@32A3@</m:annotation>
                                 </m:semantics>
                              </m:math>
                           </inline-formula>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <inline-formula>
                              <m:math name="1471-2105-9-550-i7" xmlns:m="http://www.w3.org/1998/Math/MathML">
                                 <m:semantics>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                          </m:mstyle>
                                          <m:mrow>
                                             <m:mstyle mathvariant="bold" mathsize="normal">
                                                <m:mi>E</m:mi>
                                                <m:mi>I</m:mi>
                                                <m:mi>G</m:mi>
                                             </m:mstyle>
                                          </m:mrow>
                                          <m:mn>2</m:mn>
                                       </m:msubsup>
                                    </m:mrow>
                                    <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabhweafjabhMeajjabhEeahbqaaiabikdaYaaaaaa@315C@</m:annotation>
                                 </m:semantics>
                              </m:math>
                           </inline-formula>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>N<sup>3</sup></b>
                        </p>
                     </c>
                  </r>
                  <r>
                     <c cspan="9">
                        <hr/>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Nuc</p>
                     </c>
                     <c ca="right">
                        <p>(0.062, 0.59)</p>
                     </c>
                     <c ca="right">
                        <p>(1.4, 4.6)</p>
                     </c>
                     <c ca="right">
                        <p>(7.1e-06, 2e-05)</p>
                     </c>
                     <c ca="right">
                        <p>(7.1e-06, 2e-05)</p>
                     </c>
                     <c ca="right">
                        <p>(7.1e-06, 2e-05)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>272</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Dinuc 1+2</p>
                     </c>
                     <c ca="right">
                        <p>(0.082, 1.9)</p>
                     </c>
                     <c ca="right">
                        <p>(4.7, inf)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00012, 0.0032)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00012, inf)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00012, 0.0032)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>3</p>
                     </c>
                     <c ca="right">
                        <p>272</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Dinuc 2+3</p>
                     </c>
                     <c ca="right">
                        <p>(0.19, 3.1)</p>
                     </c>
                     <c ca="right">
                        <p>(3, 1e+02)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00015, 0.0079)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00015, 0.0079)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00015, 0.0079)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>1</p>
                     </c>
                     <c ca="right">
                        <p>272</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Trinuc</p>
                     </c>
                     <c ca="right">
                        <p>(3.2e+02, 4.4e+02)</p>
                     </c>
                     <c ca="right">
                        <p>(19, 3.5e+02)</p>
                     </c>
                     <c ca="right">
                        <p>(3.7e+84, 1.5e+136)</p>
                     </c>
                     <c ca="right">
                        <p>(0.22, 0.23)</p>
                     </c>
                     <c ca="right">
                        <p>(0.22, 0.23)</p>
                     </c>
                     <c ca="right">
                        <p>256</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>257</p>
                     </c>
                  </r>
               </tblbdy>
               <tblfn>
                  <p><sup>1 </sup>&#8211; median and maximum values; <sup>2 </sup>&#8211; Number of <b>P </b>matrices for the indicated algorithm with an invalid probability; <sup>3 </sup>&#8211; total number of matrices; inf &#8211; an infinite difference, typically arising from an exponentiation error.</p>
               </tblfn>
            </tbl>
         </sec>
         <sec>
            <st>
               <p>Pathological matrices in primates</p>
            </st>
            <p>Intronic alignments were sampled from Ensembl release 46 for 3 primate lineages &#8211; human, chimpanzee and macaque &#8211; where the outgroup status of macaque relative to the great apes is well established <abbrgrp><abbr bid="B12">12</abbr></abbrgrp>. Intronic sequences were sampled due to increased confidence in their orthology arising from the relationships between exonic sequences. Sequences unlikely to evolve by a point mutation process (such as simple repeat sequence) were masked and all alignment columns containing non-nucleotide characters were removed (see Methods). There were a total of 1079 alignments with minimum, median and maximum filtered alignment lengths of ~30 Kbp, ~59 Kbp and ~438 Kbp respectively.</p>
            <p>As for the microbial exonic sequences, no nucleotide matrices pathological to any of the algorithms were evident (Table <tblr tid="T2">2</tblr>). The results from dinucleotide matrices 1+2 and 2+3 were similar &#8211; low errors across all algorithms and no matrices pathological to any algorithm. This result is distinct from that evident from the microbial exonic data. Also different to the microbial data were an appreciable frequency (~10%) of trinucleotide matrices pathological to exp<sub>EIG </sub>while no matrices were pathological to exp<sub>TAYL</sub>. A moderate number of matrices were also pathological to exp<sub>PAD&#201;</sub>, but inspection of these revealed a maximum negative element size of -1.2e-33, indicating these as likely deriving from rounding errors. Also consistent with the results from the microbial analyses, the eigenvector matrix condition numbers increased from the nucleotide to trinucleotide matrices (see Figure <figr fid="F1">1</figr>).</p>
            <tbl id="T2">
               <title>
                  <p>Table 2</p>
               </title>
               <caption>
                  <p>Exponentiation of matrices from primate intron sequences.</p>
               </caption>
               <tblbdy cols="9">
                  <r>
                     <c ca="right">
                        <p>
                           <b>Data</b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>Norm<sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>Cond<sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>TAYL</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>EIG</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>PAD&#201;</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <inline-formula>
                              <m:math name="1471-2105-9-550-i6" xmlns:m="http://www.w3.org/1998/Math/MathML">
                                 <m:semantics>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                          </m:mstyle>
                                          <m:mrow>
                                             <m:mi>T</m:mi>
                                             <m:mi>A</m:mi>
                                             <m:mi>Y</m:mi>
                                             <m:mi>L</m:mi>
                                          </m:mrow>
                                          <m:mn>2</m:mn>
                                       </m:msubsup>
                                    </m:mrow>
                                    <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabdsfaujabdgeabjabdMfazjabdYeambqaaiabikdaYaaaaaa@32A3@</m:annotation>
                                 </m:semantics>
                              </m:math>
                           </inline-formula>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <inline-formula>
                              <m:math name="1471-2105-9-550-i7" xmlns:m="http://www.w3.org/1998/Math/MathML">
                                 <m:semantics>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                          </m:mstyle>
                                          <m:mrow>
                                             <m:mstyle mathvariant="bold" mathsize="normal">
                                                <m:mi>E</m:mi>
                                                <m:mi>I</m:mi>
                                                <m:mi>G</m:mi>
                                             </m:mstyle>
                                          </m:mrow>
                                          <m:mn>2</m:mn>
                                       </m:msubsup>
                                    </m:mrow>
                                    <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabhweafjabhMeajjabhEeahbqaaiabikdaYaaaaaa@315C@</m:annotation>
                                 </m:semantics>
                              </m:math>
                           </inline-formula>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>N<sup>3</sup></b>
                        </p>
                     </c>
                  </r>
                  <r>
                     <c cspan="9">
                        <hr/>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Nuc</p>
                     </c>
                     <c ca="right">
                        <p>(0.015, 0.047)</p>
                     </c>
                     <c ca="right">
                        <p>(1.5, 56)</p>
                     </c>
                     <c ca="right">
                        <p>(6.8e-06, 1.7e-05)</p>
                     </c>
                     <c ca="right">
                        <p>(6.8e-06, 1.7e-05)</p>
                     </c>
                     <c ca="right">
                        <p>(6.8e-06, 1.7e-05)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>2158</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Dinuc 1+2</p>
                     </c>
                     <c ca="right">
                        <p>(0.074, 0.21)</p>
                     </c>
                     <c ca="right">
                        <p>(10, 3.3e+02)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00016, 0.00058)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00016, 0.00058)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00016, 0.00058)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>2158</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Dinuc 2+3</p>
                     </c>
                     <c ca="right">
                        <p>(0.074, 0.2)</p>
                     </c>
                     <c ca="right">
                        <p>(11, 1.2e+03)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00016, 0.00085)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00016, 0.00085)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00016, 0.00085)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>2158</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Trinuc</p>
                     </c>
                     <c ca="right">
                        <p>(0.24, 0.95)</p>
                     </c>
                     <c ca="right">
                        <p>(1.8e+02, 1.1e+07)</p>
                     </c>
                     <c ca="right">
                        <p>(0.001, 0.017)</p>
                     </c>
                     <c ca="right">
                        <p>(0.001, 7.5)</p>
                     </c>
                     <c ca="right">
                        <p>(0.001, 0.017)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>188</p>
                     </c>
                     <c ca="right">
                        <p>2080</p>
                     </c>
                  </r>
               </tblbdy>
               <tblfn>
                  <p><sup>1 </sup>&#8211; median and maximum values; <sup>2 </sup>&#8211; Number of <b>P </b>matrices for the indicated algorithm with an invalid probability; <sup>3 </sup>&#8211; total number of matrices.</p>
               </tblfn>
            </tbl>
            <fig id="F1">
               <title>
                  <p>Figure 1</p>
               </title>
               <caption>
                  <p>Eigenvector matrix condition number increases with the dimension of the substitution model</p>
               </caption>
               <text>
                  <p><b>Eigenvector matrix condition number increases with the dimension of the substitution model</b>. Data are from primate introns.</p>
               </text>
               <graphic file="1471-2105-9-550-1"/>
            </fig>
            <p>Motivated by the differing frequency of pathological matrices between microbial exonic and primate intronic data, we sampled a collection of primate protein coding gene exons. Specifically, we used exonic sequence from a subset of the genes from which the introns were obtained. Given the restriction of pathological matrices to dinucleotide or higher alphabets, and high computational demands of fitting trinucleotide models, we sampled 1028 CDS alignments and combined these into 103 concatenated (10 loci each) alignments (see Methods). The minimum, median and maximum filtered, concatenated alignment lengths were ~12 Kbp, ~24 Kbp and ~40 Kbp respectively.</p>
            <p>The matrix properties for these data, shown in Table <tblr tid="T3">3</tblr>, showed more consistency with those of the microbial exonic data than primate intronic data. As observed in the microbial analyses, an appreciable frequency (~8%) of dinucleotide matrices from codon positions 1+2 were pathological to exp<sub>EIG </sub>but not to exp<sub>TAYL</sub>. A smaller proportion (~1%) of matrices from codon positions 2+3 were pathological to exp<sub>EIG</sub>. Also consistent with the microbial exon analysis results, all trinucleotide matrices were pathological to exp<sub>TAYL</sub>. These results establish that the frequency of matrices pathological to exp<sub>TAYL </sub>and exp<sub>EIG </sub>depends on the class of sequence being sampled.</p>
            <tbl id="T3">
               <title>
                  <p>Table 3</p>
               </title>
               <caption>
                  <p>Exponentiation of matrices from primate protein coding exons.</p>
               </caption>
               <tblbdy cols="9">
                  <r>
                     <c ca="right">
                        <p>
                           <b>Data</b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>Norm<sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>Cond<sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>TAYL</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>EIG</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>&#1013;<sub>PAD&#201;</sub><sup>1</sup></b>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <inline-formula>
                              <m:math name="1471-2105-9-550-i6" xmlns:m="http://www.w3.org/1998/Math/MathML">
                                 <m:semantics>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                          </m:mstyle>
                                          <m:mrow>
                                             <m:mi>T</m:mi>
                                             <m:mi>A</m:mi>
                                             <m:mi>Y</m:mi>
                                             <m:mi>L</m:mi>
                                          </m:mrow>
                                          <m:mn>2</m:mn>
                                       </m:msubsup>
                                    </m:mrow>
                                    <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabdsfaujabdgeabjabdMfazjabdYeambqaaiabikdaYaaaaaa@32A3@</m:annotation>
                                 </m:semantics>
                              </m:math>
                           </inline-formula>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <inline-formula>
                              <m:math name="1471-2105-9-550-i7" xmlns:m="http://www.w3.org/1998/Math/MathML">
                                 <m:semantics>
                                    <m:mrow>
                                       <m:msubsup>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                          </m:mstyle>
                                          <m:mrow>
                                             <m:mstyle mathvariant="bold" mathsize="normal">
                                                <m:mi>E</m:mi>
                                                <m:mi>I</m:mi>
                                                <m:mi>G</m:mi>
                                             </m:mstyle>
                                          </m:mrow>
                                          <m:mn>2</m:mn>
                                       </m:msubsup>
                                    </m:mrow>
                                    <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabhweafjabhMeajjabhEeahbqaaiabikdaYaaaaaa@315C@</m:annotation>
                                 </m:semantics>
                              </m:math>
                           </inline-formula>
                        </p>
                     </c>
                     <c ca="right">
                        <p>
                           <b>N<sup>3</sup></b>
                        </p>
                     </c>
                  </r>
                  <r>
                     <c cspan="9">
                        <hr/>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Dinuc 1+2</p>
                     </c>
                     <c ca="right">
                        <p>(0.021, 0.16)</p>
                     </c>
                     <c ca="right">
                        <p>(42, 1.4e+04)</p>
                     </c>
                     <c ca="right">
                        <p>(3.1e-05, 0.00044)</p>
                     </c>
                     <c ca="right">
                        <p>(3.1e-05, 0.00044)</p>
                     </c>
                     <c ca="right">
                        <p>(3.1e-05, 0.00044)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>17</p>
                     </c>
                     <c ca="right">
                        <p>206</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Dinuc 2+3</p>
                     </c>
                     <c ca="right">
                        <p>(0.051, 0.18)</p>
                     </c>
                     <c ca="right">
                        <p>(23, 1.1e+04)</p>
                     </c>
                     <c ca="right">
                        <p>(7.1e-05, 0.00041)</p>
                     </c>
                     <c ca="right">
                        <p>(7.1e-05, 0.00041)</p>
                     </c>
                     <c ca="right">
                        <p>(7.1e-05, 0.00041)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>3</p>
                     </c>
                     <c ca="right">
                        <p>206</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Trinuc</p>
                     </c>
                     <c ca="right">
                        <p>(2.7e+02, 3.4e+02)</p>
                     </c>
                     <c ca="right">
                        <p>(2.9e+02, 2.3e+04)</p>
                     </c>
                     <c ca="right">
                        <p>(6.4e+65, 3.6e+89)</p>
                     </c>
                     <c ca="right">
                        <p>(0.22, 0.22)</p>
                     </c>
                     <c ca="right">
                        <p>(0.22, 0.22)</p>
                     </c>
                     <c ca="right">
                        <p>206</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>206</p>
                     </c>
                  </r>
                  <r>
                     <c ca="right">
                        <p>Codon</p>
                     </c>
                     <c ca="right">
                        <p>(0.15, 0.42)</p>
                     </c>
                     <c ca="right">
                        <p>(4.7e+02, inf)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00049, 0.0029)</p>
                     </c>
                     <c ca="right">
                        <p>(0.0005, 0.087)</p>
                     </c>
                     <c ca="right">
                        <p>(0.00049, 0.0029)</p>
                     </c>
                     <c ca="right">
                        <p>0</p>
                     </c>
                     <c ca="right">
                        <p>62</p>
                     </c>
                     <c ca="right">
                        <p>206</p>
                     </c>
                  </r>
               </tblbdy>
               <tblfn>
                  <p><sup>1 </sup>&#8211; median and maximum values; <sup>2 </sup>&#8211; Number of <b>P </b>matrices for the indicated algorithm with an invalid probability; <sup>3 </sup>&#8211; total number of matrices.</p>
               </tblfn>
            </tbl>
            <p>An important difference between the trinucleotide matrices from the intronic and exonic sequences is the presence of the trinucleotides encoding stop codons. We assessed whether inclusion of these states, which are absent from the in frame exons, contributed to the exponentiation errors by excluding unobserved states from the trinucleotide count matrices. This therefore generates 61 &#215; 61 matrices, as employed by codon substitution models. As shown in the last row of Table <tblr tid="T3">3</tblr>, with the removal of unobserved states the errors from exp<sub>TAYL </sub>were completely eliminated. We further confirmed that the presence of unobserved states was responsible for the exp<sub>TAYL </sub>failures by taking a dinucleotide counts matrix and selecting two states to be missing (setting the corresponding row/column counts to all zeros). Exponentiation of this constructed matrix also proved pathological to exp<sub>TAYL</sub>. Interestingly, the frequency of errors from exp<sub>EIG </sub>was significantly increased with ~30% of codon matrices proving pathological (Table <tblr tid="T3">3</tblr>).</p>
         </sec>
      </sec>
      <sec>
         <st>
            <p>Discussion</p>
         </st>
         <p>Our analyses confirm the numerical qualities of the three matrix exponentiation algorithms are distinct and that matrices pathological to both exp<sub>EIG </sub>and exp<sub>TAYL </sub>exist in nature. The magnitude of errors ranged from the subtle, <b>P </b>had probabilities close to but outside the interval 0&#8211;1, to extreme cases of algorithmic failure or extremely large elements. The range of these errors, and the data-type dependent frequency of matrices pathological to an algorithm indicate that exp<sub>TAYL </sub>and exp<sub>EIG </sub>are ill-suited to evaluation of non-reversible evolutionary models or to data where more than one sequence state is not observed.</p>
         <p>An important impact of our study design is a bias towards exp<sub>PAD&#201; </sub>which we now partly redress. This bias was inevitable because estimates of <b>Q </b>had to be obtained from estimates of <b>P </b>and the prohibitive computational time required for estimation of trinucleotide <b>Q </b>necessitated a choice of a single exp algorithm. For the microbial lineages in particular, fitting a single trinucleotide <b>Q </b>frequently took ~1 day. We therefore elected to fit the trinucleotide matrices using the exp<sub>PAD&#201; </sub>since it was supported as most robust <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>. Nonetheless, we considered the bias introduced by estimating <b>Q </b>using one algorithm and computing exp(<b>Q</b>) with another. The dinucleotide model failures of exp<sub>EIG </sub>provided an opportunity to efficiently (with regards to compute time) assess whether constrained optimisation of <b>Q </b>using exp<sub>EIG</sub>, instead of exp<sub>PAD&#201;</sub>, might eliminate the matrices pathological to exp<sub>EIG</sub>. We therefore modified the constrained fitting of <b>Q </b>to use exp<sub>EIG </sub>instead of exp<sub>PAD&#201;</sub>, and applied the algorithm to the primate dinucleotide matrices derived from codon positions 1+2 of the concatenated protein coding sequences and exponentiated the resulting <inline-formula><m:math name="1471-2105-9-550-i4" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>Q</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCyuaeLbaKaaaaa@2D14@</m:annotation></m:semantics></m:math></inline-formula> also using exp<sub>EIG</sub>. From the resulting matrices there was 1 failure during optimisation and 6 matrices remained pathological to exp<sub>EIG </sub>after this procedure. This number is smaller than the 17 failures (Table <tblr tid="T3">3</tblr>) for exp<sub>EIG </sub>when applied to <b>Q </b>estimated using exp<sub>PAD&#201; </sub>. These results indicate that although using a different algorithm for estimating <b>Q </b>introduces some bias, exp<sub>EIG </sub>still fails at an appreciable frequency. We note that for the <b>Q </b>matrices estimated using exp<sub>EIG</sub>, neither exp<sub>PAD&#201; </sub>nor exp<sub>TAYL </sub>exhibited high &#1013;. However, the exp<sub>PAD&#201; </sub>of <b>Q </b>estimated by exp<sub>EIG </sub>returned invalid probabilities from <inline-formula><m:math name="1471-2105-9-550-i8" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mrow><m:mfrac><m:mrow><m:mn>21</m:mn></m:mrow><m:mrow><m:mn>4701</m:mn></m:mrow></m:mfrac></m:mrow><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqcfa4aaSaaaeaacqaIYaGmcqaIXaqmaeaacqaI0aancqaI3aWncqaIWaamcqaIXaqmaaaaaa@3225@</m:annotation></m:semantics></m:math></inline-formula> of the matrices examined in this study (all matrices considered in Tables <tblr tid="T1">1</tblr>, <tblr tid="T2">2</tblr>, <tblr tid="T3">3</tblr> and those estimated using exp<sub>EIG</sub>). These failures were all extremely small negative values, the largest absolute value being ~10<sup>-34</sup>, likely reflecting rounding errors and thus their infrequent occurrence and extremely small size support the robustness of exp<sub>PAD&#201; </sub>.</p>
         <p>The failure on both sequence classes of the eigendecomposition algorithm can originate from properties of the eigenvectors and/or eigenvalues. If the eigenvector matrix of a given <b>Q </b>is near-singular, then spectral expansion of the matrix exponential exp<sub>EIG</sub>(<b>Q</b>) is ill-defined. The eigenvalues influence on the computations occurs when a <b>Q </b>has very many almost degenerate (in the examples in the present study, near zero) elements. In these cases, though the numerically determined eigenvector matrix has an inverse, the set of numerically determined eigenvalues and eigenvectors do not accurately satisfy the eigenvalue equation <abbrgrp><abbr bid="B13">13</abbr></abbrgrp> that can lead to failure of the spectral representation of the matrix exponential exp<sub>EIG </sub>of <b>Q</b>.</p>
         <p>There appears to be a connection between these two types of failures: matrices with ill-conditioned eigenvector matrices lie close to ones with multiple eigenvalues <abbrgrp><abbr bid="B14">14</abbr></abbrgrp>. Thus, the eigendecomposition can fail (or become inaccurate) due to ill-conditioning of the eigenvectors (becoming parallel) or of the eigenvalues (many degenerate near zero values) or both <abbrgrp><abbr bid="B13">13</abbr><abbr bid="B15">15</abbr></abbrgrp>.</p>
         <p>The influence of sequence type on the frequency of pathological matrices originated in part from absence of some sequence states and potentially also from the reduced divergence of protein-coding DNA sequences. The exp<sub>TAYL </sub>algorithm exhibited the most striking difference between exonic and intronic sequences. As demonstrated by our artificial dinucleotide example, where we set multiple states to being unobserved, these failures arose from multiple unobserved sequence exchanges. The exp<sub>TAYL </sub>algorithm should therefore not be used on data sets where this may arise. The exp<sub>EIG </sub>algorithm also exhibited a difference in failure rates between the two sequence classes &#8211; ~10% trinucleotide matrices on intronic data, ~5% dinucleotide matrices and ~30% codon matrices on primate exonic data. Combined with the difference in error rates of dinucleotide matrices for positions 1+2 and 2+3 on exonic data, these results suggest that the ultimate biological cause of these failures is the suppressing influence of natural selection on substitution rates. Of the three codon positions, positions 1+2 are subjected to greater scrutiny by natural selection than positions 2+3. The result is that many of the dinucleotides exhibit similarly reduced substitutions in a matrix such that some of the eigenvectors may be almost parallel, resulting in a near-singular matrix. The fact that there is little difference in the matrix norm statistics between dinucleotide 1+2 and 2+3, yet the maximum eigenvector matrix condition numbers exhibit a similar order of magnitude to that observed for the trinucleotide cases (Tables <tblr tid="T1">1</tblr> and <tblr tid="T3">3</tblr>), is consistent with this hypothesis <abbrgrp><abbr bid="B16">16</abbr></abbrgrp>. The absence of such errors from the primate intron dinucleotide matrices (Table <tblr tid="T2">2</tblr>) follows, because the putative absence of selective constraint on intronic sequence would allow greater differentiation between the dinucleotide substitutions and thus result in matrices that were not close to singular. This argument also applies to the increased frequency of errors affecting codon matrices compared with the trinucleotide counterparts (Table <tblr tid="T3">3</tblr>). These results indicate that combinations of divergence and natural selection, such as those considered here, exist to which the exp<sub>EIG </sub>algorithm is not well suited.</p>
         <p>We considered an alternate, but less likely, explanation for the distinct frequency of pathological matrices between the protein coding and intronic sequence classes &#8211; that they represent an artefact of the concatenation of protein coding sequences. Concatenation of sequences from protein coding genes subjected to distinct evolutionary and mutagenic processes could generate (or obscure) pathological matrices. We evaluated this possibility for dinucleotide matrices on individual protein coding sequence alignments for just one of the species triples (<it>Anabaena variabilis, Anabaena sp. </it>PCC 7120 and <it>Thermosynechococcus elongatus</it>). The results were consistent with those reported above regarding the occurrence of errors for exp<sub>EIG </sub>(Table <tblr tid="T4">4</tblr>). In contrast to the results from the concatenated alignments, there was a substantial error rate from exp<sub>TAYL</sub>. Consistent with our assessment from trinucleotide matrices from protein coding sequences, the failures were predominantly caused by the absence of some states, a case that was increased due to the much shorter length of the individual alignments. These properties were robust to whether exp<sub>PAD&#201; </sub>or exp<sub>EIG </sub>were used in the constrained optimisation step (Table <tblr tid="T4">4</tblr>). That all algorithms exhibited a consistently lower median error rate on the <inline-formula><m:math name="1471-2105-9-550-i4" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>Q</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCyuaeLbaKaaaaa@2D14@</m:annotation></m:semantics></m:math></inline-formula> estimated using exp<sub>PAD&#201; </sub>(~0.0017) compared with those estimated using exp<sub>EIG </sub>(~0.0026) further supports the robustness of exp<sub>PAD&#201; </sub>.</p>
         <tbl id="T4">
            <title>
               <p>Table 4</p>
            </title>
            <caption>
               <p>Exponentiation of individual matrices from protein coding exons from a triad of microbial species.</p>
            </caption>
            <tblbdy cols="11">
               <r>
                  <c ca="center">
                     <p>
                        <b>Fit<sup>1</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>Data</b>
                     </p>
                  </c>
                  <c ca="left">
                     <p>
                        <b>Norm<sup>2</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>Cond<sup>2</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>&#1013;<sub>TAYL</sub><sup>2</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>&#1013;<sub>EIG</sub><sup>2</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>&#1013;<sub>PAD&#201;</sub><sup>2</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <inline-formula>
                           <m:math name="1471-2105-9-550-i9" xmlns:m="http://www.w3.org/1998/Math/MathML">
                              <m:semantics>
                                 <m:mrow>
                                    <m:msubsup>
                                       <m:mstyle mathvariant="bold" mathsize="normal">
                                          <m:mi>E</m:mi>
                                       </m:mstyle>
                                       <m:mrow>
                                          <m:mi>T</m:mi>
                                          <m:mi>A</m:mi>
                                          <m:mi>Y</m:mi>
                                          <m:mi>L</m:mi>
                                       </m:mrow>
                                       <m:mn>3</m:mn>
                                    </m:msubsup>
                                 </m:mrow>
                                 <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabdsfaujabdgeabjabdMfazjabdYeambqaaiabiodaZaaaaaa@32A5@</m:annotation>
                              </m:semantics>
                           </m:math>
                        </inline-formula>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <inline-formula>
                           <m:math name="1471-2105-9-550-i10" xmlns:m="http://www.w3.org/1998/Math/MathML">
                              <m:semantics>
                                 <m:mrow>
                                    <m:msubsup>
                                       <m:mstyle mathvariant="bold" mathsize="normal">
                                          <m:mi>E</m:mi>
                                       </m:mstyle>
                                       <m:mrow>
                                          <m:mstyle mathvariant="bold" mathsize="normal">
                                             <m:mi>E</m:mi>
                                             <m:mi>I</m:mi>
                                             <m:mi>G</m:mi>
                                          </m:mstyle>
                                       </m:mrow>
                                       <m:mn>3</m:mn>
                                    </m:msubsup>
                                 </m:mrow>
                                 <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeCyrau0aa0baaSqaaiabhweafjabhMeajjabhEeahbqaaiabiodaZaaaaaa@315E@</m:annotation>
                              </m:semantics>
                           </m:math>
                        </inline-formula>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>E<sub>PAD&#201;</sub><sup>3</sup></b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>N<sup>4</sup></b>
                     </p>
                  </c>
               </r>
               <r>
                  <c cspan="11">
                     <hr/>
                  </c>
               </r>
               <r>
                  <c ca="right">
                     <p>exp<sub>PAD&#201;</sub></p>
                  </c>
                  <c ca="left">
                     <p>Dinuc 1+2</p>
                  </c>
                  <c ca="left">
                     <p>(0.13, 3.7e+02)</p>
                  </c>
                  <c ca="right">
                     <p>(10, 1.3e+18)</p>
                  </c>
                  <c ca="right">
                     <p>(6.2e-06, 1.2e+137)</p>
                  </c>
                  <c ca="right">
                     <p>(6.2e-06, 86)</p>
                  </c>
                  <c ca="right">
                     <p>(6.2e-06, 0.96)</p>
                  </c>
                  <c ca="right">
                     <p>85</p>
                  </c>
                  <c ca="right">
                     <p>141</p>
                  </c>
                  <c ca="right">
                     <p>0</p>
                  </c>
                  <c ca="right">
                     <p>5580</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="left">
                     <p>Dinuc 2+3</p>
                  </c>
                  <c ca="left">
                     <p>(0.35, 5.8e+02)</p>
                  </c>
                  <c ca="right">
                     <p>(15, 9.4e+16)</p>
                  </c>
                  <c ca="right">
                     <p>(0.0017, 5.2e+141)</p>
                  </c>
                  <c ca="right">
                     <p>(0.0017, inf)</p>
                  </c>
                  <c ca="right">
                     <p>(0.0017, 0.97)</p>
                  </c>
                  <c ca="right">
                     <p>89</p>
                  </c>
                  <c ca="right">
                     <p>140</p>
                  </c>
                  <c ca="right">
                     <p>0</p>
                  </c>
                  <c ca="right">
                     <p>5580</p>
                  </c>
               </r>
               <r>
                  <c ca="right">
                     <p>exp<sub>EIG</sub></p>
                  </c>
                  <c ca="left">
                     <p>Dinuc 1+2</p>
                  </c>
                  <c ca="left">
                     <p>(0.13, 2.6e+02)</p>
                  </c>
                  <c ca="right">
                     <p>(15, inf)</p>
                  </c>
                  <c ca="right">
                     <p>(1.4e-05, 1.5e+70)</p>
                  </c>
                  <c ca="right">
                     <p>(1.4e-05, 0.96)</p>
                  </c>
                  <c ca="right">
                     <p>(1.4e-05, 0.96)</p>
                  </c>
                  <c ca="right">
                     <p>86</p>
                  </c>
                  <c ca="right">
                     <p>137</p>
                  </c>
                  <c ca="right">
                     <p>0</p>
                  </c>
                  <c ca="right">
                     <p>5580</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="left">
                     <p>Dinuc 2+3</p>
                  </c>
                  <c ca="left">
                     <p>(0.36, 5.4e+02)</p>
                  </c>
                  <c ca="right">
                     <p>(17, 2e+17)</p>
                  </c>
                  <c ca="right">
                     <p>(0.0026, 1.6e+133)</p>
                  </c>
                  <c ca="right">
                     <p>(0.0025, 1)</p>
                  </c>
                  <c ca="right">
                     <p>(0.0026, 1)</p>
                  </c>
                  <c ca="right">
                     <p>99</p>
                  </c>
                  <c ca="right">
                     <p>56</p>
                  </c>
                  <c ca="right">
                     <p>0</p>
                  </c>
                  <c ca="right">
                     <p>5580</p>
                  </c>
               </r>
            </tblbdy>
            <tblfn>
               <p>The species were <it>Anabaena variabilis</it>, <it>Anabaena sp</it>. PCC 7120 and <it>Thermosynechococcus elongatus</it>.</p>
               <p><sup>1 </sup>Fit &#8211; the algorithm used for the constrained estimation of <b>Q</b>; <sup>2 </sup>&#8211; median and maximum values; <sup>3 </sup>&#8211; Number of <b>P </b>matrices for the indicated algorithm with an invalid probability; <sup>4 </sup>&#8211; total number of matrices; inf &#8211; an infinite difference, typically arising from an exponentiation error.</p>
            </tblfn>
         </tbl>
         <p>Matrices pathological to an algorithm can also occur during numerical optimisation. What defines the frequency of such matrices is unclear but they do arise during optimisation. For ~1% of the primate intron trinucleotide <b>P </b>matrices, the Taylor series to the second element (which we used as the initial estimate for optimisation) were pathological to exp<sub>EIG</sub>. Whether occurrence of such matrices during an optimisation would affect the resulting solution is unclear.</p>
         <p>Although exp<sub>EIG </sub>lends itself to caching, the utility of a global <b>Q</b>, and thus the importance of caching, diminishes when considering non-reversible models. Non-stationarity is implicitly a part of non-reversible phylogenetic models; this, by definition necessitates non-global <b>Q</b>. As evidenced by the computational speed summaries in Table <tblr tid="T5">5</tblr>, if numerous exponentiations are required then exp<sub>PAD&#201; </sub>has a clear performance advantage in addition to its numerical robustness.</p>
         <tbl id="T5">
            <title>
               <p>Table 5</p>
            </title>
            <caption>
               <p>Exponentiation algorithm compute times.</p>
            </caption>
            <tblbdy cols="3">
               <r>
                  <c ca="right">
                     <p>
                        <b>Alphabet</b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>Algorithm</b>
                     </p>
                  </c>
                  <c ca="right">
                     <p>
                        <b>Time</b>
                     </p>
                  </c>
               </r>
               <r>
                  <c cspan="3">
                     <hr/>
                  </c>
               </r>
               <r>
                  <c ca="right">
                     <p>Nucleotide</p>
                  </c>
                  <c ca="right">
                     <p>exp<sub>EIG</sub></p>
                  </c>
                  <c ca="right">
                     <p>0.2</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="right">
                     <p>exp<sub>TAYL</sub></p>
                  </c>
                  <c ca="right">
                     <p>0.4</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="right">
                     <p>exp<sub>PAD&#201;</sub></p>
                  </c>
                  <c ca="right">
                     <p>0.2</p>
                  </c>
               </r>
               <r>
                  <c ca="right">
                     <p>Dinucleotide</p>
                  </c>
                  <c ca="right">
                     <p>exp<sub>EIG</sub></p>
                  </c>
                  <c ca="right">
                     <p>0.8</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="right">
                     <p>exp<sub>TAYL</sub></p>
                  </c>
                  <c ca="right">
                     <p>0.6</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="right">
                     <p>exp<sub>PAD&#201;</sub></p>
                  </c>
                  <c ca="right">
                     <p>0.4</p>
                  </c>
               </r>
               <r>
                  <c ca="right">
                     <p>Trinucleotide</p>
                  </c>
                  <c ca="right">
                     <p>exp<sub>EIG</sub></p>
                  </c>
                  <c ca="right">
                     <p>11.2</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="right">
                     <p>exp<sub>TAYL</sub></p>
                  </c>
                  <c ca="right">
                     <p>7.6</p>
                  </c>
               </r>
               <r>
                  <c>
                     <p/>
                  </c>
                  <c ca="right">
                     <p>exp<sub>PAD&#201;</sub></p>
                  </c>
                  <c ca="right">
                     <p>3.7</p>
                  </c>
               </r>
            </tblbdy>
            <tblfn>
               <p>Mean compute time (milliseconds) from 100 different matrices.</p>
            </tblfn>
         </tbl>
      </sec>
      <sec>
         <st>
            <p>Conclusion</p>
         </st>
         <p>We have determined that matrices pathological to the most commonly applied matrix exponentiation algorithms exist in nature. The robust behaviour of the Pad&#233; with scaling and squaring algorithm, combined with its performance advantage for larger sequence alphabets, establishes this as the algorithm most suited to non-reversible models.</p>
      </sec>
      <sec>
         <st>
            <p>Methods</p>
         </st>
         <sec>
            <st>
               <p>Sampling Sequences from Microbes</p>
            </st>
            <p>Most methods for inferring rate matrices perform best when the diagonal of the probability matrix is strongly dominant, i.e. when there are relatively few changes. Incorrect choices of the outgroup are also problematic, because such choices reverse the directionality of the evolutionary process. We therefore chose species triples where the sister taxa are substantially more related to one another than they are to the outgroup. Specifically, we required sister taxa to be at least 98% identical in their 16 S rRNA genes, and required the outgroup to be 90&#8211;98% identical, thus ensuring that all but the fastest-evolving proteins would have dominant diagonals in their <b>P </b>matrices and that the outgroup would be more different than the remainder. For each of these species triples, for each protein in one of the two sister taxa, its best BLAST hit in each of the other two taxa was recovered (blastp e-value 10<sup>-10</sup>). The best hits were then aligned using MUSCLE with default parameters and the nucleotide sequences from KEGG threaded back through the protein alignment to generate a nucleotide alignment.</p>
         </sec>
         <sec>
            <st>
               <p>Sampling Sequences from Primates</p>
            </st>
            <p>We sampled primate sequence alignments from the Ensembl release 46 multiple-sequence alignments of <it>Homo sapiens </it>(human), <it>Pan troglodytes </it>(chimpanzee) and <it>Macacca mulatta (</it>macaque) genomes. Genomic coordinates for human protein coding genes were determined and Ensembl's PECAN genomic multiple alignments corresponding to the human coordinates selected for the species-set. Only genes for which sequence alignments were available for all three lineages were retained. Exonic sequence, indels and the simple repeat sequences were masked. Alignments were split into trinucleotide columns and any column containing characters other than ACGT were excluded and of the resulting filtered alignments those &#8805; 50000 base pairs long were kept. This procedure resulted in ~1100 alignments of primate intron sequences.</p>
            <p>Orthologous protein coding sequence (CDS) for the sampled human genes was extracted and aligned using the PyCogent progressive HMM alignment algorithm, with a codon substitution model <abbrgrp><abbr bid="B17">17</abbr></abbrgrp>. All aligned codon columns containing non-nucleotide characters were removed. Due to the computational demands of fitting trinucleotide models, we concatenated 10 aligned genes in an arbitrary order (determined by the sort order of the Ensembl identifier of the human gene) resulting in ~100 alignments of concatenated primate protein coding genes.</p>
            <p>All alignments were in trinucleotide frame, meaning that (starting from the first nucleotide) each triplet of nucleotide columns contained only 'real' trinucleotides. Due to the elimination of masked sequences, spanning between trinucleotides could create sequence elements not present in the original genome sequence. To avoid sampling artificial dinucleotides, alignments were split into trinucleotide columns first and either all first and second, or second and third positions were selected and concatenated to construct dinucleotide alignments. Nucleotide and trinucleotide alignments were derived without any modification.</p>
         </sec>
         <sec>
            <st>
               <p>Estimating Q</p>
            </st>
            <p>For each alignment for a species triad, we used the known outgroup lineage to determine the direction of substitutions between sequence states for each ingroup lineage. Alignments were split into columns of non-overlapping motifs of either nucleotide, dinucleotide or trinucleotides with the trinucleotide based sampling of sequences taken into account for the dinucleotide sampling (see above). Columns in which all three sequences were different were excluded since the ancestral state of the ingroups cannot be determined. If the ingroups were identical to each other, but different from the outgroup, the ancestral state is taken as the ingroup state. If one of the ingroup lineages was identical to the outgroup, their state was taken as the ancestral state. These assignments of ancestral state were used to count the number of times motif <it>i </it>changed to motif <it>j </it>for each ingroup lineage separately. This procedure generated a 'counts' matrix for each lineage, for each alignment which can be converted into a <b>P </b>matrix by dividing the elements of each row by the row sum. The resulting <b>P </b>matrices can be non-reversible.</p>
            <p>Estimation of <b>Q </b>from <b>P </b>matrices was done using a constrained optimisation procedure. All off-diagonal elements of <b>Q </b>(<it>q</it><sub><it>ij</it>, <it>i </it>&#8800; <it>j</it></sub>) are free parameters while the diagonal elements are constrained to be <it>q</it><sub><it>ii </it></sub>= -&#8721;<sub><it>j</it>, <it>j </it>&#8800; <it>i </it></sub><it>q</it><sub><it>ij </it></sub>to ensure the row sums of the instantaneous rate matrix are 0. Constraining the <it>q</it><sub><it>ij</it>, <it>i </it>&#8800; <it>j </it></sub>&#8805; 0, we minimised ||<inline-formula><m:math name="1471-2105-9-550-i3" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>P</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCiuaaLbaKaaaaa@2D12@</m:annotation></m:semantics></m:math></inline-formula> - exp(<b>Q</b>)|| where the matrix exponential was computed by Pad&#233; (unless stated otherwise). This function was minimised using the PyCogent <abbrgrp><abbr bid="B18">18</abbr></abbrgrp> Powell optimiser with tolerance of 10<sup>-6 </sup>and a maximum of 5 restarts. We used the Taylor series to the second element, computed as <b>P </b>minus the identity matrix, as the starting values for the numerical optimisation. The number of free parameters for <b>Q </b>were <it>N </it>&#215; (<it>N </it>- 1) (<it>N </it>is the number of motifs in the alphabet): 12 for nucleotides; 240 for dinucleotides; and 4032 for trinucleotide matrices. Due to the very large number of free parameters in the trinucleotide models, and computational times required to estimate some <b>Q </b>of ~24 hours (for the microbial samples), not all alignments were used. Codon matrices were derived for the protein coding sequences by removing the unobserved states which corresponded to the trinucleotides encoding stop codons.</p>
         </sec>
         <sec>
            <st>
               <p>Measuring matrix exponentiation error</p>
            </st>
            <p>In order to quantify the accuracy of the matrix exponentiation methods a number of measures are introduced. Firstly, there is the concept of a matrix norm. The matrix norm ||<b>Q</b>|| is a generalisation of the vector norm (length of a vector) and yields a measure of the effective size of a matrix <b>Q </b>in terms of the size of its elements <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>. We employed the Frobenius norm (often easier to compute than the induced norms) <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>, which for the matrix <b>Q </b>is</p>
            <p>
               <display-formula id="M1">
                  <m:math name="1471-2105-9-550-i11" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mi>Q</m:mi>
                           </m:mstyle>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                           <m:mo>=</m:mo>
                           <m:msqrt>
                              <m:mrow>
                                 <m:mstyle displaystyle="true">
                                    <m:munderover>
                                       <m:mo>&#8721;</m:mo>
                                       <m:mrow>
                                          <m:mi>i</m:mi>
                                          <m:mo>=</m:mo>
                                          <m:mn>1</m:mn>
                                       </m:mrow>
                                       <m:mi>n</m:mi>
                                    </m:munderover>
                                    <m:mrow>
                                       <m:mstyle displaystyle="true">
                                          <m:munderover>
                                             <m:mo>&#8721;</m:mo>
                                             <m:mrow>
                                                <m:mi>j</m:mi>
                                                <m:mo>=</m:mo>
                                                <m:mn>1</m:mn>
                                             </m:mrow>
                                             <m:mi>n</m:mi>
                                          </m:munderover>
                                          <m:mrow>
                                             <m:mo>|</m:mo>
                                             <m:msubsup>
                                                <m:mi>q</m:mi>
                                                <m:mrow>
                                                   <m:mi>i</m:mi>
                                                   <m:mi>j</m:mi>
                                                </m:mrow>
                                                <m:mn>2</m:mn>
                                             </m:msubsup>
                                             <m:mo>|</m:mo>
                                          </m:mrow>
                                       </m:mstyle>
                                    </m:mrow>
                                 </m:mstyle>
                              </m:mrow>
                           </m:msqrt>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaeiiFaWNaeiiFaWNaeCyuaeLaeiiFaWNaeiiFaWNaeyypa0ZaaOaaaeaadaaeWbqaamaaqahabaGaeiiFaWNaemyCae3aa0baaSqaaiabdMgaPjabdQgaQbqaaiabikdaYaaakiabcYha8bWcbaGaemOAaOMaeyypa0JaeGymaedabaGaemOBa4ganiabggHiLdaaleaacqWGPbqAcqGH9aqpcqaIXaqmaeaacqWGUbGBa0GaeyyeIuoaaSqabaaaaa@4AB1@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>where the <it>q</it><sub><it>ij </it></sub>are the elements of <b>Q</b>. The distance between two matrices can therefore be computed as the norm of the difference between the matrices and equates to the square root of the sum of absolute squared differences. We define relative measures of exponentiation error as</p>
            <p>
               <display-formula id="M2">
                  <m:math name="1471-2105-9-550-i12" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:mtable columnalign="left">
                              <m:mtr columnalign="left">
                                 <m:mtd columnalign="left">
                                    <m:mrow>
                                       <m:msub>
                                          <m:mi>&#1013;</m:mi>
                                          <m:mrow>
                                             <m:mi>T</m:mi>
                                             <m:mi>A</m:mi>
                                             <m:mi>Y</m:mi>
                                             <m:mi>L</m:mi>
                                          </m:mrow>
                                       </m:msub>
                                       <m:mo>=</m:mo>
                                       <m:mo>|</m:mo>
                                       <m:mo>|</m:mo>
                                       <m:mstyle mathvariant="bold" mathsize="normal">
                                          <m:mover accent="true">
                                             <m:mi>P</m:mi>
                                             <m:mo>^</m:mo>
                                          </m:mover>
                                       </m:mstyle>
                                       <m:mo>&#8722;</m:mo>
                                       <m:msub>
                                          <m:mrow>
                                             <m:mi>exp</m:mi>
                                             <m:mo>&#8289;</m:mo>
                                          </m:mrow>
                                          <m:mrow>
                                             <m:mtext>TAYL</m:mtext>
                                          </m:mrow>
                                       </m:msub>
                                       <m:mo stretchy="false">(</m:mo>
                                       <m:mstyle mathvariant="bold" mathsize="normal">
                                          <m:mover accent="true">
                                             <m:mi>Q</m:mi>
                                             <m:mo>^</m:mo>
                                          </m:mover>
                                       </m:mstyle>
                                       <m:mo stretchy="false">)</m:mo>
                                       <m:mo>|</m:mo>
                                       <m:mo>|</m:mo>
                                    </m:mrow>
                                 </m:mtd>
                              </m:mtr>
                           </m:mtable>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaqbaeaabeqaaaqaambvLH1qn1uy0Hws0fgBPngaryWyT1wAXadaiqGacqWF1pGSdaWgaaWcbaGaemivaqLaemyqaeKaemywaKLaemitaWeabeaakiabg2da9iabcYha8jabcYha8jqbhcfaqzaajaGaeyOeI0IagiyzauMaeiiEaGNaeiiCaa3aaSbaaSqaaiabbsfaujabbgeabjabbMfazjabbYeambqabaGccqGGOaakcuWHrbqugaqcaiabcMcaPiabcYha8jabcYha8baaaaa@5005@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>
               <display-formula id="M3">
                  <m:math name="1471-2105-9-550-i13" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mi>&#1013;</m:mi>
                              <m:mrow>
                                 <m:mi>E</m:mi>
                                 <m:mi>I</m:mi>
                                 <m:mi>G</m:mi>
                              </m:mrow>
                           </m:msub>
                           <m:mo>=</m:mo>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mover accent="true">
                                 <m:mi>P</m:mi>
                                 <m:mo>^</m:mo>
                              </m:mover>
                           </m:mstyle>
                           <m:mo>&#8722;</m:mo>
                           <m:msub>
                              <m:mrow>
                                 <m:mi>exp</m:mi>
                                 <m:mo>&#8289;</m:mo>
                              </m:mrow>
                              <m:mrow>
                                 <m:mtext>EIG</m:mtext>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mover accent="true">
                                 <m:mi>Q</m:mi>
                                 <m:mo>^</m:mo>
                              </m:mover>
                           </m:mstyle>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaWeuvgwd1utHrhAjrxySL2yaeHbJ1wBPfdmaGabciab=v=aYoaaBaaaleaacqWGfbqrcqWGjbqscqWGhbWraeqaaOGaeyypa0JaeiiFaWNaeiiFaWNafCiuaaLbaKaacqGHsislcyGGLbqzcqGG4baEcqGGWbaCdaWgaaWcbaGaeeyrauKaeeysaKKaee4raCeabeaakiabcIcaOiqbhgfarzaajaGaeiykaKIaeiiFaWNaeiiFaWhaaa@4D57@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>
               <display-formula id="M4">
                  <m:math name="1471-2105-9-550-i14" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mi>&#1013;</m:mi>
                              <m:mrow>
                                 <m:mi>P</m:mi>
                                 <m:mi>A</m:mi>
                                 <m:mi>D</m:mi>
                                 <m:mi>&#201;</m:mi>
                              </m:mrow>
                           </m:msub>
                           <m:mo>=</m:mo>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mover accent="true">
                                 <m:mi>P</m:mi>
                                 <m:mo>^</m:mo>
                              </m:mover>
                           </m:mstyle>
                           <m:mo>&#8722;</m:mo>
                           <m:msub>
                              <m:mrow>
                                 <m:mi>exp</m:mi>
                                 <m:mo>&#8289;</m:mo>
                              </m:mrow>
                              <m:mrow>
                                 <m:mtext>PAD&#201;</m:mtext>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mover accent="true">
                                 <m:mi>Q</m:mi>
                                 <m:mo>^</m:mo>
                              </m:mover>
                           </m:mstyle>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaWeuvgwd1utHrhAjrxySL2yaeHbJ1wBPfdmaGabciab=v=aYoaaBaaaleaacqWGqbaucqWGbbqqcqWGebarcqWGjdqYaeqaaOGaeyypa0JaeiiFaWNaeiiFaWNafCiuaaLbaKaacqGHsislcyGGLbqzcqGG4baEcqGGWbaCdaWgaaWcbaGaeeiuaaLaeeyqaeKaeeiraqKaeeyYaKmabeaakiabcIcaOiqbhgfarzaajaGaeiykaKIaeiiFaWNaeiiFaWhaaa@518B@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>where <inline-formula><m:math name="1471-2105-9-550-i3" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>P</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCiuaaLbaKaaaaa@2D12@</m:annotation></m:semantics></m:math></inline-formula> is the probability matrix estimated from the counts matrix and <inline-formula><m:math name="1471-2105-9-550-i4" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>Q</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCyuaeLbaKaaaaa@2D14@</m:annotation></m:semantics></m:math></inline-formula> is the instantaneous rate matrix estimated from this <inline-formula><m:math name="1471-2105-9-550-i3" xmlns:m="http://www.w3.org/1998/Math/MathML"><m:semantics><m:mstyle mathvariant="bold" mathsize="normal"><m:mover accent="true"><m:mi>P</m:mi><m:mo>^</m:mo></m:mover></m:mstyle><m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xH8viVGI8Gi=hEeeu0xXdbba9frFj0xb9qqpG0dXdb9aspeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGafCiuaaLbaKaaaaa@2D12@</m:annotation></m:semantics></m:math></inline-formula> as described above.</p>
            <p>In addition to the norm of the rate matrix, the performance of some of the matrix exponentiation methods may depend on the condition number cond<sub>EV</sub>(<b>Q</b>) of the eigenvector matrix of <b>Q </b><abbrgrp><abbr bid="B6">6</abbr><abbr bid="B7">7</abbr></abbrgrp>. The eigenvector matrix condition number cond<sub>EV</sub>(<b>Q</b>) can be defined within the spectral matrix norm (2-norm) <abbrgrp><abbr bid="B19">19</abbr></abbrgrp> as <abbrgrp><abbr bid="B7">7</abbr></abbrgrp></p>
            <p>
               <display-formula id="M5">
                  <m:math name="1471-2105-9-550-i15" xmlns:m="http://www.w3.org/1998/Math/MathML">
                     <m:semantics>
                        <m:mrow>
                           <m:msub>
                              <m:mrow>
                                 <m:mtext>cond</m:mtext>
                              </m:mrow>
                              <m:mrow>
                                 <m:mtext>EV</m:mtext>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mi>Q</m:mi>
                           </m:mstyle>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>=</m:mo>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mi>U</m:mi>
                           </m:mstyle>
                           <m:mo>|</m:mo>
                           <m:msub>
                              <m:mo>|</m:mo>
                              <m:mn>2</m:mn>
                           </m:msub>
                           <m:mo>|</m:mo>
                           <m:mo>|</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mi>U</m:mi>
                           </m:mstyle>
                           <m:mo>|</m:mo>
                           <m:msubsup>
                              <m:mo>|</m:mo>
                              <m:mn>2</m:mn>
                              <m:mrow>
                                 <m:mo>&#8722;</m:mo>
                                 <m:mn>1</m:mn>
                              </m:mrow>
                           </m:msubsup>
                           <m:mo>=</m:mo>
                           <m:msub>
                              <m:mi>&#963;</m:mi>
                              <m:mrow>
                                 <m:mi>max</m:mi>
                                 <m:mo>&#8289;</m:mo>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mi>Q</m:mi>
                           </m:mstyle>
                           <m:mo stretchy="false">)</m:mo>
                           <m:mo>/</m:mo>
                           <m:msub>
                              <m:mi>&#963;</m:mi>
                              <m:mrow>
                                 <m:mi>min</m:mi>
                                 <m:mo>&#8289;</m:mo>
                              </m:mrow>
                           </m:msub>
                           <m:mo stretchy="false">(</m:mo>
                           <m:mstyle mathvariant="bold" mathsize="normal">
                              <m:mi>Q</m:mi>
                           </m:mstyle>
                           <m:mo stretchy="false">)</m:mo>
                        </m:mrow>
                        <m:annotation encoding="MathType-MTEF">
 MathType@MTEF@5@5@+=feaagaart1ev2aaatCvAUfKttLearuWrP9MDH5MBPbIqV92AaeXatLxBI9gBaebbnrfifHhDYfgasaacPC6xNi=xI8qiVKYPFjYdHaVhbbf9v8qqaqFr0xc9vqFj0dXdbba91qpepeI8k8fiI+fsY=rqGqVepae9pg0db9vqaiVgFr0xfr=xfr=xc9adbaqaaeGaciGaaiaabeqaaeqabiWaaaGcbaGaee4yamMaee4Ba8MaeeOBa4Maeeizaq2aaSbaaSqaaiabbweafjabbAfawbqabaGccqGGOaakcqWHrbqucqGGPaqkcqGH9aqpcqGG8baFcqGG8baFcqWHvbqvcqGG8baFcqGG8baFdaWgaaWcbaGaeGOmaidabeaakiabcYha8jabcYha8jabhwfavjabcYha8jabcYha8naaDaaaleaacqaIYaGmaeaacqGHsislcqaIXaqmaaGccqGH9aqpcqaHdpWCdaWgaaWcbaGagiyBa0MaeiyyaeMaeiiEaGhabeaakiabcIcaOiabhgfarjabcMcaPiabc+caViabeo8aZnaaBaaaleaacyGGTbqBcqGGPbqAcqGGUbGBaeqaaOGaeiikaGIaeCyuaeLaeiykaKcaaa@5E6C@</m:annotation>
                     </m:semantics>
                  </m:math>
               </display-formula>
            </p>
            <p>where <b>U </b>is the matrix of eigenvectors and <it>&#963;</it><sub>max</sub>(<b>Q</b>) and <it>&#963;</it><sub>min</sub>(<b>Q</b>) are the maximal and minimal singular values <abbrgrp><abbr bid="B7">7</abbr></abbrgrp> of <b>Q </b>respectively.</p>
         </sec>
         <sec>
            <st>
               <p>Software implementation</p>
            </st>
            <p>The PyCogent <abbrgrp><abbr bid="B18">18</abbr><abbr bid="B20">20</abbr></abbrgrp> built-in routines for determining counts matrices and matrix exponentiation routines were used, while the matrix statistics were computed using the python numerical library, Numpy version 1.0.4 <abbrgrp><abbr bid="B21">21</abbr></abbrgrp>. All scripts used to undertake this study are available on request.</p>
         </sec>
      </sec>
      <sec>
         <st>
            <p>Authors' contributions</p>
         </st>
         <p>HS contributed to implementation of the matrix error measurements and interpretation; VBY contributed to implementation of constrained optimisation method, study design and interpretation; SE contributed to study design; RDK contributed to study design, microbial genome data sampling and interpretation; GAH contributed to study design, implementation of constrained optimisation, data sampling and interpretation.</p>
      </sec>
   </bdy>
   <bm>
      <ack>
         <sec>
            <st>
               <p>Acknowledgements</p>
            </st>
            <p>This study was supported by funding from the ARC and NHMRC awarded to GAH and SE; from NIH (P01DK078669), and a time allocation on the Keck RNA Bioinformatics Facility at UC Boulder, awarded to RK; and, from the Singapore Ministry of Education AcRF R-155-050-054-133/R-155-050-054-101, awarded to VB Yap. We thank Micah Hamady for maintaining mirrors of the genome databases on the Keck RNA Bioinformatics Facility.</p>
         </sec>
      </ack>
      <refgrp>
         <bibl id="B1">
            <title>
               <p>Models of molecular evolution and phylogeny</p>
            </title>
            <aug>
               <au>
                  <snm>Lio</snm>
                  <fnm>P</fnm>
               </au>
               <au>
                  <snm>Goldman</snm>
                  <fnm>N</fnm>
               </au>
            </aug>
            <source>Genome Res</source>
            <pubdate>1998</pubdate>
            <volume>8</volume>
            <issue>12</issue>
            <fpage>1233</fpage>
            <lpage>44</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">9872979</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B2">
            <title>
               <p>The detection of environmental mutagens and potential carcinogens</p>
            </title>
            <aug>
               <au>
                  <snm>Ames</snm>
                  <fnm>B</fnm>
               </au>
            </aug>
            <source>Cancer</source>
            <pubdate>1984</pubdate>
            <volume>53</volume>
            <issue>10</issue>
            <fpage>2034</fpage>
            <lpage>40</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1002/1097-0142(19840515)53:10&lt;2034::AID-CNCR2820531005>3.0.CO;2-S</pubid>
                  <pubid idtype="pmpid">6367933</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B3">
            <title>
               <p>Amelioration of Bacterial Genomes: Rates of Change and Exchange</p>
            </title>
            <aug>
               <au>
                  <snm>Lawrence</snm>
                  <fnm>JG</fnm>
               </au>
               <au>
                  <snm>Ochman</snm>
                  <fnm>H</fnm>
               </au>
            </aug>
            <source>Journal of Molecular Evolution</source>
            <pubdate>1997</pubdate>
            <volume>44</volume>
            <issue>4</issue>
            <fpage>383</fpage>
            <lpage>397</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1007/PL00006158</pubid>
                  <pubid idtype="pmpid" link="fulltext">9089078</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B4">
            <title>
               <p>Modeling compositional heterogeneity</p>
            </title>
            <aug>
               <au>
                  <snm>Foster</snm>
                  <fnm>PG</fnm>
               </au>
            </aug>
            <source>Syst Biol</source>
            <pubdate>2004</pubdate>
            <volume>53</volume>
            <issue>3</issue>
            <fpage>485</fpage>
            <lpage>95</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1080/10635150490445779</pubid>
                  <pubid idtype="pmpid">15503675</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B5">
            <title>
               <p>Codon and rate variation models in molecular phylogeny</p>
            </title>
            <aug>
               <au>
                  <snm>Schadt</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Lange</snm>
                  <fnm>K</fnm>
               </au>
            </aug>
            <source>Mol Biol Evol</source>
            <pubdate>2002</pubdate>
            <volume>19</volume>
            <issue>9</issue>
            <fpage>1534</fpage>
            <lpage>1549</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">12200481</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B6">
            <title>
               <p>Nineteen dubious ways to compute the exponential of a matrix, twenty-five years later</p>
            </title>
            <aug>
               <au>
                  <snm>Moler</snm>
                  <fnm>CB</fnm>
               </au>
               <au>
                  <snm>Van Loan</snm>
                  <fnm>CF</fnm>
               </au>
            </aug>
            <source>SIAM Review</source>
            <pubdate>2003</pubdate>
            <volume>45</volume>
            <fpage>3</fpage>
            <lpage>49</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1137/S00361445024180</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B7">
            <aug>
               <au>
                  <snm>Golub</snm>
                  <fnm>GH</fnm>
               </au>
               <au>
                  <snm>Loan</snm>
                  <fnm>CFV</fnm>
               </au>
            </aug>
            <source>Matrix computations</source>
            <publisher>Baltimore, MD, USA: Johns Hopkins University Press</publisher>
            <edition>3</edition>
            <pubdate>1996</pubdate>
         </bibl>
         <bibl id="B8">
            <title>
               <p>Numerical Computation of the Matrix Exponential with Accuracy Estimate</p>
            </title>
            <aug>
               <au>
                  <snm>Ward</snm>
                  <fnm>RC</fnm>
               </au>
            </aug>
            <source>SIAM Journal on Numerical Analysis</source>
            <pubdate>1977</pubdate>
            <volume>14</volume>
            <issue>4</issue>
            <fpage>600</fpage>
            <lpage>610</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1137/0714039</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B9">
            <title>
               <p>The condition numbers of the matrix eigenvalue problem</p>
            </title>
            <aug>
               <au>
                  <snm>Smith</snm>
                  <fnm>R</fnm>
               </au>
            </aug>
            <source>Numerische Mathematik</source>
            <pubdate>1967</pubdate>
            <volume>10</volume>
            <issue>3</issue>
            <fpage>232</fpage>
            <lpage>240</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1007/BF02162166</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B10">
            <title>
               <p>On condition numbers and the distance to the nearest ill-posed problem</p>
            </title>
            <aug>
               <au>
                  <snm>Demmel</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Numerische Mathematik</source>
            <pubdate>1987</pubdate>
            <volume>51</volume>
            <issue>3</issue>
            <fpage>251</fpage>
            <lpage>289</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1007/BF01400115</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B11">
            <title>
               <p>On computing condition numbers for the nonsymmetric eigenproblem</p>
            </title>
            <aug>
               <au>
                  <snm>Bai</snm>
                  <fnm>Z</fnm>
               </au>
               <au>
                  <snm>Demmel</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>McKenney</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>ACM Trans Math Softw</source>
            <pubdate>1993</pubdate>
            <volume>19</volume>
            <issue>2</issue>
            <fpage>202</fpage>
            <lpage>223</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1145/152613.152617</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B12">
            <title>
               <p>Evolutionary and biomedical insights from the rhesus macaque genome</p>
            </title>
            <aug>
               <au>
                  <snm>Gibbs</snm>
                  <fnm>RA</fnm>
               </au>
               <au>
                  <snm>Rogers</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Katze</snm>
                  <fnm>MG</fnm>
               </au>
               <au>
                  <snm>Bumgarner</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Weinstock</snm>
                  <fnm>GM</fnm>
               </au>
               <au>
                  <snm>Mardis</snm>
                  <fnm>ER</fnm>
               </au>
               <au>
                  <snm>Remington</snm>
                  <fnm>KA</fnm>
               </au>
               <au>
                  <snm>Strausberg</snm>
                  <fnm>RL</fnm>
               </au>
               <au>
                  <snm>Venter</snm>
                  <fnm>JC</fnm>
               </au>
               <au>
                  <snm>Wilson</snm>
                  <fnm>RK</fnm>
               </au>
               <au>
                  <snm>Batzer</snm>
                  <fnm>MA</fnm>
               </au>
               <au>
                  <snm>Bustamante</snm>
                  <fnm>CD</fnm>
               </au>
               <au>
                  <snm>Eichler</snm>
                  <fnm>EE</fnm>
               </au>
               <au>
                  <snm>Hahn</snm>
                  <fnm>MW</fnm>
               </au>
               <au>
                  <snm>Hardison</snm>
                  <fnm>RC</fnm>
               </au>
               <au>
                  <snm>Makova</snm>
                  <fnm>KD</fnm>
               </au>
               <au>
                  <snm>Miller</snm>
                  <fnm>W</fnm>
               </au>
               <au>
                  <snm>Milosavljevic</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Palermo</snm>
                  <fnm>RE</fnm>
               </au>
               <au>
                  <snm>Siepel</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Sikela</snm>
                  <fnm>JM</fnm>
               </au>
               <au>
                  <snm>Attaway</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Bell</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Bernard</snm>
                  <fnm>KE</fnm>
               </au>
               <au>
                  <snm>Buhay</snm>
                  <fnm>CJ</fnm>
               </au>
               <au>
                  <snm>Chandrabose</snm>
                  <fnm>MN</fnm>
               </au>
               <au>
                  <snm>Dao</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Davis</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Delehaunty</snm>
                  <fnm>KD</fnm>
               </au>
               <au>
                  <snm>Ding</snm>
                  <fnm>Y</fnm>
               </au>
               <au>
                  <snm>Dinh</snm>
                  <fnm>HH</fnm>
               </au>
               <au>
                  <snm>Dugan-Rocha</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Fulton</snm>
                  <fnm>LA</fnm>
               </au>
               <au>
                  <snm>Gabisi</snm>
                  <fnm>RA</fnm>
               </au>
               <au>
                  <snm>Garner</snm>
                  <fnm>TT</fnm>
               </au>
               <au>
                  <snm>Godfrey</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Hawes</snm>
                  <fnm>AC</fnm>
               </au>
               <au>
                  <snm>Hernandez</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Hines</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Holder</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Hume</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Jhangiani</snm>
                  <fnm>SN</fnm>
               </au>
               <au>
                  <snm>Joshi</snm>
                  <fnm>V</fnm>
               </au>
               <au>
                  <snm>Khan</snm>
                  <fnm>ZM</fnm>
               </au>
               <au>
                  <snm>Kirkness</snm>
                  <fnm>EF</fnm>
               </au>
               <au>
                  <snm>Cree</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Fowler</snm>
                  <fnm>RG</fnm>
               </au>
               <au>
                  <snm>Lee</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Lewis</snm>
                  <fnm>LR</fnm>
               </au>
               <au>
                  <snm>Li</snm>
                  <fnm>Z</fnm>
               </au>
               <au>
                  <snm>Liu</snm>
                  <fnm>YS</fnm>
               </au>
               <au>
                  <snm>Moore</snm>
                  <fnm>SM</fnm>
               </au>
               <au>
                  <snm>Muzny</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Nazareth</snm>
                  <fnm>LV</fnm>
               </au>
               <au>
                  <snm>Ngo</snm>
                  <fnm>DN</fnm>
               </au>
               <au>
                  <snm>Okwuonu</snm>
                  <fnm>GO</fnm>
               </au>
               <au>
                  <snm>Pai</snm>
                  <fnm>G</fnm>
               </au>
               <au>
                  <snm>Parker</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Paul</snm>
                  <fnm>HA</fnm>
               </au>
               <au>
                  <snm>Pfannkoch</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Pohl</snm>
                  <fnm>CS</fnm>
               </au>
               <au>
                  <snm>Rogers</snm>
                  <fnm>YH</fnm>
               </au>
               <au>
                  <snm>Ruiz</snm>
                  <fnm>SJ</fnm>
               </au>
               <au>
                  <snm>Sabo</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Santibanez</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Schneider</snm>
                  <fnm>BW</fnm>
               </au>
               <au>
                  <snm>Smith</snm>
                  <fnm>SM</fnm>
               </au>
               <au>
                  <snm>Sodergren</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Svatek</snm>
                  <fnm>AF</fnm>
               </au>
               <au>
                  <snm>Utterback</snm>
                  <fnm>TR</fnm>
               </au>
               <au>
                  <snm>Vattathil</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Warren</snm>
                  <fnm>W</fnm>
               </au>
               <au>
                  <snm>White</snm>
                  <fnm>CS</fnm>
               </au>
               <au>
                  <snm>Chinwalla</snm>
                  <fnm>AT</fnm>
               </au>
               <au>
                  <snm>Feng</snm>
                  <fnm>Y</fnm>
               </au>
               <au>
                  <snm>Halpern</snm>
                  <fnm>AL</fnm>
               </au>
               <au>
                  <snm>Hillier</snm>
                  <fnm>LW</fnm>
               </au>
               <au>
                  <snm>Huang</snm>
                  <fnm>X</fnm>
               </au>
               <au>
                  <snm>Minx</snm>
                  <fnm>P</fnm>
               </au>
               <au>
                  <snm>Nelson</snm>
                  <fnm>JO</fnm>
               </au>
               <au>
                  <snm>Pepin</snm>
                  <fnm>KH</fnm>
               </au>
               <au>
                  <snm>Qin</snm>
                  <fnm>X</fnm>
               </au>
               <au>
                  <snm>Sutton</snm>
                  <fnm>GG</fnm>
               </au>
               <au>
                  <snm>Venter</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Walenz</snm>
                  <fnm>BP</fnm>
               </au>
               <au>
                  <snm>Wallis</snm>
                  <fnm>JW</fnm>
               </au>
               <au>
                  <snm>Worley</snm>
                  <fnm>KC</fnm>
               </au>
               <au>
                  <snm>Yang</snm>
                  <fnm>SP</fnm>
               </au>
               <au>
                  <snm>Jones</snm>
                  <fnm>SM</fnm>
               </au>
               <au>
                  <snm>Marra</snm>
                  <fnm>MA</fnm>
               </au>
               <au>
                  <snm>Rocchi</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Schein</snm>
                  <fnm>JE</fnm>
               </au>
               <au>
                  <snm>Baertsch</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Clarke</snm>
                  <fnm>L</fnm>
               </au>
               <au>
                  <snm>Csuros</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Glasscock</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Harris</snm>
                  <fnm>RA</fnm>
               </au>
               <au>
                  <snm>Havlak</snm>
                  <fnm>P</fnm>
               </au>
               <au>
                  <snm>Jackson</snm>
                  <fnm>AR</fnm>
               </au>
               <au>
                  <snm>Jiang</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Liu</snm>
                  <fnm>Y</fnm>
               </au>
               <au>
                  <snm>Messina</snm>
                  <fnm>DN</fnm>
               </au>
               <au>
                  <snm>Shen</snm>
                  <fnm>Y</fnm>
               </au>
               <au>
                  <snm>Song</snm>
                  <fnm>HXZ</fnm>
               </au>
               <au>
                  <snm>Wylie</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Zhang</snm>
                  <fnm>L</fnm>
               </au>
               <au>
                  <snm>Birney</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Han</snm>
                  <fnm>K</fnm>
               </au>
               <au>
                  <snm>Konkel</snm>
                  <fnm>MK</fnm>
               </au>
               <au>
                  <snm>Lee</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Smit</snm>
                  <fnm>AFA</fnm>
               </au>
               <au>
                  <snm>Ullmer</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>Wang</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Xing</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Burhans</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Cheng</snm>
                  <fnm>Z</fnm>
               </au>
               <au>
                  <snm>Karro</snm>
                  <fnm>JE</fnm>
               </au>
               <au>
                  <snm>Ma</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Raney</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>She</snm>
                  <fnm>X</fnm>
               </au>
               <au>
                  <snm>Cox</snm>
                  <fnm>MJ</fnm>
               </au>
               <au>
                  <snm>Demuth</snm>
                  <fnm>JP</fnm>
               </au>
               <au>
                  <snm>Dumas</snm>
                  <fnm>LJ</fnm>
               </au>
               <au>
                  <snm>Han</snm>
                  <fnm>SG</fnm>
               </au>
               <au>
                  <snm>Hopkins</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Karimpour-Fard</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Kim</snm>
                  <fnm>YH</fnm>
               </au>
               <au>
                  <snm>Pollack</snm>
                  <fnm>JR</fnm>
               </au>
               <au>
                  <snm>Vinar</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Addo-Quaye</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Degenhardt</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Denby</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Hubisz</snm>
                  <fnm>MJ</fnm>
               </au>
               <au>
                  <snm>Indap</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Kosiol</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Lahn</snm>
                  <fnm>BT</fnm>
               </au>
               <au>
                  <snm>Lawson</snm>
                  <fnm>HA</fnm>
               </au>
               <au>
                  <snm>Marklein</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Nielsen</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Vallender</snm>
                  <fnm>EJ</fnm>
               </au>
               <au>
                  <snm>Clark</snm>
                  <fnm>AG</fnm>
               </au>
               <au>
                  <snm>Ferguson</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>Hernandez</snm>
                  <fnm>RD</fnm>
               </au>
               <au>
                  <snm>Hirani</snm>
                  <fnm>K</fnm>
               </au>
               <au>
                  <snm>Kehrer-Sawatzki</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Kolb</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Patil</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Pu</snm>
                  <fnm>LL</fnm>
               </au>
               <au>
                  <snm>Ren</snm>
                  <fnm>Y</fnm>
               </au>
               <au>
                  <snm>Smith</snm>
                  <fnm>DG</fnm>
               </au>
               <au>
                  <snm>Wheeler</snm>
                  <fnm>DA</fnm>
               </au>
               <au>
                  <snm>Schenck</snm>
                  <fnm>I</fnm>
               </au>
               <au>
                  <snm>Ball</snm>
                  <fnm>EV</fnm>
               </au>
               <au>
                  <snm>Chen</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Cooper</snm>
                  <fnm>DN</fnm>
               </au>
               <au>
                  <snm>Giardine</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>Hsu</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Kent</snm>
                  <fnm>WJ</fnm>
               </au>
               <au>
                  <snm>Lesk</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Nelson</snm>
                  <fnm>DL</fnm>
               </au>
               <au>
                  <snm>O'brien</snm>
                  <fnm>WE</fnm>
               </au>
               <au>
                  <snm>Prufer</snm>
                  <fnm>K</fnm>
               </au>
               <au>
                  <snm>Stenson</snm>
                  <fnm>PD</fnm>
               </au>
               <au>
                  <snm>Wallace</snm>
                  <fnm>JC</fnm>
               </au>
               <au>
                  <snm>Ke</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Liu</snm>
                  <fnm>XM</fnm>
               </au>
               <au>
                  <snm>Wang</snm>
                  <fnm>P</fnm>
               </au>
               <au>
                  <snm>Xiang</snm>
                  <fnm>AP</fnm>
               </au>
               <au>
                  <snm>Yang</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Barber</snm>
                  <fnm>GP</fnm>
               </au>
               <au>
                  <snm>Haussler</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Karolchik</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Kern</snm>
                  <fnm>AD</fnm>
               </au>
               <au>
                  <snm>Kuhn</snm>
                  <fnm>RM</fnm>
               </au>
               <au>
                  <snm>Smith</snm>
                  <fnm>KE</fnm>
               </au>
               <au>
                  <snm>Zwieg</snm>
                  <fnm>AS</fnm>
               </au>
            </aug>
            <source>Science</source>
            <pubdate>2007</pubdate>
            <volume>316</volume>
            <issue>5822</issue>
            <fpage>222</fpage>
            <lpage>234</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1126/science.1139247</pubid>
                  <pubid idtype="pmpid" link="fulltext">17431167</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B13">
            <title>
               <p>Ill-Conditioned Eigensystems and the Computation of the Jordan Canonical Form</p>
            </title>
            <aug>
               <au>
                  <snm>Golub</snm>
                  <fnm>GH</fnm>
               </au>
               <au>
                  <snm>Wilkinson</snm>
                  <fnm>JH</fnm>
               </au>
            </aug>
            <source>SIAM Review</source>
            <pubdate>1976</pubdate>
            <volume>18</volume>
            <issue>4</issue>
            <fpage>578</fpage>
            <lpage>619</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1137/1018113</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B14">
            <title>
               <p>Properties of a matrix with a very ill-conditioned eigenproblem</p>
            </title>
            <aug>
               <au>
                  <snm>Ruhe</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>Numerische Mathematik</source>
            <pubdate>1970</pubdate>
            <volume>15</volume>
            <fpage>57</fpage>
            <lpage>60</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1007/BF02165660</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B15">
            <title>
               <p>On the construction of nearest defective matrices to a normal matrix</p>
            </title>
            <aug>
               <au>
                  <snm>Alam</snm>
                  <fnm>R</fnm>
               </au>
            </aug>
            <source>Linear Algebra and Its Applications</source>
            <pubdate>2005</pubdate>
            <volume>395</volume>
            <fpage>367</fpage>
            <lpage>370</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1016/j.laa.2004.09.008</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B16">
            <aug>
               <au>
                  <snm>Chaitin-Chatelin</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Frayss&#233;</snm>
                  <fnm>V</fnm>
               </au>
            </aug>
            <source>Lectures on Finite Precision Computations</source>
            <publisher>Philadelphia: SIAM</publisher>
            <pubdate>1996</pubdate>
         </bibl>
         <bibl id="B17">
            <title>
               <p>Likelihood ratio tests for detecting positive selection and application to primate lysozyme evolution</p>
            </title>
            <aug>
               <au>
                  <snm>Yang</snm>
                  <fnm>Z</fnm>
               </au>
            </aug>
            <source>Mol Biol Evol</source>
            <pubdate>1998</pubdate>
            <volume>15</volume>
            <issue>5</issue>
            <fpage>568</fpage>
            <lpage>73</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">9580986</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B18">
            <title>
               <p>PyCogent: a toolkit for making sense from sequence</p>
            </title>
            <aug>
               <au>
                  <snm>Knight</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Maxwell</snm>
                  <fnm>P</fnm>
               </au>
               <au>
                  <snm>Birmingham</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Carnes</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Caporaso</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Easton</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>Eaton</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Hamady</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Lindsay</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Liu</snm>
                  <fnm>Z</fnm>
               </au>
               <au>
                  <snm>Lozupone</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>McDonald</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Robeson</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Sammut</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Smit</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Wakefield</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Widmann</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Wikman</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Wilson</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Ying</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Huttley</snm>
                  <fnm>G</fnm>
               </au>
            </aug>
            <source>Genome Biol</source>
            <pubdate>2007</pubdate>
            <volume>8</volume>
            <issue>8</issue>
            <fpage>R171</fpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="pmcid">2375001</pubid>
                  <pubid idtype="pmpid" link="fulltext">17708774</pubid>
                  <pubid idtype="doi">10.1186/gb-2007-8-8-r171</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B19">
            <aug>
               <au>
                  <snm>Meyer</snm>
                  <fnm>C</fnm>
               </au>
            </aug>
            <source>Matrix Analysis and Applied Linear Algebra</source>
            <publisher>Society for Industrial Mathematics</publisher>
            <pubdate>2000</pubdate>
         </bibl>
         <bibl id="B20">
            <title>
               <p>PyEvolve: a toolkit for statistical modelling of molecular evolution</p>
            </title>
            <aug>
               <au>
                  <snm>Butterfield</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Vedagiri</snm>
                  <fnm>V</fnm>
               </au>
               <au>
                  <snm>Lang</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Lawrence</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Wakefield</snm>
                  <fnm>MJ</fnm>
               </au>
               <au>
                  <snm>Isaev</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Huttley</snm>
                  <fnm>GA</fnm>
               </au>
            </aug>
            <source>BMC Bioinformatics</source>
            <pubdate>2004</pubdate>
            <volume>5</volume>
            <fpage>1</fpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="pmcid">317364</pubid>
                  <pubid idtype="pmpid" link="fulltext">14706121</pubid>
                  <pubid idtype="doi">10.1186/1471-2105-5-1</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B21">
            <title>
               <p>Numeric python</p>
            </title>
            <url>http://numpy.scipy.org</url>
         </bibl>
      </refgrp>
   </bm>
</art>
