def test_isValid(self): """Probs isValid should return True if it's a prob matrix""" a = self.ab_pairs m = Probs([0.5,0.5,1,0], a) self.assertEqual(m.isValid(), True) #fails if don't sum to 1 m = Probs([0.5, 0, 1, 0], a) self.assertEqual(m.isValid(), False) #fails if negative elements m = Probs([1, -1, 0, 1], a) self.assertEqual(m.isValid(), False)
def test_isValid(self): """Probs isValid should return True if it's a prob matrix""" a = self.ab_pairs m = Probs([0.5, 0.5, 1, 0], a) self.assertEqual(m.isValid(), True) #fails if don't sum to 1 m = Probs([0.5, 0, 1, 0], a) self.assertEqual(m.isValid(), False) #fails if negative elements m = Probs([1, -1, 0, 1], a) self.assertEqual(m.isValid(), False)
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)
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)