def __test(self, hmm, seq): hmm = create_hmm('inputs/' + hmm + '.hmm') seq = create_seq('inputs/' + seq + '.seq') xseq = ZipSequence.from_sequence(seq, hmm.state_count) expect = seq_to_string(seq) actual = seq_to_string(xseq.iterate_original_sequence()) self.assertEqual(expect, actual)
def test_from_sequence(self): hmm = create_hmm("inputs/test0.hmm") seq = create_seq("inputs/test0.seq") xseq = ZipSequence.from_sequence(seq, hmm.state_count) self.assertEqual('0 1 4 4', seq_to_string(xseq)) self.assertEqual(5, xseq.alphabet_size) self.assertEqual(3, xseq.extended_alphabet_size) self.assertEqual(2, xseq.original_alphabet_size) self.assertEqual(2, xseq.state_count) self.assertEqual((3, 3), xseq.get_substitute(4)) self.assertEqual((2, 2), xseq.get_substitute(3)) self.assertEqual((0, 1), xseq.get_substitute(2)) self.assertIsNone(xseq.get_substitute(1)) self.assertEqual('0 1 2 3 4', seq_to_string(xseq.iterate_alphabet())) self.assertEqual('2 3 4', seq_to_string(xseq.iterate_extended_alphabet())) self.assertEqual('0 1', seq_to_string(xseq.iterate_original_alphabet())) self.assertEqual('0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1', seq_to_string(xseq.iterate_original_sequence())) self.assertEqual( '2 0 1 ; 3 2 2 ; 4 3 3', ' ; '.join( map(lambda (a, (b, c)): ' '.join(map(str, [a, b, c])), xseq.iterate_substitutes())))
def __test(self, hmm_name, seq_name, expected_value): def fix(n, digits=4): if n is None: return None fmt = '{0:.' + str(digits) + 'f}' return fmt.format(round(n, digits)) hmm = create_hmm('inputs/' + hmm_name + '.hmm') seq = create_seq('inputs/' + seq_name + '.seq') actual_value = _mann.evaluate(hmm, seq) self.assertEqual(fix(expected_value), fix(actual_value))
def __test(self, hmm_name, seq_name, expected_value): def fix(n, digits=4): if n is None: return None fmt = '{0:.' + str(digits) + 'f}' return fmt.format(round(n, digits)) hmm = create_hmm('inputs/' + hmm_name + '.hmm') seq = create_seq('inputs/' + seq_name + '.seq') xseq = ZipSequence.from_sequence(seq, hmm.state_count) actual_value = compute_lle(hmm, xseq) self.assertEqual(fix(expected_value), fix(actual_value))
def test_save(self): hmm = create_hmm('inputs/test2.hmm') with TempDirectory() as temp: hmm_path = os.path.join(temp.path, 'file.hmm') hmm.save(hmm_path) with open(hmm_path, 'r') as factual: actual = factual.read().strip() with open(locate('inputs/test2.hmm')) as fexpect: expect = fexpect.read().strip() self.assertEqual(expect, actual)
def __test(self, hmm_name, seq_name, expected_value): def compute_lle(hmm, seq): le = _rabiner.evaluate(hmm, seq) return None if le == 0.0 else math.log(le) def fix(n, digits=4): if n is None: return None fmt = '{0:.' + str(digits) + 'f}' return fmt.format(round(n, digits)) hmm = create_hmm('inputs/' + hmm_name + '.hmm') seq = create_seq('inputs/' + seq_name + '.seq') actual_value = compute_lle(hmm, seq) self.assertEqual(fix(expected_value), fix(actual_value))
def test_from_sequence(self): hmm = create_hmm("inputs/test0.hmm") seq = create_seq("inputs/test0.seq") xseq = ZipSequence.from_sequence(seq, hmm.state_count) self.assertEqual('0 1 4 4', seq_to_string(xseq)) self.assertEqual(5, xseq.alphabet_size) self.assertEqual(3, xseq.extended_alphabet_size) self.assertEqual(2, xseq.original_alphabet_size) self.assertEqual(2, xseq.state_count) self.assertEqual((3, 3), xseq.get_substitute(4)) self.assertEqual((2, 2), xseq.get_substitute(3)) self.assertEqual((0, 1), xseq.get_substitute(2)) self.assertIsNone(xseq.get_substitute(1)) self.assertEqual( '0 1 2 3 4', seq_to_string(xseq.iterate_alphabet())) self.assertEqual( '2 3 4', seq_to_string(xseq.iterate_extended_alphabet())) self.assertEqual( '0 1', seq_to_string(xseq.iterate_original_alphabet())) self.assertEqual( '0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1', seq_to_string(xseq.iterate_original_sequence())) self.assertEqual( '2 0 1 ; 3 2 2 ; 4 3 3', ' ; '.join(map(lambda (a, (b, c)): ' '.join( map(str, [a, b, c])), xseq.iterate_substitutes())))