def generate_hsm_sequence(hsm, sequence_length=100): """Generate a Hidden Semi Markov Sequence given an input transition matrix Used by :meth:`~openalea.stocatree.sequences.generate_sequence` :param hsm: A hidden semi markov instance of HiddenSemiMarkov class from VPlants.Sequence_analysis :param sequence_length: a length of sequence set to 100 by default :returns: a sequence """ # Generate a Markov sequence #from openalea.sequence_analysis._sequence_analysis import _SemiMarkovIterator, _HiddenSemiMarkov #from openalea.sequence_analysis import HiddenSemiMarkov if type(hsm) == HiddenSemiMarkov or type(hsm) == _HiddenSemiMarkov: iterator = _SemiMarkovIterator(hsm) simulation = iterator.simulation(sequence_length, True) else: print "expected hsm datatype. Got %s" % type(hsm) return None #processes = hsm.nb_output_process() + 1 #used to free memory in the c++ code i = 0 sequence = [] for i in range(0, sequence_length): if simulation[0][i] == 6: break sequence.append([simulation[0][i], simulation[1][i]]) sequence.reverse() return sequence
def hsm_iterator(fn): hsm = HiddenSemiMarkov(fn) it = sa._SemiMarkovIterator(hsm) return it
def test_semi_markov_iterator(): hsm = HiddenSemiMarkov(get_shared_data('test_hidden_semi_markov.dat')) smi = sa._SemiMarkovIterator(hsm) sim = smi.simulation(N, True)