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)
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
#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')
def setUp(self): self.mm_builder = MarkovModel.MarkovModelBuilder( NumberAlphabet(), LetterAlphabet())
def setUp(self): # set up a bogus HMM and our trainer hmm = MarkovModel.HiddenMarkovModel({}, {}, {}, {}, {}) self.test_trainer = Trainer.AbstractTrainer(hmm)
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)
def setUp(self): self.mm_builder = MarkovModel.MarkovModelBuilder( number_alphabet, letter_alphabet)
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')