from ghmm import *

# Criando o hmm aleatorio
sigma = IntegerRange(1,5)
A=[[0.25,0.75],[0.6,0.4]]
um_quarto = [0.3,0.3,0.2,0.2]
B = [um_quarto, um_quarto]
pi = [0.3,0.7]
m = HMMFromMatrices(sigma, DiscreteDistribution(sigma), A, B, pi)

print m
print '\n'

teste_vector = ['atcgatgtagtcgtagctagtcgattatatattatactatcgacgtactctctgagctagtcgtgatgctgacgtagtattcgcgtagtgtgacgagtgctgacgattacgagtcggatcgtgatgcatcgatcgatcgtagctagctagctgatcgatcgattatatcgcgcgctagtagcgcgacgagctagcgcgagcgatcgagctagctagctgacgagctagcgtacgatgcatgctagctagctagctagcattattatatacgcgcgcgcgcgagagagatctcttctctcttgtgtggacacacacttatatgcgcggcgcgctctctcgagagacactatatctgactgatcatatataaaaaaaatttttttcgcgcgcgcgcgcgcgcgcgcttttaaaaatatatatagcgcgcgcggcggcggcggcgtgcggcggcggc','gcggcggcgaggagagagagagaagagaggggggggggggggccccccccctttttttttttactgatcgatcgatcgagcgat']

treinamento_vector = ['atcgatgtagtcgtagctagtcgattatatattatactatcgacgtactctctgagctagtcgtgatgctgacgtagtattcgcgtagtgtgacgagtgctgacgattacgagtcggatcgtgatgcatcgatcgatcgtagctagctagctgatcgatcgattatatcgcgcgctagtagcgcgacgagctagcgcgagcgatcgagctagctagctgacgagctagcgtacgatgcatgctagctagctagctagcattattatatacgcgcgcgcgcgagagagatctcttctctcttgtgtggacacacacttatatgcgcggcgcgctctctcgagagacactatatctgactgatcatatataaaaaaaatttttttcgcgcgcgcgcgcgcgcgcgcttttaaaaatatatatagcgcgcgcggcggcggcggcgtgcggcggcggc','cgatgctagctagctgatcgtagctagtcgatcgtagctactgatcgtacgtagctagctgatcgatcgtagctgactgatcgtagctgatcgagcgatcgtagctagtcgatcgtagcgatcgtagc','agtcgatcgtagctagctgatcgatgctagtcgatgctagctgagctgacgagctgacgagctgactgagctagcg']

# Criando o Sequence Set
alfabeto = Alphabet(['a','c','g','t'])
sequence_set_teste = SequenceSet(alfabeto,teste_vector)
sequence_set_treino = SequenceSet(alfabeto,treinamento_vector)

print sequence_set_teste
print '\n'
print sequence_set_treino
print '\n'

# Rodando o Baum-Welch e imprimindo o novo hmm
m.baumWelch(sequence_set_treino)
print m
print '\n'

# Calculando o viterbi
vi_bw = m.viterbi(sequence_set_teste)

#print vi_bw
#print '\n'