<title>Background</title> <p>The bacterium <italic>Staphylococcus aureus </italic>secretes <italic>α</italic>-hemolysin monomers that bind to the outer membrane of susceptible cells. Seven monomers can oligomerize to form a very stable water-filled transmembrane channel [##REF##7809129##1##]. The channel can cause death to the target cell by rapidly discharging vital molecules (such as ATP) and disturbing the membrane potential.</p> <p>Suspended in lipid bilayer, as shown in Figure ##FIG##0##1##, the <italic>α</italic>-hemolysin channel can be used as a sensor (nanopore-detector) when large molecules interact with the channel environment under an applied potential (where the open channel has 120 picoAmperes of ion flow under normal conditions). When a 9 bp DNA hairpin enters the pore, the loop is caught at the vestibule mouth, leaving the stem terminus perched to readily bind to the amino acid residues near the limiting aperture, resulting in a consistent toggle for thousands of milliseconds as shown in Figure ##FIG##1##2##.</p> <p>Many approaches to characterizing of nucleic acid analyte – channel interactions use 2-D scatter plot analysis [##REF##10585944##2##,##REF##17675346##3##]. A recently proposed method of discriminating translocating RNA polynucleotide orientation [##REF##16214857##4##] uses a combination of six sigmoid phenomenological functional forms to approximate possible blockades. A hybrid method of automated analyte classification was used in [##REF##11231558##5##,##REF##12547778##6##] that discriminates among 8GC, 9GC, 9CG, 9TA and 9AT molecules by first obtaining features extracted with Expectation Maximization (EM) learning on a <italic>single </italic>50-state fully connected Hidden Markov Model (HMM). They then construct a feature vector based on the HMM parameters and pass that to a Support Vector Machine (SVM) for classification (with the binary decision tree shown in Figure ##FIG##2##3##). Although the process shown in Fig. ##FIG##2##3## is scalable, and has high classification accuracy, it can also involve high data rejection rates (good for performing solution assays). This motivates effort to have a less scalable, but lower data-rejection rate (such as what is needed during genomic sequencing). Later study of the data examined in [##REF##11231558##5##,##REF##12547778##6##], with PCA reduction on states followed by a simple, uninformed, AdaBoost classification (not SVM, see [##REF##17118136##7##]), led to similar improvement on zero-rejection accuracy, and thus similar improvements (reductions) on the data-rejection needed for high-accuracy classification [##REF##17118136##7##]. That approach, however, didn't begin with the stronger (but non-scalable in class-number) feature extraction method described here. This is the first test of what is expected to be a highly accurate feature extraction method (better than those employed previously), where the critical limitation in general use, however, is in its scalability in number of classes to discriminate.</p> <p>In an interview [In Focus, January 2002], one of the pioneers in the development of nanopore technology, Dr. Mark Akeson, states that getting a machine to learn base pair or nucleotide signatures and report the results automatically will be a key feature of a nanopore sequencing instrument. Here we propose a new method of unsupervised learning of ionic flow blockades with Mixture of Hidden Markov Models (MHMM) profiles that has a number of attractive attributes, at the expense of restricting learning to a smaller state space. For genome sequencing, the problem reduces to identifying the classes {<italic>A</italic>, <italic>C</italic>, <italic>G</italic>, <italic>T</italic>}, i.e., there are only four classes to discriminate. Thus, for some important problems the non-scaling constraint is not an issue and this approach may offer the best performance.</p> <p>The Maximum a Posteriori (MAP) molecular classification with our model opens the possibility for making distributed decisions in real time. The EM algorithms running on our model are computationally expensive procedures, thus, an important method in this work involves computational speed-up efforts via distributed processing implementations.</p>
<title>Methods</title> <p>In our approach we used unsupervised distributed learning of nanopore ionic flow blockade toggles with an MHMM. MHMMs have a long record of successful implementations that started in speech recognition [##UREF##0##8##] and later were used for clustering protein families [##UREF##1##9##], sequences [##UREF##2##10##] and in the search for splicing enhancers [##REF##16584568##11##]. We use the HMM profile shown in Figures ##FIG##1##2## and ##FIG##8##9(a)## to model the channel blockade process using MHMM components as shown in Figure ##FIG##8##9(b)##. Justification for using such profiles is provided in [##REF##18047713##12##], where we have found the duration of ionic flow blockade levels to be distributed with a simple geometric distribution. The noise at a fixed-level blockade level is typically found to be Gaussian, consistent with the overall thermal and shot noise background for the transient-binding fixed-flow-geometry environments formed by channel and blockading elements.</p> <p>The ionic flow blockade records were obtained from the previous studies [##REF##12547778##6##]. Two axon binary files (each containing 500 blockade samples of 300 ms) have been used to learn the probabilistic profiles for each hairpin molecule. The first 100 ms of each channel blockade is the basis of the first test set. Four other axon binary files, with uninterrupted recordings (non-sweep data), for each hairpin molecule and recorded on the same day, are then used for testing. The test set was formed by equiprobable sampling of 500 labeled blockade samples from the pool of test files.</p> <p>Another test set was constructed from the above data files to measure accuracy of consecutive same-analyte toggle sample classification. In this instance we take all the available blockade signal coming from the test files of a certain molecule (not just the first 100 ms) and use multiple sample draws from the same signal blockade (i.e., consecutive 100 ms segments). With the 100 ms signal samples drawn from the same blockade event, we perform MAP scoring followed by majority vote (with random resolution of ties). (Note: the data rejection employed in [##REF##12547778##6##] could be made roughly equivalent to the signal resampling approach described here by simply collecting consecutive 100 ms samples, as done here, and having classification on a given blockade once the signal isn't rejected, the only difference with the classification post-processing being that in this effort majority vote is employed instead.) Accuracy is calculated as the number of correct classifications matching the known molecule type to the total number of classification events. As in [##REF##12547778##6##], the ionic flow in each record has been normalized to the open channel current 120 pA prior to learning and testing.</p> <p>For our distributed MHMM system implementation we have used cluster of five workstations Sun Ultra 40 M2, each equipped with two AMD Dual-Core Opteron processors (2220SE 2.8 GHz), connected through gigabit Ethernet switch.</p> <title>HMM definition and EM learning</title> <p>The following parameters describe the conventional HMM implementation according to [##UREF##3##13##]:</p> <p>• A set of states <italic>S </italic>= {<italic>S</italic><sub>1</sub>,..., <italic>S</italic><sub><italic>N</italic></sub>} with <italic>q</italic><sub><italic>t </italic></sub>being the state visited at time <italic>t</italic>,</p> <p>• A set of PDFs <italic>B </italic>= {<italic>b</italic><sub>1</sub>(<italic>o</italic>),..., <italic>b</italic><sub><italic>N</italic></sub>(<italic>o</italic>)}, describing the emission probabilities <italic>b</italic><sub><italic>j</italic></sub>(<italic>o</italic><sub><italic>t</italic></sub>) = <italic>p</italic>(<italic>o</italic><sub><italic>t</italic></sub>|<italic>q</italic><sub><italic>t </italic></sub>= <italic>S</italic><sub><italic>j</italic></sub>) for 1 ≤ <italic>j </italic>≤ <italic>N</italic>, where <italic>o</italic><sub><italic>t </italic></sub>is the observation at time-point <italic>t </italic>from the sequence of observations <italic>O </italic>= {<italic>o</italic><sub>1</sub>,..., <italic>o</italic><sub><italic>T</italic></sub>},</p> <p>• The state-transition probability matrix A = {<italic>a</italic><sub><italic>i</italic>,<italic>j</italic></sub>} for 1 ≤ <italic>i</italic>, <italic>j </italic>≤ <italic>N</italic>, where <italic>a</italic><sub><italic>i</italic>, <italic>j </italic></sub>= <italic>p</italic>(<italic>q</italic><sub><italic>t</italic>+1 </sub>= <italic>S</italic><sub><italic>j</italic></sub>|<italic>q</italic><sub><italic>t </italic></sub>= <italic>S</italic><sub><italic>i</italic></sub>),</p> <p>• The initial state distribution vector ∏ = {<italic>π</italic><sub>1</sub>,..., <italic>π</italic><sub><italic>N</italic></sub>}.</p> <p>A set of parameters <italic>λ </italic>= (∏, <italic>A</italic>, <italic>B</italic>) completely specifies an HMM. Here we describe the HMM parameter update rules for the EM learning algorithm rigorously derived in [##UREF##4##14##]. When training the HMM using the Baum-Welch algorithm (an Expectation Maximization procedure), first we need to find the expected probabilities of being at a certain state at a certain time-point using the forward-backward procedure as shown in Table ##TAB##0##1##.</p> <p>Let us define <italic>ξ</italic><sub><italic>t</italic></sub>(<italic>i</italic>, <italic>j</italic>) as the probability of being in state <italic>i </italic>at time <italic>t</italic>, and state <italic>j </italic>at time <italic>t </italic>+ 1, given the model and the observation sequence</p> <p></p> <p>and <italic>γ</italic><sub><italic>t</italic></sub>(<italic>i</italic>) as the probability of being in state <italic>i </italic>at time <italic>t</italic>, given the observation sequence and the model</p> <p></p> <p>The HMM maximization step using these probabilities is shown in Table ##TAB##1##2##.</p> <title>EM learning of HMM mixture</title> <p>The objective of mixture learning is to maximize the likelihood function , i.e. we wish to find the locally optimal set of parameters  by using the Expectation Maximization (EM) iterative procedure and the set of data points .</p> <p>The Expectation step in the mixture fitting algorithm is done by computing the responsibility matrix of the components given the data points:</p> <p></p> <p>We use Bayes' rule to find the posterior probability (responsibility) of a mixture component with parameters <italic>λ</italic><sub><italic>m </italic></sub>and emission sequence <italic>O</italic><sub><italic>k</italic></sub>:</p> <p></p> <p>The Expectation step is followed by the maximization step where we re-estimate parameters.</p> <p>• Mixture proportions</p> <p></p> <p>• Initial probabilities</p> <p></p> <p>where  is an estimate of initial probabilities for the component <italic>m </italic>given sequence <italic>O</italic><sub><italic>k</italic></sub>,</p> <p>• Transitions</p> <p></p> <p>where  is an estimate of transition probabilities for the component <italic>m </italic>given sequence <italic>O</italic><sub><italic>k</italic></sub>,</p> <p>• Emissions</p> <p></p> <p>where  is an estimate of emission parameters for the component <italic>m </italic>given sequence <italic>O</italic><sub><italic>k</italic></sub>.</p> <title>Distributed EM implementation</title> <p>As discussed in [##UREF##5##15##], the computational gain of a <italic>parallel </italic>implementation can greatly depend on model topology. In the speech recognition community researchers are able to use a highly parallel HMM architectures for phoneme and dictionary word recognition. Typically, when a large number of Processing Elements (PEs) is used, the utilization of each element drops due to communication overheads. Therefore, the communication overhead in any parallel architecture must be strictly managed, ideally reduced to a constellation of PEs with shared memory [##UREF##5##15##]. In recent work [##REF##18447951##16##] we describe the performance of the following HMM EM algorithms (where we studied the last on the list):</p> <p>• Conventional EM due to Leonard E. Baum and Lloyd R. [##UREF##6##17##] takes <italic>O</italic>(<italic>T N</italic>) memory and <italic>O</italic>(2<italic>T N Q</italic><sub><italic>max </italic></sub>+ <italic>T </italic>(<italic>Q </italic>+ <italic>E</italic>)) time, where <italic>T </italic>is the length of the observed sequence, <italic>N </italic>is the number of HMM states, <italic>Q</italic><sub><italic>max </italic></sub>is the maximum HMM node out-degree, <italic>E </italic>is the number of free emission parameters, <italic>Q </italic>is the number of free transition parameters.</p> <p>• Checkpointing EM [##REF##9088708##18##, ####REF##9682053##19##, ##REF##11159327##20####11159327##20##] takes <italic>O</italic>(<italic>N</italic>) memory and <italic>O</italic>(3<italic>T N Q</italic><sub><italic>max </italic></sub>+ <italic>T </italic>(<italic>Q </italic>+ <italic>E</italic>)) time,</p> <p>• Linear memory EM [##REF##18447951##16##,##REF##16171529##21##] takes only <italic>O</italic>(<italic>N</italic>(<italic>Q </italic>+ <italic>E D</italic>)) memory and <italic>O</italic>(<italic>T NQ</italic><sub><italic>max</italic></sub>(<italic>Q </italic>+ <italic>E D</italic>)) time.</p> <p>Similar improvements are also described for the HMM Viterbi implementation in linear memory [##REF##18447951##16##]. In actual usage with the comparatively small durations generally examined, the checkpointing algorithm was found to be the most memory efficient.</p> <title>Distributed checkpointing algorithm for learning from large data samples</title> <p>The distributed checkpointing EM algorithm is shown in Figure ##FIG##9##10##. Here are the steps in our distributed checkpointing algorithm implementation:</p> <p>1. Client machine splits data sequence <italic>O </italic>into subsequences <italic>O</italic><sub>1</sub>,..., <italic>O</italic><sub><italic>t</italic></sub>,...,  each of size  and distributes them across the servers along with <italic>λ</italic>,</p> <p>2. Find Forward and Backward  checkpoints in sequential manner at the corresponding servers where emission matrices for <italic>O</italic><sub><italic>t </italic></sub>were calculated and stored,</p> <p>3. Reconstruct dynamic programming tables of size <italic>N</italic> at the servers according to locally stored checkpoints to make local parameter estimate ,</p> <p>4. After calculating local parameter estimate, communicate  back to the client machine and calculate ,</p> <p>5. Redistribute newly found  among the server machines for another EM round.</p> <title>Distributed MHMM parameter estimate</title> <p>An MHMM can easily split the responsibilities calculation between several cluster nodes with minimum communication overhead in the following way:</p> <p>1. For each parameter <italic>λ</italic><sub>1</sub>,..., <italic>λ</italic><sub><italic>m</italic></sub>,..., <italic>λ</italic><sub><italic>M </italic></sub>and sequence <italic>O</italic><sub>1</sub>,..., <italic>O</italic><sub><italic>k</italic></sub>,..., <italic>O</italic><sub><italic>K </italic></sub>calculate likelihood <italic>p</italic>(<italic>O</italic><sub><italic>k</italic></sub>| <italic>λ</italic><sub><italic>m</italic></sub>) on the server nodes and communicate them back to the client,</p> <p>2. Client finds responsibilities for each mixture component and a sequence according to formula (4),</p> <p>3. Estimated mixture proportions  are found on a client node according to (5),</p> <p>4. The server nodes find  estimates for parameter <italic>λ</italic><sub><italic>m </italic></sub>and sequence <italic>O</italic><sub><italic>k </italic></sub>and send them back to the client,</p> <p>5. On the client node these newly computed parameters are weighted according to responsibilities (6), (7), (8),</p> <p>6. Newly found HMM parameters  are disbursed back to the server nodes for the next round of EM training.</p>
<title>Results</title> <p>We have learned blockade signal clusters for five different types of molecules: two such profile mixtures, learned in 50 iterations, are shown in Figure ##FIG##3##4##. The classification accuracy is shown in Figure ##FIG##4##5##, where we used 10-fold resampling of 500 labeled toggle sample subsets from our test set [see Section <italic>Methods</italic>] (the 10-fold resampling is needed to perform majority-vote classification stabilization). The resampling offers a similar stabilization on classifications, and at similar computational expense, to what is done via data-rejection in [##REF##11231558##5##,##REF##12547778##6##]. Accuracy here is defined as</p> <p></p> <p>where True Positives (TP), True Negatives (TN), False Positives (FP) and False Negatives (FN) are among the classified data samples. We have systematically investigated how the model complexity affects accuracy as shown in Figure ##FIG##5##6##, where average accuracy does not improve for the model of more than 12 components and more than 4 blockade levels, although some individual molecules take advantage of increased model complexity as their classification becomes more accurate. We have also investigated the blockade signal duration needed for proper classification, as shown in Figure ##FIG##6##7##, and for the data-sets examined found that samples with more that 100 ms duration yield little in either average classification accuracy or classification time. We tried using ionic flow blockade samples of 200 ms in the MHMM training, for example, with no apparent improvement to classification accuracy over the 100 ms duration samples. This behavior was not observed with the non-MAP, large-state (but scalable), approach used in [##REF##11231558##5##,##REF##12547778##6##], where greater observation times led to improved classification (although there is agreement that there was diminishing returns on learning sets for signal durations greater then 100 ms, and, especially, if greater than 500 ms).</p> <p>The accuracy of consecutive same-analyte toggle samples classification is shown in Figure ##FIG##7##8(b)##, where we reach 100% performance within 14 classifications, except for the 9GC molecule, which underperformed when compared with [##REF##11231558##5##,##REF##12547778##6##]. The difficulty with 9GC classification accuracy convergence could be explained by substantial confusion with 9AT toggles, which reaches ~17% at first classification round and reluctantly reduces to ~3% after 21 classification rounds.</p> <p>The accuracy improvement is consistent with the accuracy of the previously reported classification process [##REF##12547778##6##] as shown in Figure ##FIG##7##8(a)## (except for the 9GC molecule). The failure to discern 9GC from 9AT in the approach described here, and not in prior efforts [##REF##11231558##5##,##REF##12547778##6##], may simply be the result of better blockade-level resolution 'fine-structure' with the prior model.</p> <p>The better resolution between 9GC and 9AT channel blockades obtained with the 50-state <italic>single </italic>HMM (used in [##REF##11231558##5##,##REF##12547778##6##]) may simply be due to the fixed 1pA resolution (the state quantization bin-size) providing a critical resolving capability between very similar blockade signals. If true, a hybrid solution may be to directly incorporate fine-structure into the 4-state <italic>multiple </italic>HMM processing model that is used here, by adding <italic>fine-structure </italic>states at 1pA distances on either side of the 4 states identified by EM. Efforts along these lines are ongoing (see <italic>Discussion</italic>).</p> <p>The MHMM analysis framework first has been implemented in a concurrent fashion on a quad-core Sun Ultra 40 M2 machine with speedup factor 3.66 as compared to a conventional implementation, and then distributed to the five machines of the same type with Java RMI with additional speedup of 4.02, which translates to the total speedup of 3.66 × 4.02 = 14.71.</p>
<title>Discussion and conclusion</title> <p>There are several advantages in our approach:</p> <p>• Classification is highly accurate with no data dropped from consideration,</p> <p>• Model parameters may have intuitive physical interpretation (but not in this study),</p> <p>• The MHMM implementation is distributed, such that:</p> <p>- Learning can take a larger number of samples (for improved accuracy),</p> <p>- Enables real-time analyte classification, currently takes only 0.411 sec to classify 100 ms sample,</p> <p>- Checkpointing algorithm keeps the memory profile low both on server and client sides without compromising the running time [##REF##18447951##16##].</p> <p>The need for using a mixture model beyond a simple HMM comes from the observation that generally no more than half of hairpin blockades come from the same mode of hairpin molecule interacting with nanopore (the modes correspond to principal components in the channel blockade stationary statistics profile). Other mode contributions require different probabilistic profiles for classification which naturally leads to a mixture analysis problem. The method shown in Figure ##FIG##2##3## doesn't introduce such modes at the HMM-processing stage, relying instead on the strengths of the SVM classifier directly.</p> <p>Increasing EM-learning model complexity beyond 4 levels and 12 mixture components increases the log-likelihood of fully trained model, but does not lead to better prediction accuracy as shown in Figure ##FIG##5##6##. The likelihood increase is caused by the model overfitting the data. Overfitting with HMM-profile models, however, isn't found to be as detrimental to the generalization performance as with other learning methods – the main penalty is that the learning and classification times increase dramatically, as we need to estimate progressively increasing number of parameters.</p> <p>Since we did not computationally exhaust all the possible parameter settings (number of components, number of levels and sample duration), we provide a rationale for the parameter choice we believe is optimal. With preliminary experiments learning on 9CG toggle samples with MHMM of 15 toggle clusters we have consistently exhausted the number of components, many of them converging to the same simple blockade as shown in figure ##FIG##3##4(a)## at the top right. This observation prompted us to use no more than 12 components in the channel blockade signal-mode mixture model.</p> <p>The number of four blockade levels corresponds to the physical model of DNA hairpin interacting with nanopore [##REF##11231558##5##]. From the physical perspective the hairpin molecule can undergo different modes of capture blockade, such as Intermediate Level (IL), Upper Level (UL), Lover Level (LL) conductance states and spikes (S) [##REF##12547778##6##]. When a 9 bp DNA hairpin initially enters the pore, the loop is perched in the vestibule mouth and the stem terminus binds to amino acid residues near the limiting aperture. This results in the IL conductance level. When the terminal basepair desorbs from the pore wall, the stem and loop may realign, resulting in a substantial current increase to UL. Interconversion between the IL and UL states may occur numerous times with UL possibly switching to the LL state. This LL state corresponds to binding of the stem terminus to amino acids near the limiting aperture but in a different manner from IL. From the LL bound state, the duplex terminus may fray, resulting in extension and capture of one strand in the pore constriction resulting into short term S state. The allowed transition events between the levels <italic>IL </italic>⇔ <italic>UL </italic>⇔ <italic>LL </italic>⇔ <italic>S </italic>to happen at any time during the analysis procedure. The spikes model, as described in [##REF##18447951##16##], could possibly be used to increase prediction accuracy. However, with the scenario discussed in this manuscript use of such additions did not lead to higher performance since the primary blockade modes shown in Figures ##FIG##3##4(a)## and ##FIG##3##4(b)## are void of spikes.</p> <p>A demo program implementing distributed MHMM analysis framework is available free of charge on our web site <ext-link ext-link-type="uri" xlink:href="http://logos.cs.uno.edu/~achurban"/>.</p>
<title>Discussion and conclusion</title> <p>There are several advantages in our approach:</p> <p>• Classification is highly accurate with no data dropped from consideration,</p> <p>• Model parameters may have intuitive physical interpretation (but not in this study),</p> <p>• The MHMM implementation is distributed, such that:</p> <p>- Learning can take a larger number of samples (for improved accuracy),</p> <p>- Enables real-time analyte classification, currently takes only 0.411 sec to classify 100 ms sample,</p> <p>- Checkpointing algorithm keeps the memory profile low both on server and client sides without compromising the running time [##REF##18447951##16##].</p> <p>The need for using a mixture model beyond a simple HMM comes from the observation that generally no more than half of hairpin blockades come from the same mode of hairpin molecule interacting with nanopore (the modes correspond to principal components in the channel blockade stationary statistics profile). Other mode contributions require different probabilistic profiles for classification which naturally leads to a mixture analysis problem. The method shown in Figure ##FIG##2##3## doesn't introduce such modes at the HMM-processing stage, relying instead on the strengths of the SVM classifier directly.</p> <p>Increasing EM-learning model complexity beyond 4 levels and 12 mixture components increases the log-likelihood of fully trained model, but does not lead to better prediction accuracy as shown in Figure ##FIG##5##6##. The likelihood increase is caused by the model overfitting the data. Overfitting with HMM-profile models, however, isn't found to be as detrimental to the generalization performance as with other learning methods – the main penalty is that the learning and classification times increase dramatically, as we need to estimate progressively increasing number of parameters.</p> <p>Since we did not computationally exhaust all the possible parameter settings (number of components, number of levels and sample duration), we provide a rationale for the parameter choice we believe is optimal. With preliminary experiments learning on 9CG toggle samples with MHMM of 15 toggle clusters we have consistently exhausted the number of components, many of them converging to the same simple blockade as shown in figure ##FIG##3##4(a)## at the top right. This observation prompted us to use no more than 12 components in the channel blockade signal-mode mixture model.</p> <p>The number of four blockade levels corresponds to the physical model of DNA hairpin interacting with nanopore [##REF##11231558##5##]. From the physical perspective the hairpin molecule can undergo different modes of capture blockade, such as Intermediate Level (IL), Upper Level (UL), Lover Level (LL) conductance states and spikes (S) [##REF##12547778##6##]. When a 9 bp DNA hairpin initially enters the pore, the loop is perched in the vestibule mouth and the stem terminus binds to amino acid residues near the limiting aperture. This results in the IL conductance level. When the terminal basepair desorbs from the pore wall, the stem and loop may realign, resulting in a substantial current increase to UL. Interconversion between the IL and UL states may occur numerous times with UL possibly switching to the LL state. This LL state corresponds to binding of the stem terminus to amino acids near the limiting aperture but in a different manner from IL. From the LL bound state, the duplex terminus may fray, resulting in extension and capture of one strand in the pore constriction resulting into short term S state. The allowed transition events between the levels <italic>IL </italic>⇔ <italic>UL </italic>⇔ <italic>LL </italic>⇔ <italic>S </italic>to happen at any time during the analysis procedure. The spikes model, as described in [##REF##18447951##16##], could possibly be used to increase prediction accuracy. However, with the scenario discussed in this manuscript use of such additions did not lead to higher performance since the primary blockade modes shown in Figures ##FIG##3##4(a)## and ##FIG##3##4(b)## are void of spikes.</p> <p>A demo program implementing distributed MHMM analysis framework is available free of charge on our web site <ext-link ext-link-type="uri" xlink:href="http://logos.cs.uno.edu/~achurban"/>.</p>
<p>This is an open access article distributed under the terms of the Creative Commons Attribution License (<ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/2.0"/>), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</p> <title>Background</title> <p>Ionic current blockade signal processing, for use in nanopore detection, offers a promising new way to analyze single molecule properties with potential implications for DNA sequencing. The <italic>α</italic>-Hemolysin transmembrane channel interacts with a translocating molecule in a nontrivial way, frequently evidenced by a complex ionic flow blockade pattern with readily distinguishable modes of toggling. Effective processing of such signals requires developing machine learning methods capable of learning the various blockade modes for classification and knowledge discovery purposes. Here we propose a method aimed to improve our stochastic analysis capabilities to better understand the discriminatory capabilities of the observed the nanopore channel interactions with analyte.</p> <title>Results</title> <p>We tailored our memory-sparse distributed implementation of a Mixture of Hidden Markov Models (MHMMs) to the problem of channel current blockade clustering and associated analyte classification. By using probabilistic fully connected HMM profiles as mixture components we were able to cluster the various 9 base-pair hairpin channel blockades. We obtained very high Maximum a Posteriori (MAP) classification with a mixture of 12 different channel blockade profiles, each with 4 levels, a configuration that can be computed with sufficient speed for real-time experimental feedback. MAP classification performance depends on several factors such as the number of mixture components, the number of levels in each profile, and the duration of a channel blockade event. We distribute Baum-Welch Expectation Maximization (EM) algorithms running on our model in two ways. A distributed implementation of the MHMM data processing accelerates data clustering efforts. The second, simultanteous, strategy uses an EM checkpointing algorithm to lower the memory use and efficiently distribute the bulk of EM processing in processing large data sequences (such as for the progressive sums used in the HMM parameter estimates).</p> <title>Conclusion</title> <p>The proposed distributed MHMM method has many appealing properties, such as precise classification of analyte in real-time scenarios, and the ability to incorporate new domain knowledge into a flexible, easily distributable, architecture. The distributed HMM provides a feature extraction that is equivalent to that of the sequential HMM with a speedup factor approximately equal to the number of independent CPUs operating on the data. The MHMM topology learns clusters existing within data samples via distributed HMM EM learning. A Java implementation of the MHMM algorithm is available at <ext-link ext-link-type="uri" xlink:href="http://logos.cs.uno.edu/~achurban"/>.</p>
<title>Competing interests</title> <p>The authors declare that they have no competing interests.</p> <title>Authors' contributions</title> <p>AC conceptualized the project, implemented and tested the MHMM EM algorithm for nanopore ionic flow analysis. SWH helped with writing the manuscript and provided many valuable suggestions directing the study. All authors read and approved the final manuscript.</p>
<title>Acknowledgements</title> <p>This research was partly funded from an NIH K-22 award (K22LM008794), an NIH R-21 award (R21GM073617), and an NIH program grant sub-contract (R01HG003703).</p> <p>This article has been published as part of <italic>BMC Bioinformatics </italic>Volume 9 Supplement 9, 2008: Proceedings of the Fifth Annual MCBIOS Conference. Systems Biology: Bridging the Omics. The full contents of the supplement are available online at <ext-link ext-link-type="uri" xlink:href="http://www.biomedcentral.com/1471-2105/9?issue=S9"/></p>
<fig position="float" id="F1"><label>Figure 1</label><caption><p><italic>α</italic>-hemolysin nanopore with captured hairpin.</p></caption></fig> <fig position="float" id="F2"><label>Figure 2</label><caption><p>Upper Level Toggler (ULT) with profile example.</p></caption></fig> <fig position="float" id="F3"><label>Figure 3</label><caption><p>Existing classification process with HMM feature extraction followed by SVM binary tree decision.</p></caption></fig> <fig position="float" id="F4"><label>Figure 4</label><caption><p>Toggle clusters for 9GC and 9CG molecules. The mixture proportions correspond to the frequency of a certain toggle mode. Sixteen possible transitions corresponding to profile shown in Figure 7 (a) are shown as chessboard, the darker the area of a cell the more probable a transition. Emissions corresponding to each of the four hidden HMM states are shown below the transitions matrix. MAP classified 100 ms toggle sample from the learning set corresponding to a certain profile is also shown.</p></caption></fig> <fig position="float" id="F5"><label>Figure 5</label><caption><p>MAP classification accuracy with 10-fold resampling on a split-sample data (with 4 levels and 15 components).</p></caption></fig> <fig position="float" id="F6"><label>Figure 6</label><caption><p>Increasing model complexity affects accuracy.</p></caption></fig> <fig position="float" id="F7"><label>Figure 7</label><caption><p>Accuracy of molecular classification depends on sample duration.</p></caption></fig> <fig position="float" id="F8"><label>Figure 8</label><caption><p>Proposed and existing process classification accuracy.</p></caption></fig> <fig position="float" id="F9"><label>Figure 9</label><caption><p>HMM profile and mixture of profiles.</p></caption></fig> <fig position="float" id="F10"><label>Figure 10</label><caption><p>Distributed Checkpointing algorithm.</p></caption></fig>
<table-wrap position="float" id="T1"><label>Table 1</label><caption><p>Forward and backward procedures.</p></caption><table frame="hsides" rules="groups"><thead><tr><td align="center">Forward procedure</td><td align="center">Backward procedure</td></tr></thead><tbody><tr><td align="left"><italic>α</italic><sub><italic>t</italic></sub>(<italic>i</italic>) ≡ <italic>p</italic>(<italic>o</italic><sub>1</sub>,..., <italic>o</italic><sub><italic>t</italic></sub>|<italic>q</italic><sub><italic>t </italic></sub>= <italic>S</italic><sub><italic>i</italic></sub>, <italic>λ</italic>)</td><td align="left"><italic>β</italic><sub><italic>t</italic></sub>(<italic>i</italic>) ≡ <italic>p</italic>(<italic>o</italic><sub><italic>t</italic>+1</sub>,..., <italic>o</italic><sub><italic>T</italic></sub>|<italic>q</italic><sub><italic>t </italic></sub>= <italic>S</italic><sub><italic>i</italic></sub>, <italic>λ</italic>)</td></tr><tr><td align="left">• Initially <italic>α</italic><sub>1</sub>(<italic>i</italic>) = <italic>π</italic><sub><italic>i</italic></sub><italic>b</italic><sub><italic>i</italic></sub>(<italic>o</italic><sub>1</sub>) for 1 ≤ <italic>i </italic>≤ <italic>N</italic>,</td><td align="left">• Initially <italic>β</italic><sub>T</sub>(<italic>i</italic>) = 1 for 1 ≤ <italic>i </italic>≤ <italic>N</italic>,</td></tr><tr><td align="left">•  for t = 2, 3,..., T and 1 ≤ <italic>j </italic>≤ <italic>N</italic>,</td><td align="left">•  for <italic>t </italic>= <italic>T </italic>- 1,...,1 and 1 ≤ <italic>i </italic>≤ <italic>N</italic>,</td></tr><tr><td align="left">• Finally  is the sequence <italic>likehood</italic>.</td><td align="left">• Finally .</td></tr></tbody></table></table-wrap> <table-wrap position="float" id="T2"><label>Table 2</label><caption><p>Maximization step in HMM learning.</p></caption><table frame="hsides" rules="groups"><thead><tr><td align="left">Initial probability estimate</td><td align="left">Transition probability estimate</td><td align="left">Emission parameters estimate</td></tr></thead><tbody><tr><td align="left"> = <italic>γ</italic><sub>1</sub>(<italic>i</italic>), for 1 ≤ <italic>i </italic>≤ <italic>N</italic>.</td><td align="left">, for 1 ≤ <italic>i</italic>, <italic>j </italic>≤ <italic>N</italic>.</td><td align="left">Gaussian emission , , for 1 ≤ <italic>j </italic>≤ <italic>N</italic>.</td></tr></tbody></table></table-wrap>
<disp-formula id="bmcM1"><label>(1)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M1" name="1471-2105-9-S9-S13-i1" overflow="scroll">
                  <mml:semantics>
                     <mml:mrow>
                        <mml:mi>A</mml:mi>
                        <mml:mi>c</mml:mi>
                        <mml:mi>c</mml:mi>
                        <mml:mi>u</mml:mi>
                        <mml:mi>r</mml:mi>
                        <mml:mi>a</mml:mi>
                        <mml:mi>c</mml:mi>
                        <mml:mi>y</mml:mi>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                           <mml:mrow>
                              <mml:mi>T</mml:mi>
                              <mml:mi>P</mml:mi>
                              <mml:mo>+</mml:mo>
                              <mml:mi>T</mml:mi>
                              <mml:mi>N</mml:mi>
                           </mml:mrow>
                           <mml:mrow>
                              <mml:mi>T</mml:mi>
                              <mml:mi>P</mml:mi>
                              <mml:mo>+</mml:mo>
                              <mml:mi>F</mml:mi>
                              <mml:mi>P</mml:mi>
                              <mml:mo>+</mml:mo>
                              <mml:mi>T</mml:mi>
                              <mml:mi>N</mml:mi>
                              <mml:mo>+</mml:mo>
                              <mml:mi>F</mml:mi>
                              <mml:mi>N</mml:mi>
                           </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>,</mml:mo>
                     </mml:mrow>
                     
                  </mml:semantics>
               </mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M2" name="1471-2105-9-S9-S13-i2" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>α</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>α</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mstyle></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>o</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M3" name="1471-2105-9-S9-S13-i3" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>β</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>α</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>b</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>o</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi>β</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M4" name="1471-2105-9-S9-S13-i4" overflow="scroll"><mml:semantics><mml:mrow><mml:mi>p</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>O</mml:mi><mml:mo>|</mml:mo><mml:mi>λ</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>α</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M5" name="1471-2105-9-S9-S13-i5" overflow="scroll"><mml:semantics><mml:mrow><mml:mi>p</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>O</mml:mi><mml:mo>|</mml:mo><mml:mi>λ</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>π</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>b</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>o</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi>β</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM2"><label>(2)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M6" name="1471-2105-9-S9-S13-i6" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msub>
                              <mml:mi>ξ</mml:mi>
                              <mml:mi>t</mml:mi>
                           </mml:msub>
                           <mml:mo stretchy="false">(</mml:mo>
                           <mml:mi>i</mml:mi>
                           <mml:mo>,</mml:mo>
                           <mml:mi>j</mml:mi>
                           <mml:mo stretchy="false">)</mml:mo>
                           <mml:mo>=</mml:mo>
                           <mml:mi>p</mml:mi>
                           <mml:mo stretchy="false">(</mml:mo>
                           <mml:msub>
                              <mml:mi>q</mml:mi>
                              <mml:mi>t</mml:mi>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:msub>
                              <mml:mi>S</mml:mi>
                              <mml:mi>i</mml:mi>
                           </mml:msub>
                           <mml:mo>,</mml:mo>
                           <mml:msub>
                              <mml:mi>q</mml:mi>
                              <mml:mrow>
                                 <mml:mi>t</mml:mi>
                                 <mml:mo>+</mml:mo>
                                 <mml:mn>1</mml:mn>
                              </mml:mrow>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:msub>
                              <mml:mi>S</mml:mi>
                              <mml:mi>j</mml:mi>
                           </mml:msub>
                           <mml:mo>|</mml:mo>
                           <mml:mi>O</mml:mi>
                           <mml:mo>,</mml:mo>
                           <mml:mi>λ</mml:mi>
                           <mml:mo stretchy="false">)</mml:mo>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:msub>
                                    <mml:mi>α</mml:mi>
                                    <mml:mi>t</mml:mi>
                                 </mml:msub>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:mi>i</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                                 <mml:msub>
                                    <mml:mi>a</mml:mi>
                                    <mml:mrow>
                                       <mml:mi>i</mml:mi>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>j</mml:mi>
                                    </mml:mrow>
                                 </mml:msub>
                                 <mml:msub>
                                    <mml:mi>b</mml:mi>
                                    <mml:mi>j</mml:mi>
                                 </mml:msub>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:msub>
                                    <mml:mi>o</mml:mi>
                                    <mml:mrow>
                                       <mml:mi>t</mml:mi>
                                       <mml:mo>+</mml:mo>
                                       <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                 </mml:msub>
                                 <mml:mo stretchy="false">)</mml:mo>
                                 <mml:msub>
                                    <mml:mi>β</mml:mi>
                                    <mml:mrow>
                                       <mml:mi>t</mml:mi>
                                       <mml:mo>+</mml:mo>
                                       <mml:mn>1</mml:mn>
                                    </mml:mrow>
                                 </mml:msub>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:mi>j</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                              <mml:mrow>
                                 <mml:mi>p</mml:mi>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:mi>O</mml:mi>
                                 <mml:mo>|</mml:mo>
                                 <mml:mi>λ</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                           </mml:mfrac>
                           <mml:mo>,</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula id="bmcM3"><label>(3)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M7" name="1471-2105-9-S9-S13-i7" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msub>
                              <mml:mi>γ</mml:mi>
                              <mml:mi>t</mml:mi>
                           </mml:msub>
                           <mml:mo stretchy="false">(</mml:mo>
                           <mml:mi>i</mml:mi>
                           <mml:mo stretchy="false">)</mml:mo>
                           <mml:mo>=</mml:mo>
                           <mml:mi>p</mml:mi>
                           <mml:mo stretchy="false">(</mml:mo>
                           <mml:msub>
                              <mml:mi>q</mml:mi>
                              <mml:mi>t</mml:mi>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:msub>
                              <mml:mi>S</mml:mi>
                              <mml:mi>i</mml:mi>
                           </mml:msub>
                           <mml:mo>|</mml:mo>
                           <mml:mi>O</mml:mi>
                           <mml:mo>,</mml:mo>
                           <mml:mi>λ</mml:mi>
                           <mml:mo stretchy="false">)</mml:mo>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:msub>
                                    <mml:mi>α</mml:mi>
                                    <mml:mi>t</mml:mi>
                                 </mml:msub>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:mi>i</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                                 <mml:msub>
                                    <mml:mi>β</mml:mi>
                                    <mml:mi>t</mml:mi>
                                 </mml:msub>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:mi>i</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>i</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>N</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:msub>
                                          <mml:mi>α</mml:mi>
                                          <mml:mi>t</mml:mi>
                                       </mml:msub>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:mi>i</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                       <mml:msub>
                                          <mml:mi>β</mml:mi>
                                          <mml:mi>t</mml:mi>
                                       </mml:msub>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:mi>i</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                           </mml:mfrac>
                           <mml:mo>=</mml:mo>
                           <mml:mstyle displaystyle="true">
                              <mml:munderover>
                                 <mml:mo>∑</mml:mo>
                                 <mml:mrow>
                                    <mml:mi>j</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                 </mml:mrow>
                                 <mml:mi>N</mml:mi>
                              </mml:munderover>
                              <mml:mrow>
                                 <mml:msub>
                                    <mml:mi>ξ</mml:mi>
                                    <mml:mi>t</mml:mi>
                                 </mml:msub>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:mi>i</mml:mi>
                                 <mml:mo>,</mml:mo>
                                 <mml:mi>j</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                           </mml:mstyle>
                           <mml:mo>.</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M8" name="1471-2105-9-S9-S13-i8" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>π</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M9" name="1471-2105-9-S9-S13-i9" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>a</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mrow><mml:msub><mml:mi>ξ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mrow><mml:msub><mml:mi>γ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>i</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M10" name="1471-2105-9-S9-S13-i10" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>b</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>o</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>→</mml:mo><mml:mi>μ</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>o</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:msub><mml:mi>γ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>γ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M11" name="1471-2105-9-S9-S13-i11" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>b</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>o</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>→</mml:mo><mml:msup><mml:mi>σ</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>o</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo>−</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>μ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:msub><mml:mi>γ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>γ</mml:mi><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>j</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M12" name="1471-2105-9-S9-S13-i12" overflow="scroll"><mml:semantics><mml:mrow><mml:mi>p</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="script">O</mml:mi><mml:mo>|</mml:mo><mml:mi>Θ</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>Π</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:mi>p</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>o</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:mi>Θ</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>ℒ</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>Θ</mml:mi><mml:mo>|</mml:mo><mml:mi mathvariant="script">O</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M13" name="1471-2105-9-S9-S13-i13" overflow="scroll"><mml:semantics><mml:mrow><mml:msup><mml:mi>Θ</mml:mi><mml:mo>∗</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi>a</mml:mi><mml:mi>r</mml:mi><mml:mi>g</mml:mi><mml:mi>m</mml:mi><mml:mi>a</mml:mi><mml:mi>x</mml:mi><mml:mi>ℒ</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>Θ</mml:mi><mml:mo>|</mml:mo><mml:mi mathvariant="script">O</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M14" name="1471-2105-9-S9-S13-i14" overflow="scroll"><mml:semantics><mml:mi mathvariant="script">O</mml:mi></mml:semantics></mml:math></inline-formula> <disp-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M15" name="1471-2105-9-S9-S13-i15" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:mrow>
                              <mml:mrow>
                                 <mml:munder>
                                    <mml:munder>
                                       <mml:mrow>
                                          <mml:mtable>
                                             <mml:mtr>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mn>1</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mn>1</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mi>M</mml:mi>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mn>1</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                             </mml:mtr>
                                             <mml:mtr>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mn>1</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mn>2</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mi>M</mml:mi>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mn>2</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                             </mml:mtr>
                                             <mml:mtr>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mn>1</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mn>3</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mi>M</mml:mi>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mn>3</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                             </mml:mtr>
                                             <mml:mtr>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                             </mml:mtr>
                                             <mml:mtr>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mn>1</mml:mn>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mi>K</mml:mi>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mo>⋯</mml:mo>
                                                </mml:mtd>
                                                <mml:mtd>
                                                   <mml:mrow>
                                                      <mml:mi>p</mml:mi>
                                                      <mml:mo stretchy="false">(</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>λ</mml:mi>
                                                         <mml:mi>M</mml:mi>
                                                      </mml:msub>
                                                      <mml:mo>|</mml:mo>
                                                      <mml:msub>
                                                         <mml:mi>O</mml:mi>
                                                         <mml:mi>K</mml:mi>
                                                      </mml:msub>
                                                      <mml:mo>,</mml:mo>
                                                      <mml:mi>Θ</mml:mi>
                                                      <mml:mo stretchy="false">)</mml:mo>
                                                   </mml:mrow>
                                                </mml:mtd>
                                             </mml:mtr>
                                          </mml:mtable>
                                       </mml:mrow>
                                       <mml:mo stretchy="true">︸</mml:mo>
                                    </mml:munder>
                                    <mml:mrow>
                                       <mml:mi>M</mml:mi>
                                       <mml:mtext> mixture components</mml:mtext>
                                    </mml:mrow>
                                 </mml:munder>
                              </mml:mrow>
                              <mml:mo>}</mml:mo>
                           </mml:mrow>
                           <mml:mi>K</mml:mi>
                           <mml:mtext> data points</mml:mtext>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula id="bmcM4"><label>(4)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M16" name="1471-2105-9-S9-S13-i16" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:mi>p</mml:mi>
                           <mml:mo stretchy="false">(</mml:mo>
                           <mml:msub>
                              <mml:mi>λ</mml:mi>
                              <mml:mi>m</mml:mi>
                           </mml:msub>
                           <mml:mo>|</mml:mo>
                           <mml:msub>
                              <mml:mi>O</mml:mi>
                              <mml:mi>k</mml:mi>
                           </mml:msub>
                           <mml:mo>,</mml:mo>
                           <mml:mi>λ</mml:mi>
                           <mml:mo stretchy="false">)</mml:mo>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:msub>
                                    <mml:mi>α</mml:mi>
                                    <mml:mi>m</mml:mi>
                                 </mml:msub>
                                 <mml:mi>p</mml:mi>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:msub>
                                    <mml:mi>O</mml:mi>
                                    <mml:mi>k</mml:mi>
                                 </mml:msub>
                                 <mml:mo>|</mml:mo>
                                 <mml:msub>
                                    <mml:mi>λ</mml:mi>
                                    <mml:mi>m</mml:mi>
                                 </mml:msub>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>j</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>M</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:msub>
                                          <mml:mi>α</mml:mi>
                                          <mml:mi>j</mml:mi>
                                       </mml:msub>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>j</mml:mi>
                                       </mml:msub>
                                    </mml:mrow>
                                 </mml:mstyle>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                           </mml:mfrac>
                           <mml:mo>.</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula id="bmcM5"><label>(5)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M17" name="1471-2105-9-S9-S13-i17" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msub>
                              <mml:mover accent="true">
                                 <mml:mi>α</mml:mi>
                                 <mml:mo>^</mml:mo>
                              </mml:mover>
                              <mml:mi>m</mml:mi>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mn>1</mml:mn>
                              <mml:mi>K</mml:mi>
                           </mml:mfrac>
                           <mml:mstyle displaystyle="true">
                              <mml:munderover>
                                 <mml:mo>∑</mml:mo>
                                 <mml:mrow>
                                    <mml:mi>k</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                 </mml:mrow>
                                 <mml:mi>K</mml:mi>
                              </mml:munderover>
                              <mml:mrow>
                                 <mml:mi>p</mml:mi>
                                 <mml:mo stretchy="false">(</mml:mo>
                                 <mml:msub>
                                    <mml:mi>λ</mml:mi>
                                    <mml:mi>m</mml:mi>
                                 </mml:msub>
                                 <mml:mo>|</mml:mo>
                                 <mml:msub>
                                    <mml:mi>O</mml:mi>
                                    <mml:mi>k</mml:mi>
                                 </mml:msub>
                                 <mml:mo>,</mml:mo>
                                 <mml:mi>λ</mml:mi>
                                 <mml:mo stretchy="false">)</mml:mo>
                              </mml:mrow>
                           </mml:mstyle>
                           <mml:mo>,</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula id="bmcM6"><label>(6)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M18" name="1471-2105-9-S9-S13-i18" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msub>
                              <mml:mover accent="true">
                                 <mml:mi>Π</mml:mi>
                                 <mml:mo>^</mml:mo>
                              </mml:mover>
                              <mml:mi>m</mml:mi>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>k</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>K</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:msubsup>
                                          <mml:mover accent="true">
                                             <mml:mi>Π</mml:mi>
                                             <mml:mo>^</mml:mo>
                                          </mml:mover>
                                          <mml:mi>m</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msubsup>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>m</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>λ</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>k</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>K</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>m</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>λ</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                           </mml:mfrac>
                           <mml:mo>,</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M19" name="1471-2105-9-S9-S13-i19" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>Π</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM7"><label>(7)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M20" name="1471-2105-9-S9-S13-i20" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msub>
                              <mml:mover accent="true">
                                 <mml:mi>A</mml:mi>
                                 <mml:mo>^</mml:mo>
                              </mml:mover>
                              <mml:mi>m</mml:mi>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>i</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>K</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:msubsup>
                                          <mml:mover accent="true">
                                             <mml:mi>A</mml:mi>
                                             <mml:mo>^</mml:mo>
                                          </mml:mover>
                                          <mml:mi>m</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msubsup>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>m</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>λ</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>k</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>K</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>m</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>λ</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                           </mml:mfrac>
                           <mml:mo>,</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M21" name="1471-2105-9-S9-S13-i21" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>A</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM8"><label>(8)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M22" name="1471-2105-9-S9-S13-i22" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msub>
                              <mml:mover accent="true">
                                 <mml:mi>B</mml:mi>
                                 <mml:mo>^</mml:mo>
                              </mml:mover>
                              <mml:mi>m</mml:mi>
                           </mml:msub>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>k</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>K</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:msubsup>
                                          <mml:mover accent="true">
                                             <mml:mi>B</mml:mi>
                                             <mml:mo>^</mml:mo>
                                          </mml:mover>
                                          <mml:mi>m</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msubsup>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>m</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>λ</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                              <mml:mrow>
                                 <mml:mstyle displaystyle="true">
                                    <mml:msubsup>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mrow>
                                          <mml:mi>k</mml:mi>
                                          <mml:mo>=</mml:mo>
                                          <mml:mn>1</mml:mn>
                                       </mml:mrow>
                                       <mml:mi>K</mml:mi>
                                    </mml:msubsup>
                                    <mml:mrow>
                                       <mml:mi>p</mml:mi>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>λ</mml:mi>
                                          <mml:mi>m</mml:mi>
                                       </mml:msub>
                                       <mml:mo>|</mml:mo>
                                       <mml:msub>
                                          <mml:mi>O</mml:mi>
                                          <mml:mi>k</mml:mi>
                                       </mml:msub>
                                       <mml:mo>,</mml:mo>
                                       <mml:mi>λ</mml:mi>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                           </mml:mfrac>
                           <mml:mo>,</mml:mo>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M23" name="1471-2105-9-S9-S13-i23" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>B</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M24" name="1471-2105-9-S9-S13-i24" overflow="scroll"><mml:semantics><mml:mrow><mml:msqrt><mml:mi>T</mml:mi></mml:msqrt></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M25" name="1471-2105-9-S9-S13-i25" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>O</mml:mi><mml:mrow><mml:msqrt><mml:mi>T</mml:mi></mml:msqrt></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M26" name="1471-2105-9-S9-S13-i24" overflow="scroll"><mml:semantics><mml:mrow><mml:msqrt><mml:mi>T</mml:mi></mml:msqrt></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M27" name="1471-2105-9-S9-S13-i24" overflow="scroll"><mml:semantics><mml:mrow><mml:msqrt><mml:mi>T</mml:mi></mml:msqrt></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M28" name="1471-2105-9-S9-S13-i24" overflow="scroll"><mml:semantics><mml:mrow><mml:msqrt><mml:mi>T</mml:mi></mml:msqrt></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M29" name="1471-2105-9-S9-S13-i26" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>Π</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>A</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>B</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>t</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M30" name="1471-2105-9-S9-S13-i27" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M31" name="1471-2105-9-S9-S13-i28" overflow="scroll"><mml:semantics><mml:mrow><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mover accent="true"><mml:mi>Π</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>A</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>B</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M32" name="1471-2105-9-S9-S13-i29" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M33" name="1471-2105-9-S9-S13-i30" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>α</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mn>...</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>α</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mn>...</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi>α</mml:mi><mml:mi>M</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M34" name="1471-2105-9-S9-S13-i31" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M35" name="1471-2105-9-S9-S13-i32" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mn>...</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>^</mml:mo></mml:mover><mml:mi>M</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula>
<graphic xlink:href="1471-2105-9-S9-S13-1"/> <graphic xlink:href="1471-2105-9-S9-S13-2"/> <graphic xlink:href="1471-2105-9-S9-S13-3"/> <graphic xlink:href="1471-2105-9-S9-S13-4"/> <graphic xlink:href="1471-2105-9-S9-S13-5"/> <graphic xlink:href="1471-2105-9-S9-S13-6"/> <graphic xlink:href="1471-2105-9-S9-S13-7"/> <graphic xlink:href="1471-2105-9-S9-S13-8"/> <graphic xlink:href="1471-2105-9-S9-S13-9"/> <graphic xlink:href="1471-2105-9-S9-S13-10"/>
[{"surname": ["Juang", "Rabiner"], "given-names": ["B", "L"], "article-title": ["A probabilistic distance measure for hidden Markov models"], "source": ["AT&T technical journal"], "year": ["1985"], "volume": ["64"], "fpage": ["391"], "lpage": ["408"]}, {"surname": ["Krogh", "Brown", "Mian", "Sj\u00f6lander", "Haussler"], "given-names": ["A", "M", "I", "K", "D"], "article-title": ["Hidden Markov models in computational biology: applications to protein modelling"], "source": ["Tech Rep UCSC-CRL-93-32, UCSC"], "year": ["1993"]}, {"surname": ["Smyth", "Mozer M, Jordan M, Petsche T"], "given-names": ["P"], "article-title": ["Clustering sequences with hidden Markov models"], "source": ["Advances in Neural Information Processing Systems"], "year": ["1997"], "volume": ["9"], "publisher-name": ["The MIT Press"], "fpage": ["648"]}, {"surname": ["Rabiner"], "given-names": ["L"], "article-title": ["A tutorial on hidden Markov models and selected applications in speach recognition"], "source": ["Proceedings of IEEE"], "year": ["1989"], "volume": ["77"], "fpage": ["257"], "lpage": ["286"], "pub-id": ["10.1109/5.18626"]}, {"surname": ["Bilmes"], "given-names": ["J"], "article-title": ["A gentle tutorial of the EM algorithm and its application to parameter estimation for Gaussian mixture and hidden Markov models"], "source": ["Tech Rep TR-97-021"], "year": ["1998"], "publisher-name": ["International Computer Science Institute"]}, {"surname": ["Mitchell", "Helzerman", "Jamieson", "Harper"], "given-names": ["C", "R", "L", "M"], "article-title": ["A parallel implementation of a hidden Markov model with duration modeling for speech recognition"], "source": ["Digital Signal Processing, A Review Journal"], "year": ["1995"], "volume": ["5"], "fpage": ["298"], "lpage": ["306"]}, {"surname": ["Baum", "Petrie", "Soules", "Weiss"], "given-names": ["L", "T", "G", "N"], "article-title": ["A maximization technique occurring in the statistical analysis of probabilistic functions of Markov chains"], "source": ["Ann Math Statist"], "year": ["1970"], "volume": ["41"], "fpage": ["164"], "lpage": ["171"], "pub-id": ["10.1214/aoms/1177697196"]}]
BMC Bioinformatics. 2008 Aug 12; 9(Suppl 9):S13