예제 #1
0
 def test_single_slice(self):
     dm = fwdpy11.DataMatrixIterator(self.pop.tables, self.all_samples,
                                     [(0.1, 0.2)], True, True)
     dm = next(dm)
     rows = np.where((self.spos >= 0.1) & (self.spos < 0.2))[0]
     pos_slice = self.spos[rows]
     selected_slice = self.selected[rows, ]
     self.assertTrue(np.array_equal(dm.selected_positions, pos_slice))
     self.assertTrue(np.array_equal(dm.selected, selected_slice))
예제 #2
0
 def test_nested_slices(self):
     slices = [(0.1, 0.2), (0.15, 0.19), (0.21, 0.37), (0.38, 0.5337),
               (0.39, 0.432), (0.5, 0.55)]
     dmi = fwdpy11.DataMatrixIterator(self.pop.tables, self.all_samples,
                                      slices, True, True)
     for r, dm in zip(slices, dmi):
         rows = np.where((self.spos >= r[0]) & (self.spos < r[1]))[0]
         pos_slice = self.spos[rows]
         selected_slice = self.selected[rows, ]
         self.assertTrue(np.array_equal(dm.selected_positions, pos_slice))
         self.assertTrue(np.array_equal(dm.selected, selected_slice))
예제 #3
0
 def test_nonoverlapping_slices(self):
     slices = [(0.1, 0.2), (0.21, 0.37), (0.5, 0.55)]
     dmi = fwdpy11.DataMatrixIterator(self.pop.tables, self.all_samples,
                                      slices, True, True)
     niterations = 0
     for r, dm in zip(slices, dmi):
         niterations += 1
         rows = np.where((self.spos >= r[0]) & (self.spos < r[1]))[0]
         pos_slice = self.spos[rows]
         selected_slice = self.selected[rows, ]
         self.assertTrue(np.array_equal(dm.selected_positions, pos_slice))
         self.assertTrue(np.array_equal(dm.selected, selected_slice))
     self.assertEqual(niterations, len(slices))
예제 #4
0
 def test_entire_matrix(self):
     dmi = fwdpy11.DataMatrixIterator(self.pop.tables, self.all_samples,
                                      [(0, 1)], True, True)
     niterations = 0
     for dm in dmi:
         niterations += 1
         for i in dm.selected_keys:
             self.assertFalse(self.pop.mutations[i].neutral)
         self.assertTrue(
             np.array_equal(np.array(self.dm.selected_keys),
                            dm.selected_keys))
         self.assertTrue(np.array_equal(dm.neutral, self.neutral))
         self.assertTrue(np.array_equal(dm.selected, self.selected))
     self.assertEqual(niterations, 1)
예제 #5
0
def get_stats(tables, samples):
    tables_for_sample, idmap = fwdpy11.simplify_tables(tables, samples)
    stats = []
    for k, l in zip(enumerate(fwdpy11.DataMatrixIterator(tables_for_sample,
                                                         idmap[samples],
                                                         WINDOWS, True, True)),
                    WINDOW_LEFTS):
        i, dm = k
        locus = int(i*STEPSIZE / LOCUS_LENGTH)
        window = i % (LOCUS_LENGTH/STEPSIZE)
        window_in_paper = int(window*STEPSIZE)
        pos, data = merge_matrix(dm)
        vm = libsequence.VariantMatrix(data, pos)
        ac = vm.count_alleles()
        pi = libsequence.thetapi(ac)
        D = libsequence.tajd(ac)
        Hp = libsequence.hprime(ac, 0)
        nhaps = libsequence.number_of_haplotypes(vm)
        hdiv = libsequence.haplotype_diversity(vm)
        stats.append(Datum(l, locus, window, window_in_paper, pi, D, Hp, nhaps, hdiv))

    return stats