def test_parse(self): """correctly construction""" ag = MotifChange("A", "G") got = parse(str(ag)) self.assertEqual(str(got), "A/G") ts = MotifChange("A", "G") | MotifChange("C", "T") got = parse(str(ts)) self.assertEqual(str(got), "(A/G | C/T)") a_g = MotifChange("A", "G", forward_only=True) t_c = MotifChange("T", "C", forward_only=True) sym = a_g | t_c got = parse(str(sym)) self.assertEqual(str(got), "(A>G | T>C)")
def adapt_predicate(self, pred, label=None): if isinstance(pred, str): pred = predicate.parse(pred) elif isinstance(pred, Callable): pred = predicate.UserPredicate(pred) pred_func = pred.make_model_predicate(self) label = label or repr(pred) mask = predicate2matrix(self.get_alphabet(), pred_func, mask=self._instantaneous_mask) return (label, mask)
def get_predefined_predicates(self): return { "transition": predicate.parse("R/R") | predicate.parse("Y/Y"), "transversion": predicate.parse("R/Y"), "indel": predicate.parse("-/?"), "kappa": (predicate.parse("R/R") | predicate.parse("Y/Y")).aliased("kappa"), }
def get_predefined_predicates(self): codon_preds = _CodonPredicates(self.get_alphabet().get_genetic_code()) preds = _TimeReversibleNucleotide.get_predefined_predicates(self) preds.update( { "indel": predicate.parse("???/---"), "silent": predicate.UserPredicate(codon_preds.silent), "replacement": predicate.UserPredicate(codon_preds.replacement), "omega": predicate.UserPredicate(codon_preds.replacement), } ) return preds
def get_predefined_predicates(self): # overridden in subclasses return {"indel": predicate.parse("-/?")}