def test_toCounts(self): """Probs toCounts should return counts object w/ right numbers""" a = Alphabet('abc')**2 m = Probs([0.5, 0.25, 0.25, 0.1, 0.8, 0.1, 0.3, 0.6, 0.1], a) obs = m.toCounts(30) assert isinstance(obs, Counts) exp = Counts([[5., 2.5, 2.5, 1, 8, 1, 3, 6, 1]], a) self.assertEqual(obs, exp)
def test_toProbs(self): """Counts toProbs should return valid prob matrix.""" c = Counts([1, 2, 3, 4, 2, 2, 2, 2, 0.2, 0.4, 0.6, 0.8, 1, 0, 0, 0], RnaPairs) p = c.toProbs() assert isinstance(p, Probs) self.assertEqual(p, Probs([0.1,0.2,0.3,0.4,0.25,0.25,0.25,0.25, \ 0.1,0.2,0.3,0.4,1.0,0.0,0.0,0.0], RnaPairs)) self.assertEqual(p['U', 'U'], 0.1) self.assertEqual(p['G', 'U'], 1.0) self.assertEqual(p['G', 'G'], 0.0)
def test_counts_to_probs(self): """counts_to_probs should skip cases with zero rows""" counts = { (0,1): Counts(array([[0,1],[1,0]]), ABPairs), (1,2): Counts(array([[0,0],[1,0]]), ABPairs), #bad row (0,3): Counts(array([[0,0],[0,0]]), ABPairs), #bad row (0,4): Counts(array([[0.0,0.0],[0.0,0.0]]), ABPairs), #bad row (0,5): Counts(array([[0.1,0.3],[0.0,0.0]]), ABPairs), #bad row (3,4): Counts(array([[0.1,0.3],[0.4,0.1]]), ABPairs), (2,1): Counts(array([[0,5],[1,0]]), ABPairs), } result = counts_to_probs(counts) self.assertEqual(len(result), 3) self.assertFloatEqual(result[(0,1)]._data, array([[0,1],[1,0]])) self.assertFloatEqual(result[(3,4)]._data, \ array([[0.25,0.75],[0.8,0.2]])) self.assertFloatEqual(result[(2,1)]._data, array([[0,1],[1,0]]))