89 Stars
Updated Last
1 Year Ago
Started In
January 2019

Hidden Markov Models for Julia.


  • ๐Ÿ‘‹ HMMBase is looking for a new maintainer, please open an issue or send me an email if you are interested!
  • v1.0 (stable): HMMBase v1.0 comes with many new features and performance improvements (see the release notes), thanks to @nantonel PR#6. It also introduces breaking API changes (method and fields renaming), see Migration to v1.0 for details on migrating your code to the new version.
  • v0.0.14: latest pre-release version.

Are you using HMMBase in a particular domain (Biology, NLP, ...) ? Feel free to open an issue to discuss your workflow/needs and see how we can improve HMMBase.


HMMBase provides a lightweight and efficient abstraction for hidden Markov models in Julia. Most HMMs libraries only support discrete (e.g. categorical) or Normal distributions. In contrast HMMBase builds upon Distributions.jl to support arbitrary univariate and multivariate distributions.
See HMMBase.jl - A lightweight and efficient Hidden Markov Model abstraction for more details on the motivation behind this package.

Benchmark of HMMBase against hmmlearn and pyhsmm.


  • Supports any observation distributions conforming to the Distribution interface.
  • Fast and stable implementations of the forward/backward, EM (Baum-Welch) and Viterbi algorithms.


  • Multi-sequences HMMs, see MS_HMMBase
  • Bayesian models, probabilistic programming, see Turing
  • Nonparametric models (HDP-H(S)MM, ...)


The package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run:

pkg> add HMMBase


  • STABLE โ€” documentation of the most recently tagged version.
  • DEVEL โ€” documentation of the in-development version.

Project Status

The package is tested against Julia 1.0 and the latest Julia 1.x.

Starting with v1.0, we follow semantic versioning:

Given a version number MAJOR.MINOR.PATCH, increment the:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards compatible manner, and
  3. PATCH version when you make backwards compatible bug fixes.

Questions and Contributions

Contributions are very welcome, as are feature requests and suggestions. Please read the CONTRIBUTING.md file for informations on how to contribute. Please open an issue if you encounter any problems.

Logo: lego by jon trillana from the Noun Project.

Used By Packages

No packages found.