def test_simplify_to_sample(self): """ Simplify to a sample using fwdpy11 and tskit, then test that total time on output is the same from both sources and that the mutation tables contain the same positions after simplification. """ dumped_ts = self.pop.dump_tables_to_tskit() tt = 0.0 for i in self.pop.tables.nodes: tt += i.time samples = np.arange(0, 2 * self.pop.N, 50, dtype=np.int32) mspts = dumped_ts.simplify(samples=samples.tolist()) fp11ts, idmap = fwdpy11.simplify(self.pop, samples) for i in range(len(fp11ts.edges)): self.assertTrue(fp11ts.edges[i].parent < len(fp11ts.nodes)) self.assertTrue(fp11ts.edges[i].child < len(fp11ts.nodes)) for s in samples: self.assertEqual(fp11ts.nodes[idmap[s]].time, self.pop.generation) tt_fwd = 0.0 tv = fwdpy11.TreeIterator(fp11ts, [i for i in range(len(samples))]) for t in tv: tt_fwd += t.total_time(fp11ts.nodes) tt_tskit = 0.0 for t in mspts.trees(): tt_tskit += t.get_total_branch_length() self.assertEqual(tt_fwd, tt_tskit) self.assertEqual(len(fp11ts.mutations), len(mspts.tables.mutations)) fp11_pos = np.array( [self.pop.mutations[i.key].pos for i in fp11ts.mutations]) fp11_pos = np.sort(fp11_pos) msp_pos = np.sort(mspts.tables.sites.position) self.assertTrue(np.array_equal(fp11_pos, msp_pos))
def test_simplify_numpy_array(self): tables, idmap = fwdpy11.simplify(self.pop, np.array([i for i in range(10)])) for i in range(10): self.assertTrue(idmap[i] != fwdpy11.NULL_NODE)
def test_simplify(self): tables, idmap = fwdpy11.simplify(self.pop, [i for i in range(10)]) for i in range(10): self.assertTrue(idmap[i] != fwdpy11.NULL_NODE)