Ejemplo n.º 1
0
 def test_iter(self):
     """PairMatrix __iter__ should iterate over rows."""
     p = self.ab_pairs
     c = PairMatrix([1, 2, 3, 4], p)
     l = list(c)
     self.assertEqual(len(l), 2)
     self.assertEqual(list(l[0]), [1, 2])
     self.assertEqual(list(l[1]), [3, 4])
Ejemplo n.º 2
0
    def test_getitem(self):
        """PairMatrix __getitem__ should translate indices and get from array"""
        n = self.named
        self.assertEqual(n['a'], array([1, 2]))
        self.assertEqual(n['b'], array([3, 4]))
        self.assertEqual(n['a', 'a'], 1)
        self.assertEqual(n['a', 'b'], 2)
        self.assertEqual(n['b', 'a'], 3)
        self.assertEqual(n['b', 'b'], 4)

        #WARNING: m[a][b] doesn't work b/c indices not translated!
        #must access as m[a,b] instead.
        filterwarnings("ignore", "using a non-integer")
        try:
            x = n['a']['b']
        except (ValueError, IndexError):
            pass

        #should work even if SubAlphabets not the same
        a = Alphabet('ab')
        x = Alphabet('xyz')
        j = a * x
        m = PairMatrix([1, 2, 3, 4, 5, 6], j)
        self.assertEqual(m['a', 'x'], 1)
        self.assertEqual(m['a', 'y'], 2)
        self.assertEqual(m['a', 'z'], 3)
        self.assertEqual(m['b', 'x'], 4)
        self.assertEqual(m['b', 'y'], 5)
        self.assertEqual(m['b', 'z'], 6)

        #should work even if SubAlphabets are different types
        a = Alphabet([1, 2, 3])
        b = Alphabet(['abc', 'xyz'])
        j = a * b
        m = PairMatrix([1, 2, 3, 4, 5, 6], j)
        self.assertEqual(m[1, 'abc'], 1)
        self.assertEqual(m[1, 'xyz'], 2)
        self.assertEqual(m[2, 'abc'], 3)
        self.assertEqual(m[2, 'xyz'], 4)
        self.assertEqual(m[3, 'abc'], 5)
        self.assertEqual(m[3, 'xyz'], 6)
        self.assertEqual(list(m[2]), [3, 4])
        #gives KeyError if single item not present in first level
        self.assertRaises(KeyError, m.__getitem__, 'x')
Ejemplo n.º 3
0
 def test_init(self):
     """PairMatrix init requires data and alphabet"""
     #should only care about number of elements, not shape
     p = PairMatrix([1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8],
                    RnaPairs)
     assert p.Alphabet is RnaPairs
     self.assertEqual(len(p._data), 4)
     self.assertEqual(len(p._data.flat), 16)
     self.assertEqual(p._data[0], array([1, 2, 3, 4]))
     self.assertEqual(p._data[1], array([5, 6, 7, 8]))
Ejemplo n.º 4
0
    def test_ne(self):
        """PairMatrix test for inequality should check all elements"""
        p = self.ab_pairs
        a = PairMatrix.empty(p)
        b = PairMatrix.empty(p)
        c = PairMatrix([1, 2, 3, 4], p)
        d = PairMatrix([1, 2, 3, 4], p)
        assert a != c
        assert a == b
        assert c == d

        #Note: still compare equal if alphabets are different
        x = Alphabet('xy')
        x = x * x
        y = PairMatrix([1, 2, 3, 4], x)
        assert y == c
        #should check all elements, not just first
        c = PairMatrix([1, 1, 1, 1], p)
        d = PairMatrix([1, 1, 1, 4], p)
        assert c != d
Ejemplo n.º 5
0
 def test_eq(self):
     """Pairmatrix test for equality should check all elements"""
     p = self.ab_pairs
     a = PairMatrix.empty(p)
     b = PairMatrix.empty(p)
     assert a is not b
     self.assertEqual(a, b)
     c = PairMatrix([1, 2, 3, 4], p)
     d = PairMatrix([1, 2, 3, 4], p)
     assert c is not d
     self.assertEqual(c, d)
     self.assertNotEqual(a, c)
     #Note: still compare equal if alphabets are different
     x = Alphabet('xy')
     x = x * x
     y = PairMatrix([1, 2, 3, 4], x)
     self.assertEqual(y, c)
     #should check all elements, not just first
     c = PairMatrix([1, 1, 1, 1], p)
     d = PairMatrix([1, 1, 1, 4], p)
     assert c is not d
     self.assertNotEqual(c, d)
Ejemplo n.º 6
0
 def test_len(self):
     """PairMatrix __len__ should return number of rows"""
     p = self.ab_pairs
     c = PairMatrix([1, 2, 3, 4], p)
     self.assertEqual(len(c), 2)
Ejemplo n.º 7
0
 def setUp(self):
     """Define standard alphabet and matrices for tests."""
     self.ab = Alphabet('ab')
     self.ab_pairs = self.ab * self.ab
     self.empty = PairMatrix([0, 0, 0, 0], self.ab_pairs)
     self.named = PairMatrix([[1, 2], [3, 4]], self.ab_pairs, 'name')