Exemple #1
0
 def test_deserialise_likelihood_function(self):
     """correctly deserialise data into likelihood function"""
     # tests multiple alignments
     data = load_aligned_seqs(
         filename=os.path.join(os.getcwd(), "data", "brca1_5.paml")
     )
     half = len(data) // 2
     aln1 = data[:half]
     aln2 = data[half:]
     loci_names = ["1st-half", "2nd-half"]
     loci = [aln1, aln2]
     tree = make_tree(tip_names=data.names)
     model = get_model("HKY85")
     lf = model.make_likelihood_function(tree, loci=loci_names)
     lf.set_alignment(loci)
     lf_rich_dict = lf.to_rich_dict()
     got = deserialise_likelihood_function(lf_rich_dict)
     self.assertEqual(str(lf.defn_for["mprobs"]), str(got.defn_for["mprobs"]))
     self.assertEqual(
         str(lf.defn_for["alignment"].assignments),
         str(got.defn_for["alignment"].assignments),
     )
     # tests single alignment
     model = get_model("HKY85")
     lf = model.make_likelihood_function(tree)
     lf.set_alignment(aln1)
     lf_rich_dict = lf.to_rich_dict()
     got = deserialise_likelihood_function(lf_rich_dict)
     self.assertEqual(str(lf.defn_for["mprobs"]), str(got.defn_for["mprobs"]))
     self.assertEqual(
         str(lf.defn_for["alignment"].assignments),
         str(got.defn_for["alignment"].assignments),
     )
Exemple #2
0
    def lf(self):
        result = list(self.values())
        if type(result[0]) == dict:
            from cogent3.util import deserialise

            # we reset the stat attributes to None
            for attr in self._stat_attrs:
                setattr(self, attr, None)

            for k, v in self.items():
                v = deserialise.deserialise_likelihood_function(v)
                self[k] = v

        if len(self) == 1:
            result = list(self.values())[0]
        else:
            result = OrderedDict()
            for k in sorted(self):
                v = self[k]
                if type(k) == str and k.isdigit():
                    k = int(k)
                result[k] = v

        return result