def test_all_metrics_weird_input(self): """all_metrics: should work when ref or prediction empty or no seqs""" ref = Pairs([(3, 10)]) pred = Pairs() seqs = ['UACGUAGCUAGCUAGCUACG'] obs = all_metrics(ref, pred, seqs=[seqs], min_dist=4) exp = {'SENSITIVITY':0, 'SELECTIVITY':0,\ 'AC':0, 'CC':0, 'MCC':0} for k in exp: self.assertFloatEqual(obs[k], exp[k]) ref = Pairs() pred = Pairs() seqs = ['UACGUAGCUAGCUAGCUACG'] obs = all_metrics(ref, pred, seqs=[seqs], min_dist=4) exp = {'SENSITIVITY':1, 'SELECTIVITY':1,\ 'AC':1, 'CC':1, 'MCC':1} for k in exp: self.assertFloatEqual(obs[k], exp[k]) ref = Pairs([(3, 10)]) pred = Pairs([(1, 12)]) seqs = ['UACGUAGCUAGCUAGCUACG'] self.assertRaises(ValueError, all_metrics, ref, pred, seqs="",\ min_dist=4)
def test_all_metrics_weird_input(self): """all_metrics: should work when ref or prediction empty or no seqs""" ref = Pairs([(3,10)]) pred = Pairs() seqs = ['UACGUAGCUAGCUAGCUACG'] obs = all_metrics(ref, pred, seqs=[seqs], min_dist=4) exp = {'SENSITIVITY':0, 'SELECTIVITY':0,\ 'AC':0, 'CC':0, 'MCC':0} for k in exp: self.assertFloatEqual(obs[k], exp[k]) ref = Pairs() pred = Pairs() seqs = ['UACGUAGCUAGCUAGCUACG'] obs = all_metrics(ref, pred, seqs=[seqs], min_dist=4) exp = {'SENSITIVITY':1, 'SELECTIVITY':1,\ 'AC':1, 'CC':1, 'MCC':1} for k in exp: self.assertFloatEqual(obs[k], exp[k]) ref = Pairs([(3,10)]) pred = Pairs([(1,12)]) seqs = ['UACGUAGCUAGCUAGCUACG'] self.assertRaises(ValueError, all_metrics, ref, pred, seqs="",\ min_dist=4)
def test_all_metrics(self): """all_metrics: check against compare_ct.pm""" exp = {'SENSITIVITY':0.4, 'SELECTIVITY':0.5, 'AC':0.45,\ 'CC':0.42906394, 'MCC':0.42906394} obs = all_metrics(self.true, self.predicted, seqs=self.seq, min_dist=4) self.assertEqualItems(obs.keys(), exp.keys()) for k in exp: self.assertFloatEqual(obs[k], exp[k])
def test_all_metrics_pseudo(self): """all_metrics: pseudoknot in ref, check against compare_ct.pm""" ref = Pairs([(0, 8), (1, 7), (4, 10)]) pred = Pairs([(0, 8), (3, 6), (4, 10)]) seq = 'GACUGUGUCAU' exp = {'SENSITIVITY':0.6666667, 'SELECTIVITY':0.6666667,\ 'AC':0.6666667, 'CC':0.57575758, 'MCC':0.57575758} obs = all_metrics(ref, pred, seqs=[seq], min_dist=4) self.assertEqualItems(obs.keys(), exp.keys()) for k in exp: self.assertFloatEqual(obs[k], exp[k])
def test_all_metrics_pseudo(self): """all_metrics: pseudoknot in ref, check against compare_ct.pm""" ref = Pairs([(0,8),(1,7),(4,10)]) pred = Pairs([(0,8),(3,6),(4,10)]) seq = 'GACUGUGUCAU' exp = {'SENSITIVITY':0.6666667, 'SELECTIVITY':0.6666667,\ 'AC':0.6666667, 'CC':0.57575758, 'MCC':0.57575758} obs = all_metrics(ref, pred, seqs=[seq], min_dist=4) self.assertEqualItems(obs.keys(), exp.keys()) for k in exp: self.assertFloatEqual(obs[k], exp[k])