1. Am I right in assuming that the emission probabilities will not be following a gaussian distribution for my particular problem?
  2. Obviously, I will need to train the model for state detection. As I understood from this answer, I should use the Baum-Welch algorithm, since I do not know emission and transition probabilities for my model. Is this correct?
  3. How to achieve "labeling" of each data sample state as being in a "systole" or "diastole" state, as below? Am I correct in assuming that the Baum-Welch algorithm will give me a pointwise state likelihood, that I can use to achieve this classification?

arterial line curve

Legend: systole = red, diastole = white

  1. Can someone please point me to a example code or a lib for such a data classification/labeling task? I would prefer Python or Java, but anything else will do.

The Problem

I am facing the task of detecting systolic and diastolic phases of the cardiac cycle on a time series derived from an arterial line sampling, as represented by the following plot:

arterial line plot

Legend: time -> artery area in pixels

After some reading, it would seem that one of the preferred ways of doing that is using a Hidden Markov Model. I also read Bayesian Methods for Hackers to get a grip on the subject. From the Wikipedia page on the Viterbi algorithm, I modeled my problem as follows: enter image description here

Since, diastole takes ~2/3 of the cardiac cycle time, the starting probabilities are known, but I do not understand how to calculate the rest and label my data. I found this Hidden Markov Model example using PyMC and gaussian emission probabilities, but I do not understand how to use it, and documentation is sparse...


1 Answer 1


1) you should have binomial distribution of output values.

2 ) Baum Welch/ Forward backward are used for training the model. I mean estimation of transition and emission probabilities. Viterbi would give you sequence of hidden states.

3) you get the hidden states and the emission values distribution from all the hidden states. All hidden states would have different emission distribution. Based on emission values, you can say anything about Systole/ Diastole.

This article might help you to understand basics- http://machinelearningstories.blogspot.in/2017/02/hidden-markov-model-session-1.html


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.