1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
from HMMEditingContext import *
import ghmm
# DISCRETE Model
alpha = ghmm.DNA
my_new_hmm = HMMEditingContext(alpha)
s1 = my_new_hmm.addState([0.1,0.3,0.6])
s2 = my_new_hmm.addState([0.1,0.3,0.6], initial=0.3)
s3 = my_new_hmm.addState() # uniform
t12 = my_new_hmm.addTransition(s1, s2)
t23 = my_new_hmm.addTransition(s2, s3, p= 0.1)
t31 = my_new_hmm.addTransition(s3, s1, p= 0.1)
hmm = my_new_hmm.finalize()
# Alternativ
c = HMMEditingContext(alpha)
c.addState([0.1,0.3,0.6])
c.addState([0.1,0.3,0.6], initial=0.3)
c.addState() # uniform
c.addTransition('1', '2')
c.addTransition('2', '3', p= 0.1)
c.addTransition('3', '1', p= 0.1)
hmm = c.finalize()
c.save('bla.xml')
print(c)
# Zugriffe auf Zust?nde: Object, id, name (possibly non-unique)
# HMM
c = HMMEditingContext(hmm)
c['3'].emission = [0.1,0.3,0.6]
# doesn't work with python lists
#c['3'].emission = .5 * (c['2'].emission + [0.1,0.3,0.6])
c[('2','3')].p = 0.2
print(c[(2,3)])
c[(2,3)].p = 0.1
print(c[('2','3')])
c['3'].initial = 0.2
hmm = c.finalize()
print(c)
# delete state 3
del c[3]
# delete transition from state 1 to state 2
del c[(1,2)]
hmm = c.finalize()
print(c)
c = HMMEditingContext("test.xml")
hmm = c.finalize()
print("\n###############################\n")
print(c)
#print hmm.verbose_str()
print("\n###############################\n")
# CONTINOUS Model
c = HMMEditingContext(ghmm.Float())
c = HMMEditingContext(GaussianDistribution)
c.addState((0.0,1.0))
c.addState((0.1,0.3), initial=0.3)
c.addState() # uniform
c.addTransition('1', '2')
c.addTransition('3', '2', p= 0.1)
print(c)
c.finalize()
print(c)
c = HMMEditingContext(ghmm.Float())
c.addState(GaussianDistribution(0.0,1.0))
c = HMMEditingContext(GaussianMixtureDistribution)
c.addState(
[
(GaussianDistribution(0.0, 1.0), 0.1),
(GaussianDistribution(1.0, 1.0), 0.3),
(GaussianDistribution(2.0, 1.0), 0.6)
],
initial = 0.1
)
c = HMMEditingContext(ContinuousMixtureDistribution)
c.addState(
[
(GaussianDistribution(0.0, 1.0), 0.1),
(LeftTruncGaussianDistribution(1.0, 1.0, trunc=.7), 0.3),
(GaussianDistribution(2.0, 1.0), 0.6)
],
initial = 0.1
)
c.addState(
[
(UniformDistribution(-1, 1), 0.6),
(GaussianDistribution(0.0, 1.0), 0.1),
(GaussianDistribution(1.0, 1.0), 0.3),
(GaussianDistribution(2.0, 1.0), 0.6)
],
initial = 0.1
)
c.addState(
[
(GaussianDistribution(2.0, 2.0), 0.1),
(GaussianDistribution(1.0, 1.0), 0.3),
(GaussianDistribution(2.0, 2.0), 0.6)
],
initial = 0.9
)
c.addTransition('1', '2')
c.addTransition('2', '3', p= 0.1)
c.addTransition('3', '1', p= 0.1)
print(c)
hmm = c.finalize()
print(c)
print(hmm)
|