def test_type_mismatch(self): seq1 = Sequence('ABC') seq2 = DNA('ACG') with self.assertRaisesRegex(TypeError, r'Sequence.*does not match.*DNA'): hamming(seq1, seq2)
def test_type_mismatch(self): seq1 = Sequence('ABC') seq2 = DNA('ACG') with self.assertRaisesRegex(TypeError, 'Sequence.*does not match.*DNA'): hamming(seq1, seq2)
def test_non_sequence(self): seq1 = Sequence('abc') seq2 = 'abc' with self.assertRaisesRegex(TypeError, r'seq1.*seq2.*Sequence.*str'): hamming(seq1, seq2) with self.assertRaisesRegex(TypeError, r'seq1.*seq2.*Sequence.*str'): hamming(seq2, seq1)
def test_non_sequence(self): seq1 = Sequence('abc') seq2 = 'abc' with self.assertRaisesRegex(TypeError, 'seq1.*seq2.*Sequence.*str'): hamming(seq1, seq2) with self.assertRaisesRegex(TypeError, 'seq1.*seq2.*Sequence.*str'): hamming(seq2, seq1)
def test_maximum_distance(self): seq1 = Sequence('ABC') seq2 = Sequence('CAB') distance = hamming(seq1, seq2) self.assertEqual(distance, 1.0)
def test_sequence_subclass(self): seq1 = DNA('ACG-T') seq2 = DNA('ACCTT') distance = hamming(seq1, seq2) self.assertEqual(distance, 2.0/5.0)
def test_empty_sequences(self): seq1 = Sequence('') seq2 = Sequence('') distance = hamming(seq1, seq2) npt.assert_equal(distance, np.nan)
def test_mid_range_distance(self): seq1 = Sequence("abcdefgh") seq2 = Sequence("1b23ef45") distance = hamming(seq1, seq2) self.assertEqual(distance, 5.0/8.0)
def test_sequence_subclass(self): seq1 = DNA('ACG-T') seq2 = DNA('ACCTT') distance = hamming(seq1, seq2) self.assertEqual(distance, 2.0 / 5.0)
def test_mid_range_distance(self): seq1 = Sequence("abcdefgh") seq2 = Sequence("1b23ef45") distance = hamming(seq1, seq2) self.assertEqual(distance, 5.0 / 8.0)
def p_distance(seq1, seq2): '''Modified hamming distance to include only non-gap sites''' from skbio.sequence import Sequence from numpy import isnan myseq1 = str(seq1) myseq2 = str(seq2) degapped1 = [] degapped2 = [] for i in range(len(myseq1)): if myseq1[i] != "-": if myseq2[i] != "-": degapped1.append(myseq1[i]) degapped2.append(myseq2[i]) degapped1 = "".join(degapped1) degapped2 = "".join(degapped2) #sys.stderr.write(degapped1) #sys.stderr.write(degapped2) hamming_dist = hamming(Sequence(degapped1), Sequence(degapped2)) #sys.stderr.write(hamming_dist) if isnan(hamming_dist): #sys.stderr.write(seq1.metadata["id"], seq2.metadata["id"]) return 0.0 else: return hamming_dist
def test_return_type(self): seq1 = Sequence('ABC') seq2 = Sequence('ABC') distance = hamming(seq1, seq2) self.assertIsInstance(distance, float) self.assertEqual(distance, 0.0)
def test_sequences_with_metadata(self): # test for #1254 seqs1 = [ Sequence("ACGT"), Sequence("ACGT", metadata={'id': 'abc'}), Sequence("ACGT", positional_metadata={'qual': range(4)}) ] seqs2 = [ Sequence("AAAA"), Sequence("AAAA", metadata={'id': 'def'}), Sequence("AAAA", positional_metadata={'qual': range(4, 8)}) ] for seqs in seqs1, seqs2: for seq1, seq2 in itertools.product(seqs, repeat=2): distance = hamming(seq1, seq2) self.assertEqual(distance, 0.0) for seq1, seq2 in itertools.product(seqs1, seqs2): distance = hamming(seq1, seq2) self.assertEqual(distance, 0.75)
def calculateHammingDistance(seq1, seq2): """Returns hamming distance between two equal length sequences""" seq1 = Sequence(seq1) seq2 = Sequence(seq2) result = hamming(seq1, seq2) return result
def test_length_mismatch(self): seq1 = Sequence('ABC') seq2 = Sequence('ABCD') with self.assertRaisesRegex(ValueError, 'equal length.*3 != 4'): hamming(seq1, seq2)
def test_single_character_sequences(self): seq1 = Sequence('a') seq2 = Sequence('b') self.assertEqual(hamming(seq1, seq1), 0.0) self.assertEqual(hamming(seq1, seq2), 1.0)
def test_length_mismatch(self): seq1 = Sequence('ABC') seq2 = Sequence('ABCD') with self.assertRaisesRegex(ValueError, r'equal length.*3 != 4'): hamming(seq1, seq2)