def test_annotation(self): #load the hmm hmm = hmmfile.read('tests/data/valid.hmm') s1 = SeqIO.read('tests/data/PPR10.gb', 'genbank') s1.features = [] s2 = SeqIO.read('tests/data/PPR10.gb', 'genbank') s2.features = [] s2.seq = s2.seq.reverse_complement() h1 = HMMER.hmmsearch(hmm, s1) h2 = HMMER.hmmsearch(hmm, s2) h1.annotate(s1) h2.annotate(s2) for (f1, f2) in zip(s1.features, s2.features): self.assertEqual(str(f1.extract(s1.seq)), str(f2.extract(s2.seq)))
def test_build(self): #Should be case insensitive hmm = hmmfile.HMM(alphabet='DnA') #build the HMM for i in build_data: hmm.addState(**i) hmm.clean() #there are the correct number of states self.assertEqual(len(hmm.states), len(build_data), "{} states built - should be {}".format(len(hmm.states), len(build_data))) s = StringIO() hmmfile.write(hmm, s) s.seek(0) hmm2 = hmmfile.read(s)[0] for o in hmmfile.OPTIONS: if hasattr(hmm, o): self.assertEqual(getattr(hmm, o), getattr(hmm2, o)) def r(l): ret = [] for i in l: if type(i) == float: ret.append(round(i,5)) else: ret.append(i) return ret for i,(e,g) in enumerate(zip(hmm.states, hmm2.states)): msg = "State {}: {} != {}" self.assertEqual(r(e.me), g.me, msg.format(i,e.me,g.me)) self.assertEqual(r(e.ie), g.ie, msg.format(i,e.ie,g.ie)) self.assertEqual(r(e.tr), g.tr, msg.format(i,e.tr,g.tr)) self.assertEqual(e.map,g.map, msg.format(i,e.map,g.map)) self.assertEqual(e.rf, g.rf, msg.format(i,e.rf,g.rf)) self.assertEqual(e.cs, g.cs, msg.format(i,e.cs,g.cs))
def get_tail_models(): return (hmmfile.read(os.path.join(HMMDir, 'E.hmm'))[0], hmmfile.read(os.path.join(HMMDir, 'E+.hmm'))[0], hmmfile.read(os.path.join(HMMDir, 'DYW.hmm'))[0])
def loadmodels(): """Load all the models from a file""" modelfiles = [ os.path.join(HMMDir, "PPR_{}.hmm".format(i)) for i in range(4)] return [hmmfile.read(f)[0] for f in modelfiles]
def loadmodels(): """Load all the models from a file""" modelfiles = [ os.path.join(HMMDir, "PPR_{}.hmm".format(i)) for i in range(4) ] return [hmmfile.read(f)[0] for f in modelfiles]