Skip to content

Commit 1035db3

Browse files
committed
Add unit test for TreeConstructor.DistanceCalculator edge case (#491)
1 parent 9816da0 commit 1035db3

1 file changed

Lines changed: 17 additions & 2 deletions

File tree

‎Tests/test_TreeConstruction.py‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"""Unit tests for the Bio.Phylo.TreeConstruction module."""
77

88
import unittest
9-
# from Bio._py3k import StringIO
9+
from Bio._py3k import StringIO
1010
from Bio import AlignIO
1111
from Bio import Phylo
1212
from Bio.Phylo import BaseTree
@@ -94,7 +94,7 @@ def test_bad_manipulation(self):
9494
class DistanceCalculatorTest(unittest.TestCase):
9595
"""Test DistanceCalculator"""
9696

97-
def test_distance_calculator(self):
97+
def test_known_matrices(self):
9898
aln = AlignIO.read('TreeConstruction/msa.phy', 'phylip')
9999

100100
calculator = DistanceCalculator('identity')
@@ -113,6 +113,21 @@ def test_distance_calculator(self):
113113
dm = calculator.get_distance(aln)
114114
self.assertEqual(dm['Alpha', 'Beta'], 1 - (53 * 1.0 / 84))
115115

116+
def test_nonmatching_seqs(self):
117+
aln = AlignIO.read(
118+
StringIO('\n'.join(
119+
[">Alpha", "A-A--",
120+
">Gamma", "-Y-Y-"])),
121+
"fasta")
122+
# With a proper scoring matrix -- no matches
123+
dmat = DistanceCalculator('blosum62').get_distance(aln)
124+
self.assertEqual(dmat['Alpha', 'Alpha'], 0.)
125+
self.assertEqual(dmat['Alpha', 'Gamma'], 1.)
126+
# Comparing characters only -- 4 misses, 1 match
127+
dmat = DistanceCalculator().get_distance(aln)
128+
self.assertEqual(dmat['Alpha', 'Alpha'], 0.)
129+
self.assertAlmostEqual(dmat['Alpha', 'Gamma'], 4./5.)
130+
116131

117132
class DistanceTreeConstructorTest(unittest.TestCase):
118133
"""Test DistanceTreeConstructor"""

0 commit comments

Comments
 (0)