예제 #1
0
 def test_reload_annotate(self):
     """
     Test the ability of SLiM to load our files after annotation.
     """
     for ts, basename in self.get_slim_restarts():
         tables = ts.tables
         metadata = list(pyslim.extract_mutation_metadata(tables))
         has_nucleotides = (metadata[0][0].nucleotide >= 0)
         if has_nucleotides:
             nucs = [random.choice([0, 1, 2, 3]) for _ in metadata]
             refseq = "".join(
                 random.choices(pyslim.NUCLEOTIDES,
                                k=int(ts.sequence_length)))
             for n, md in zip(nucs, metadata):
                 for j in range(len(md)):
                     md[j].nucleotide = n
         else:
             refseq = None
         for md in metadata:
             for j in range(len(md)):
                 md[j].selection_coeff = random.random()
         pyslim.annotate_mutation_metadata(tables, metadata)
         in_ts = pyslim.load_tables(tables, reference_sequence=refseq)
         # put it through SLiM (which just reads in and writes out)
         out_ts = self.run_slim_restart(in_ts, basename)
         # check for equality, in everything but the last provenance
         self.verify_slim_restart_equality(in_ts, out_ts)
예제 #2
0
    def test_annotate_mutations(self):
        for ts in self.get_slim_examples():
            tables = ts.tables
            new_tables = ts.tables
            metadata = []
            for md in tskit.unpack_bytes(tables.mutations.metadata,
                                         tables.mutations.metadata_offset):
                dm = pyslim.decode_mutation(md)
                edm = pyslim.encode_mutation(dm)
                self.assertEqual(md, edm)
                metadata.append(dm)

            pyslim.annotate_mutation_metadata(new_tables, metadata)
            self.assertEqual(tables, new_tables)
예제 #3
0
 def test_annotate_mutations(self):
     for ts in get_msprime_examples():
         slim_ts = pyslim.annotate_defaults(ts, model_type="nonWF", slim_generation=1)
         tables = slim_ts.tables
         metadata = list(pyslim.extract_mutation_metadata(tables))
         self.assertEqual(len(metadata), slim_ts.num_mutations)
         selcoefs = [random.uniform(0, 1) for _ in metadata]
         for j in range(len(metadata)):
             metadata[j].selection_coeff = selcoefs[j]
         pyslim.annotate_mutation_metadata(tables, metadata)
         new_ts = pyslim.load_tables(tables)
         for j, x in enumerate(new_ts.mutations()):
             md = pyslim.decode_mutation(x.metadata)
             self.assertEqual(md.selection_coeff, selcoefs[j])