The chmmpy software supports the analysis of multivariate time series data to detect patterns using a Hidden Markov Model (HMM).
Many applications involve the detection and characterization of hidden or latent states in a complex system, using observable states and variables. The chmmpy software supports inference of latent states integrating both (1) a HMM and (2) application-specific constraints that reflect known relationships amongst hidden states. For example, HMMs have been widely used in natural language processing to tag the part of speech of words in a sentence (e.g. noun, verb, adjective, etc.). But in many applications there are known relationships that need to be enforced, such as the fact that a simple English sentence must contain at least one noun and exactly one verb.
The chmmpy software provides a generic framework for expressing application-specific constraints and supporting constrained HMM inference using optimization solvers. Although application-specific versions of the well-known Viterbi inference algorithm can often be developed, the generic framework supported by chmmpy enables the agile expression of complex sets of constraints that naturally arise in many real-world applications. Optimization constraints can be expressed in chmmpy using the pyomo modeling framework, and these models can be solved with a variety of commercial and open source source optimization solvers.