示例#1
0
 def setUpClass(cls):
     cls.mm_builder = MarkovModel.MarkovModelBuilder(
         dice_type_alphabet, dice_roll_alphabet)
     cls.mm_builder.allow_all_transitions()
     cls.mm_builder.set_random_probabilities()
     # get a sequence of rolls to train the markov model with
     cls.rolls, cls.states = generate_rolls(3000)
示例#2
0
    def setUp(self):
        # set up our Markov Model
        mm_builder = MarkovModel.MarkovModelBuilder(number_alphabet, letter_alphabet)
        mm_builder.allow_all_transitions()
        mm_builder.set_equal_probabilities()

        mm = mm_builder.get_markov_model()

        # now set up a test sequence
        emission_seq = Seq("ABB")
        state_seq = ()
        training_seq = Trainer.TrainingSequence(emission_seq, state_seq)

        # finally set up the DP
        self.dp = DynamicProgramming.ScaledDPAlgorithms(mm, training_seq)
#%%
from Bio.HMM import MarkovModel, Trainer, Utilities
from Bio.Seq import MutableSeq, Seq
from Bio import Alphabet
import random

class state(Alphabet.Alphabet):
    letters = ['1', '2', '3']
class DNA(Alphabet.Alphabet):
    letters = ['A','C','G','T']

model = MarkovModel.MarkovModelBuilder(state(), DNA())
model.allow_all_transitions()

#set probailitas awal secara random
model.set_random_probabilities()

baum_welch = model.get_markov_model()

VERBOSE = 0
def stop_training(log_likelihood_change, n_iterasi):
    if VERBOSE:
        print("ll change: %f" % log_likelihood_change)
    if log_likelihood_change < 0.01:
        return 1
    elif n_iterasi >= 10:
        return 1
    else:
        return 0

示例#4
0
#Profile Untuk (Diambil dari slide bioinformatik)
# AC-SA
# A--ST
# ACCST
#Set Protein DNA
class DNA(Alphabet.Alphabet):
    letters = ['A', 'T', 'S', 'C', '']


#Set State Main, Delete, Insert
class State(Alphabet.Alphabet):
    letters = ['M', 'N', 'O', 'D', 'E', 'F', 'I', 'J', 'K', 'L']


#inisialisasi hmm builder
builder = MarkovModel.MarkovModelBuilder(State(), DNA())

#transisi dari match state
builder.allow_transition('M', 'N')
builder.allow_transition('M', 'E')
builder.allow_transition('M', 'J')

builder.allow_transition('N', 'O')
builder.allow_transition('N', 'K')

builder.allow_transition('O', 'L')

#transisi dari insert state
builder.allow_transition('I', 'M')
builder.allow_transition('I', 'I')
builder.allow_transition('I', 'D')
示例#5
0
 def setUp(self):
     self.mm_builder = MarkovModel.MarkovModelBuilder(
         NumberAlphabet(), LetterAlphabet())
示例#6
0
 def setUp(self):
     # set up a bogus HMM and our trainer
     hmm = MarkovModel.HiddenMarkovModel({}, {}, {}, {}, {})
     self.test_trainer = Trainer.AbstractTrainer(hmm)
示例#7
0
        roll_seq.append(new_roll)

        # now give us a chance to switch to a new state
        chance_num = random.random()
        if cur_state == 'F':
            if chance_num <= .05:
                cur_state = 'L'
        elif cur_state == 'L':
            if chance_num <= .1:
                cur_state = 'F'

    return roll_seq.toseq(), state_seq.toseq()


# -- build a MarkovModel
mm_builder = MarkovModel.MarkovModelBuilder(DiceTypeAlphabet(),
                                            DiceRollAlphabet())

mm_builder.allow_all_transitions()
mm_builder.set_random_probabilities()
"""
mm_builder.set_transition_score('F', 'L', .05)
mm_builder.set_transition_score('F', 'F', .95)
mm_builder.set_transition_score('L', 'F', .10)
mm_builder.set_transition_score('L', 'L', .9)
mm_builder.set_emission_score('F', '1', .17)
mm_builder.set_emission_score('F', '2', .17)
mm_builder.set_emission_score('F', '3', .17)
mm_builder.set_emission_score('F', '4', .17)
mm_builder.set_emission_score('F', '5', .17)
mm_builder.set_emission_score('F', '6', .17)
mm_builder.set_emission_score('L', '1', .1)
示例#8
0
 def setUp(self):
     self.mm_builder = MarkovModel.MarkovModelBuilder(
         number_alphabet, letter_alphabet)
示例#9
0
    def setUp(self):
        mm_builder = MarkovModel.MarkovModelBuilder(NumberAlphabet(),
                                                    LetterAlphabet())
        mm_builder.allow_all_transitions()

        self.mm = mm_builder.get_markov_model()
#A-C-CA
#AC-AST


#Membuat array DNA dan state pada HMM
class arrayDNA(Alphabet.Alphabet):
    letters = ['A', 'C', 'G', 'S', 'T', ' ']


#I = Insert, D = Delete
class arrayState(Alphabet.Alphabet):
    letters = ['I', 'D', 'E', 'F', 'J', 'K', 'L', 'M', 'N', 'O', 'P']


#Membangung Hidden Markov Model
markovBuilder = MarkovModel.MarkovModelBuilder(arrayState(), arrayDNA())

#transisi dari semua state ke state lainnya
markovBuilder.allow_all_transitions()

#probabilitas awal (berdasarkan profile, karena selalu mulai dari Match state maka M = 1)
markovBuilder.set_initial_probabilities({'M': 1, 'D': 0, 'I': 0})

#probabilitas untuk transisi dari satu state ke state lain
#state yang tidak diberi skor berarti tidak akan dilewati karena probabilitas 0
markovBuilder.set_transition_score('M', 'N', .67)
markovBuilder.set_transition_score('M', 'D', .33)
markovBuilder.set_transition_score('D', 'I', 1)
markovBuilder.set_transition_score('N', 'O', .5)
markovBuilder.set_transition_score('N', 'I', .5)
markovBuilder.set_transition_score('I', 'O', 1)
from Bio.HMM import DynamicProgramming
from Bio.HMM import Trainer
from Bio.HMM import Utilities


#Definisikan state pada HMM
class DNAAlphabet(Alphabet.Alphabet):
    letters = ['A', 'T', 'G', 'C', '']


class StateAlphabet(Alphabet.Alphabet):
    letters = ['I', 'J', 'K', 'L', 'D', 'E', 'F', 'M', 'N', 'O']


#membangun HMM
hmmbuild = MarkovModel.MarkovModelBuilder(StateAlphabet(), DNAAlphabet())

#transisi dari match state
hmmbuild.allow_transition('M', 'N')
hmmbuild.allow_transition('N', 'O')
hmmbuild.allow_transition('M', 'I')
hmmbuild.allow_transition('N', 'J')
hmmbuild.allow_transition('O', 'K')
hmmbuild.allow_transition('M', 'E')
hmmbuild.allow_transition('N', 'F')

#transisi dari insert state
hmmbuild.allow_transition('L', 'M')
hmmbuild.allow_transition('I', 'N')
hmmbuild.allow_transition('J', 'O')
hmmbuild.allow_transition('I', 'I')