{ "info": { "author": "Nicolas Hug", "author_email": "contact@nicolas-hug.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering" ], "description": "# Hmmkay [![Build Status](https://travis-ci.org/NicolasHug/hmmkay.svg?branch=master)](https://travis-ci.org/NicolasHug/hmmkay) [![Documentation Status](https://readthedocs.org/projects/hmmkay/badge/?version=latest)](https://hmmkay.readthedocs.io/en/latest/?badge=latest) [![python versions](https://img.shields.io/badge/python-3.6+-blue.svg)](https://github.com/NicolasHug/hmmkay)\n\n\ud83e\udd14\ud83d\udc4c\n\nDiscrete Hidden Markov Models with Numba\n\n\nHmmkay is a basic library for discrete Hidden Markov Models that relies on\nnumba's just-in-time compilation. It supports decoding, likelihood scoring,\nfitting (parameter estimation), and sampling.\n\nHmmkay accepts sequences of arbitrary length, e.g. 2d numpy arrays or lists\nof iterables. Hmmkay internally converts lists of iterables into Numba typed\nlists of numpy arrays.\n\n## Installation\n\n pip install hmmkay\n\nRequires Python 3.6 or higher.\n\n## Examples\n\nScoring and decoding:\n\n```py\nfrom hmmkay.utils import make_observation_sequences\nsequences = make_observation_sequences(n_seq=100, n_observable_states=4, random_state=0)\nhmm.fit(sequences)\n\nfrom hmmkay.utils import make_proba_matrices\nfrom hmmkay import HMM\n\ninit_probas, transition_probas, emission_probas = make_proba_matrices(\n n_hidden_states=2,\n n_observable_states=4,\n random_state=0\n)\nhmm = HMM(init_probas, transition_probas, emission_probas)\n\nsequences = [[0, 1, 2, 3], [0, 2]]\nhmm.log_likelihood(sequences)\n-8.336\nhmm.decode(sequences) # most likely sequences of hidden states\n[array([1, 0, 0, 1], dtype=int32), array([1, 0], dtype=int32)]\n```\n\nFitting:\n\n```py\nfrom hmmkay.utils import make_observation_sequences\nsequences = make_observation_sequences(n_seq=100, n_observable_states=4, random_state=0)\nhmm.fit(sequences)\n```\n\nSampling:\n\n```py\nhmm.sample(n_obs=2, n_seq=3) # return sequences of hidden and observable states\n(array([[0, 1],\n [1, 1],\n [0, 0]]), array([[0, 2],\n [2, 3],\n [0, 0]]))\n```\n\n## Documentation\n\nDocs are online at\n[https://hmmkay.readthedocs.io/en/latest/](https://hmmkay.readthedocs.io/en/latest/)\n\n## Benchmark\n\nIt should be faster than [hmmlearn](https://hmmlearn.readthedocs.io/en/latest/). Here's the result of the `benchmark.py` script on my laptop:\n\n[![bench](bench_results.png)](https://github.com/NicolasHug/hmmkay) \n\n## Status\n\nHighly experimental, API subjet to change without deprecation.\n\n## Development\n\nThe following packages are required for testing:\n\n pip install pytest hmmlearn scipy\n\nFor benchmarks:\n\n pip install matplotlib hmmlearn\n\nFor docs:\n\n pip install sphinx sphinx_rtd_theme\n\n\nFor development, use [pre-commit\nhooks](https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/)\nfor black and flake8.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/NicolasHug/hmmkay/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "hmmkay", "package_url": "https://pypi.org/project/hmmkay/", "platform": "any", "project_url": "https://pypi.org/project/hmmkay/", "project_urls": { "Homepage": "https://github.com/NicolasHug/hmmkay/" }, "release_url": "https://pypi.org/project/hmmkay/0.0.1/", "requires_dist": [ "numpy", "numba" ], "requires_python": ">=3.6", "summary": "Discrete Hidden Markov Models with Numba", "version": "0.0.1" }, "last_serial": 5728256, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "e25a34428b861d27b5d81199b645d886", "sha256": "abdeb1a77a1bf8b9b9c4c245166dc47ccc97caa138edfdaecfdcd7387c0247ff" }, "downloads": -1, "filename": "hmmkay-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e25a34428b861d27b5d81199b645d886", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10589, "upload_time": "2019-08-25T23:23:48", "url": "https://files.pythonhosted.org/packages/a3/14/9ba6a3ee319d99aa93b5bffaf6a5409f8deb9bd134cec18d6e2679ea1429/hmmkay-0.0.1-py3-none-any.whl" } ], "0.0a0": [ { "comment_text": "", "digests": { "md5": "a9807ab4c6926e5142a0ac030906ccc4", "sha256": "af98f174cb83a8c4f93aa210956a1673e18a4f94adcbf6d2b72a0ec31f74701c" }, "downloads": -1, "filename": "hmmkay-0.0a0-py3-none-any.whl", "has_sig": false, "md5_digest": "a9807ab4c6926e5142a0ac030906ccc4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 2389, "upload_time": "2019-08-14T12:49:41", "url": "https://files.pythonhosted.org/packages/ba/37/74fc80435c4674c3757fb02534edac15c1cda6ab4e8dc1a14ee5a2d9a36f/hmmkay-0.0a0-py3-none-any.whl" } ], "0.0a1": [ { "comment_text": "", "digests": { "md5": "c13e51f12162f4717a0c4964497d8513", "sha256": "2e318a4d14970f2ffba781a30a11cd533b2cfa5209067233461ff56851705958" }, "downloads": -1, "filename": "hmmkay-0.0a1-py3-none-any.whl", "has_sig": false, "md5_digest": "c13e51f12162f4717a0c4964497d8513", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6678, "upload_time": "2019-08-14T13:23:37", "url": "https://files.pythonhosted.org/packages/f2/0b/976b5ac3f2750139500a606612a741e219c6bd05196e093b8d29dfa07370/hmmkay-0.0a1-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e25a34428b861d27b5d81199b645d886", "sha256": "abdeb1a77a1bf8b9b9c4c245166dc47ccc97caa138edfdaecfdcd7387c0247ff" }, "downloads": -1, "filename": "hmmkay-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e25a34428b861d27b5d81199b645d886", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10589, "upload_time": "2019-08-25T23:23:48", "url": "https://files.pythonhosted.org/packages/a3/14/9ba6a3ee319d99aa93b5bffaf6a5409f8deb9bd134cec18d6e2679ea1429/hmmkay-0.0.1-py3-none-any.whl" } ] }