Skip to content
Paul Lott edited this page Nov 12, 2013 · 22 revisions

#Comparison of StochHMM with other Compilers, Libraries, Toolboxes, Implementation Applications

I've been asked, how does StochHMM compare to existing HMM solutions and where does it fit in exactly?

StochHMM is written and focused on being more accessible and easier to implement HMM's for biologists and bioinformaticians. This comparison focuses on tools that have been published in bioinformatics journals.

StochHMM isn't the holy grail of HMMs; it focuses on the traditional HMM. I wish I had funding and time to make it the swiss army knife of HMMs(pair,generalized,inhomogeneous), but I don't. When I started on StochHMM I was a wet lab biologist that was frustrated with existing implementation tools. My focus on StochHMM has been to make it easy to implement and understand the model files, flexible so that the models can be adapted to many different situations, accessible to people with minimal bioinformatics skills, and lastly somewhat memory efficient and fast.

To help answer the comparison question, I've compiled a list of HMM utilities, their features, and what StochHMM has or doesn't have.

ComparisonTable

Comparison of features available in existing HMM compilers, libraries, toolkits, and applications. StochHMM is included in both Libraries and Applications because it is provided as both. (Lunter, 2007; Lam and Meyer, 2009b; Schliep et al., 2003; Sand et al., 2010; Schütz and Delorenzi, 2008)

One of the most common questions that I get from bioinformaticians is: How does it compare to HMMoc?

First, StochHMM requires a lot less programming knowledge to implement a simple model like the common Dishonest Casino model. (see Dishonest Casino Compared)[dishonest_comp] Researchers can create, run, and quickly adapt a model without ever writing a line of code. Something that isn't possible with HMMoc. This makes it a lot more accessible to non-bioinformaticians. I have introduced StochHMM to non-bioinformaticians and they are now making very simple and some very complex HMMs to analyze data in ways that they were inaccessible to them before.

Second, StochHMM doesn't support pair, generalized HMMs. But it does support a lot of features that allows it to be adapted. Many features can be accessed without coding a line of C++. But just a few lines of code in the main function can allow it to call utilities like HMMer from within the Viterbi algorithm, work as a inhomogeneous HMM for classifying parental origin of haplotypes, use user-defined functions as transitions or emissions.

Third, almost everyone is interested in speed and memory efficiency. To help with the comparison, I've ran some simple benchmarks on a 13" MacBook Pro (2.5Ghz Intel Core i5). All programs using Mamot, HMMoc, and StochHMM were compiled in Xcode 5.0.1. Memory usage for Mamot, HMMoc-derived programs, StochHMM were performed using the Instrument's Memory Allocation profiling tool.

##Dishonest Casino Benchmark

**Note: Mamot is limited to 300,000bp sequences. If longer sequences are supplied they are split into 300K chunks and ran separately.

###Time: Viterbi Algorithm on Dice Sequence

Sequence Length Mamot StochHMM R-HMM HMMoc
300 0.005 0.005 0.232 0.004
300000 0.247 0.218 20.449 0.124
3000000 19.724 2.056 213.206 1.229
30000000 211.187 19.453 2534.004 11.331

###Memory: Viterbi Algorithm on Dice Sequence in Megabytes

Sequence Length Mamot StochHMM R-HMM HMMoc
300 4.6 0.082 21 0.066
300000 4.6 16 79.5 56.39
3000000 4.6 157 444.2 470.37
30000000 4.6 1046 4517 3800