Hidden Markov modelling#
Hidden Markov modelling can be used to classify traces.
If desired, first apply general selections to exclude traces from being analyzed. (See also: Trace selection) And additionally apply classifications to exclude negatively classified parts of the traces from being used in the fitting process of the hidden markov model. (See also: Trace classification)
file.apply_selections(['selection_intensity_total'])
file.apply_classifications(classification_donor_active=-1, classification_single_dye=-2)
Hidden Markov modelling can then be applied. Currently only a single variable can be used and only a two-state model is supported. Both a one-state and a two-state model are fit and based on the Bayesian information criterion the best model is selected.
file.classify_hmm(variable='FRET')
The classify_hmm method will add several parameters to the file dataset.
number_of_states: the number of states used in the model for each trace.state_mean: the mean value, e.g. FRET, for the each state.state_standard_deviation: the standard deviation for the each state.transition_probability: the transition probability from each state to each statestart_probability: the probability to start in a statesend_probability: the probability to end in a statetransition_rate: the transition rate from each state to each state
It will also add several selections:
selection_complex_rates`: if ``False, then calculating the transition rate from the transition probability resulted in a complex value.selection_lower_rate_limit`: if ``False, then the calculated transition rate is lower than can be measured in the time window.
Finally it will add the found classification as the classification_hmm variable in the file dataset.
Any region not used for fitting using input classifications will be set to the value -1.
For the region that are fitted, the state will be 0 in case a one-state model is used and
0 or 1 in case a two-state model is used.
Selections and classifications have to be applied to the general classification:
file.apply_selections(['selection_intensity_total',
'selection_complex_rates', 'selection_lower_rate_limit'])
file.apply_classifications(classification_donor_active=-1, classification_single_dye=-2,
classification_hmm=[None, 0, 1])