HiddenMarkovModels.jl

HiddenMarkovModels.jl: generic, fast and reliable state space modeling - Published in JOSS (2024)

https://github.com/gdalle/hiddenmarkovmodels.jl

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 11 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: ieee.org, joss.theoj.org, zenodo.org
  • Committers with academic emails
    1 of 4 committers (25.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

baum-welch forward-backward hidden-markov-model hmm julia markov statistics viterbi

Scientific Fields

Engineering Computer Science - 31% confidence
Last synced: 4 months ago · JSON representation ·

Repository

A Julia package for simulation, inference and learning of Hidden Markov Models.

Basic Info
Statistics
  • Stars: 107
  • Watchers: 2
  • Forks: 11
  • Open Issues: 10
  • Releases: 18
Topics
baum-welch forward-backward hidden-markov-model hmm julia markov statistics viterbi
Created almost 3 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

HiddenMarkovModels.jl

Stable Dev Build Status Coverage

Code Style: Blue Aqua QA JET

DOI DOI

A Julia package for simulation, inference and learning of Hidden Markov Models with discrete states and discrete time.

Getting started

This package can be installed using Julia's package manager:

julia pkg> add HiddenMarkovModels

Then, you can create your first model as follows:

julia using Distributions, HiddenMarkovModels init = [0.6, 0.4] trans = [0.7 0.3; 0.2 0.8] dists = [Normal(-1.0), Normal(1.0)] hmm = HMM(init, trans, dists)

Take a look at the documentation to know what to do next!

Some background

Hidden Markov Models (HMMs) are a widely used modeling framework in signal processing, bioinformatics and plenty of other fields. They explain an observation sequence $(Yt)$ by assuming the existence of a latent Markovian state sequence $(Xt)$ whose current value determines the distribution of observations. In some scenarios, the state and the observation sequence are also allowed to depend on a known control sequence $(U_t)$. Each of the problems below has an efficient solution algorithm, available here:

| Problem | Goal | Algorithm | | ---------- | -------------------------------------- | ---------------- | | Evaluation | Likelihood of the observation sequence | Forward | | Filtering | Last state marginals | Forward | | Smoothing | All state marginals | Forward-backward | | Decoding | Most likely state sequence | Viterbi | | Learning | Maximum likelihood parameter | Baum-Welch |

Take a look at this tutorial to know more about the math:

A tutorial on hidden Markov models and selected applications in speech recognition, Rabiner (1989)

Main features

This package is generic. Observations can be arbitrary Julia objects, not just scalars or arrays. Number types are not restricted to floating point, which enables automatic differentiation. Time-dependent or controlled HMMs are supported out of the box.

This package is fast. All the inference functions have allocation-free versions, which leverage efficient linear algebra subroutines. We will include extensive benchmarks against Julia and Python competitors.

This package is reliable. It gives the same results as the previous reference package up to numerical accuracy. The test suite incorporates quality checks as well as type stability and allocation analysis.

Citation

If this package is useful to your research, please cite the JOSS paper. Here is the BibTeX key:

bibtex @article{ Dalle2024, doi = {10.21105/joss.06436}, url = {https://doi.org/10.21105/joss.06436}, year = {2024}, publisher = {The Open Journal}, volume = {9}, number = {96}, pages = {6436}, author = {Guillaume Dalle}, title = {HiddenMarkovModels.jl: generic, fast and reliable state space modeling}, journal = {Journal of Open Source Software} }

Contributing

If you spot a bug or want to ask about a new feature, please open an issue on the GitHub repository. Once the issue receives positive feedback, feel free to try and fix it with a pull request that follows the BlueStyle guidelines.

Acknowledgements

A big thank you to Maxime Mouchet and Jacob Schreiber, the respective lead devs of alternative packages HMMBase.jl and pomegranate, for their help and advice. Logo by Clément Mantoux based on a portrait of Andrey Markov.

Owner

  • Name: Guillaume Dalle
  • Login: gdalle
  • Kind: user
  • Location: Lausanne
  • Company: EPFL

Postdoctoral researcher

JOSS Publication

HiddenMarkovModels.jl: generic, fast and reliable state space modeling
Published
April 05, 2024
Volume 9, Issue 96, Page 6436
Authors
Guillaume Dalle ORCID
Information, Learning and Physics laboratory, Ecole Polytechnique Fédérale de Lausanne (EPFL), Station 11, CH-1015 Lausanne, Information and Network Dynamics laboratory, Ecole Polytechnique Fédérale de Lausanne (EPFL), Station 14, CH-1015 Lausanne, Statistical Physics of Computation laboratory, Ecole Polytechnique Fédérale de Lausanne (EPFL), CH-1015 Lausanne
Editor
Mehmet Hakan Satman ORCID
Tags
statistics hmm inference estimation

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: "1.2.0"
authors:
- family-names: Dalle
  given-names: Guillaume
  orcid: "https://orcid.org/0000-0003-4866-1687"
doi: 10.5281/zenodo.10931812
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Dalle
    given-names: Guillaume
    orcid: "https://orcid.org/0000-0003-4866-1687"
  date-published: 2024-04-05
  doi: 10.21105/joss.06436
  issn: 2475-9066
  issue: 96
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 6436
  title: "HiddenMarkovModels.jl: generic, fast and reliable state space
    modeling"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.06436"
  volume: 9
title: "HiddenMarkovModels.jl: generic, fast and reliable state space
  modeling"

GitHub Events

Total
  • Create event: 18
  • Commit comment event: 11
  • Release event: 3
  • Issues event: 11
  • Watch event: 19
  • Delete event: 14
  • Issue comment event: 49
  • Push event: 38
  • Pull request review event: 15
  • Pull request review comment event: 25
  • Pull request event: 30
  • Fork event: 6
Last Year
  • Create event: 18
  • Commit comment event: 11
  • Release event: 3
  • Issues event: 11
  • Watch event: 19
  • Delete event: 14
  • Issue comment event: 49
  • Push event: 38
  • Pull request review event: 15
  • Pull request review comment event: 25
  • Pull request event: 30
  • Fork event: 6

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 166
  • Total Committers: 4
  • Avg Commits per committer: 41.5
  • Development Distribution Score (DDS): 0.018
Past Year
  • Commits: 21
  • Committers: 4
  • Avg Commits per committer: 5.25
  • Development Distribution Score (DDS): 0.143
Top Committers
Name Email Commits
Guillaume Dalle 2****e 163
adannenberg a****g@g****m 1
Tim Hargreaves 3****s 1
Guillaume Faye-Bédrin g****n@s****r 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 34
  • Total pull requests: 99
  • Average time to close issues: 4 months
  • Average time to close pull requests: 5 days
  • Total issue authors: 10
  • Total pull request authors: 3
  • Average comments per issue: 2.32
  • Average comments per pull request: 1.13
  • Merged pull requests: 88
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 9
  • Pull requests: 25
  • Average time to close issues: 4 months
  • Average time to close pull requests: 19 days
  • Issue authors: 4
  • Pull request authors: 3
  • Average comments per issue: 1.22
  • Average comments per pull request: 1.72
  • Merged pull requests: 19
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • gdalle (24)
  • rsenne (3)
  • tbeason (2)
  • dmetivie (2)
  • THargreaves (2)
  • mcwaga (1)
  • dan-sprague (1)
  • JuliaTagBot (1)
  • gfayebedrin (1)
  • camilogarciabotero (1)
Pull Request Authors
  • gdalle (120)
  • fausto-mpj (2)
  • THargreaves (1)
  • adannenberg (1)
  • andreramosfdc (1)
  • gfayebedrin (1)
Top Labels
Issue Labels
enhancement (12) documentation (4) question (1) bug (1) run benchmark (1)
Pull Request Labels
run benchmark (19)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 26 total
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 17
juliahub.com: HiddenMarkovModels

A Julia package for simulation, inference and learning of Hidden Markov Models.

  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 26 Total
Rankings
Dependent repos count: 7.7%
Stargazers count: 12.8%
Average: 25.0%
Forks count: 39.3%
Dependent packages count: 40.4%
Last synced: 4 months ago

Dependencies

.github/workflows/CompatHelper.yml actions
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/draft-pdf.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/register.yml actions
  • julia-actions/RegisterAction latest composite
.github/workflows/test.yml actions
  • actions/checkout v2 composite
  • codecov/codecov-action v2 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-docdeploy v1 composite
  • julia-actions/setup-julia v1 composite