Example #1
0
 def test_logm_taylor(self):
     """logm_taylor should return same result as logm"""
     q_eig = logm([[ 0.86758487,  0.05575623,  0.0196798 ,  0.0569791 ],
                    [ 0.01827347,  0.93312148,  0.02109664,  0.02750842],
                    [ 0.04782582,  0.1375742 ,  0.80046869,  0.01413129],
                    [ 0.23022035,  0.22306947,  0.06995306,  0.47675713]])
     q_taylor = logm_taylor([[0.86758487, 0.05575623, 0.0196798, 0.0569791],
               [ 0.01827347,  0.93312148,  0.02109664,  0.02750842],
               [ 0.04782582,  0.1375742 ,  0.80046869,  0.01413129],
               [ 0.23022035,  0.22306947,  0.06995306,  0.47675713]])
     self.assertFloatEqual(q_taylor, q_eig)
Example #2
0
 def test_toRates(self):
     """Probs toRates should return log of probs, optionally normalized"""
     a = Alphabet('abc')**2
     p = Probs([0.9,0.05,0.05,0.1,0.85,0.05,0.02,0.02,0.96], a)
     assert p.isValid()
     r = p.toRates()
     assert isinstance(r, Rates)
     assert r.isValid()
     assert not r.isComplex()
     self.assertEqual(r._data, logm(p._data))
     r_norm = p.toRates(normalize=True)
     self.assertFloatEqual(trace(r_norm._data), -1.0)
Example #3
0
 def test_toRates(self):
     """Probs toRates should return log of probs, optionally normalized"""
     a = Alphabet('abc')**2
     p = Probs([0.9, 0.05, 0.05, 0.1, 0.85, 0.05, 0.02, 0.02, 0.96], a)
     assert p.isValid()
     r = p.toRates()
     assert isinstance(r, Rates)
     assert r.isValid()
     assert not r.isComplex()
     self.assertEqual(r._data, logm(p._data))
     r_norm = p.toRates(normalize=True)
     self.assertFloatEqual(trace(r_norm._data), -1.0)
Example #4
0
    def test_logm(self):
        """logm results should match scipy's"""
        p = array([[ 0.86758487,  0.05575623,  0.0196798 ,  0.0569791 ],
       [ 0.01827347,  0.93312148,  0.02109664,  0.02750842],
       [ 0.04782582,  0.1375742 ,  0.80046869,  0.01413129],
       [ 0.23022035,  0.22306947,  0.06995306,  0.47675713]])

        q = logm(p)
        self.assertFloatEqual(q, \
        array([[-0.15572053,  0.04947485,  0.01918653,  0.08705915],
       [ 0.01405019, -0.07652296,  0.02252941,  0.03994336],
       [ 0.05365208,  0.15569116, -0.22588966,  0.01654642],
       [ 0.35144866,  0.31279003,  0.10478999, -0.76902868]]))
Example #5
0
 def test_toProbs(self):
     """Rates toProbs should return correct probability matrix"""
     a = self.abc_pairs
     p = Probs([0.75, 0.1, 0.15, 0.2, 0.7, 0.1, 0.05, 0.1, 0.85], a)
     q = p.toRates()
     self.assertEqual(q._data, logm(p._data))
     p2 = q.toProbs()
     self.assertFloatEqual(p2._data, p._data)
     
     #test a case that didn't work for DNA
     q = Rates(array(
         [[-0.64098451,  0.0217681 ,  0.35576469,  0.26345171],
          [ 0.31144238, -0.90915091,  0.25825858,  0.33944995],
          [ 0.01578521,  0.43162879, -0.99257581,  0.54516182],
          [ 0.13229986,  0.04027147,  0.05817791, -0.23074925]]),
         DnaPairs)
     self.assertFloatEqual(q.toProbs(0.5)._data, expm(q._data)(t=0.5))
Example #6
0
    def test_toProbs(self):
        """Rates toProbs should return correct probability matrix"""
        a = self.abc_pairs
        p = Probs([0.75, 0.1, 0.15, 0.2, 0.7, 0.1, 0.05, 0.1, 0.85], a)
        q = p.toRates()
        self.assertEqual(q._data, logm(p._data))
        p2 = q.toProbs()
        self.assertFloatEqual(p2._data, p._data)

        #test a case that didn't work for DNA
        q = Rates(
            array([[-0.64098451, 0.0217681, 0.35576469, 0.26345171],
                   [0.31144238, -0.90915091, 0.25825858, 0.33944995],
                   [0.01578521, 0.43162879, -0.99257581, 0.54516182],
                   [0.13229986, 0.04027147, 0.05817791, -0.23074925]]),
            DnaPairs)
        self.assertFloatEqual(q.toProbs(0.5)._data, expm(q._data)(t=0.5))
Example #7
0
 def toRates(self, normalize=False):
     """Returns rate matrix. Does not normalize by default."""
     return Rates(logm(self._data), self.Alphabet, self.Name, normalize)
Example #8
0
 def toRates(self, normalize=False):
     """Returns rate matrix. Does not normalize by default."""
     return Rates(logm(self._data), self.Alphabet, self.Name, normalize)