Esempio n. 1
0
 def test_different_lengths(self):
     events = [msprime.PopulationParametersChange(time=1, initial_size=1)
               ] * 10
     self.assertFalse(models.demographic_events_equal(events[:1], [], 1))
     self.assertFalse(models.demographic_events_equal([], events[:1], 1))
     self.assertFalse(models.demographic_events_equal(events, [], 1))
     self.assertFalse(models.demographic_events_equal([], events, 1))
Esempio n. 2
0
 def test_different_types(self):
     events = [
         msprime.PopulationParametersChange(time=1, initial_size=1),
         msprime.MigrationRateChange(time=1, rate=1),
         msprime.MassMigration(time=1, source=1),
         msprime.SimpleBottleneck(time=1)
     ]
     for a, b in itertools.combinations(events, 2):
         self.assertFalse(models.demographic_events_equal([a], [b], 1))
         self.assertFalse(models.demographic_events_equal([b], [a], 1))
         self.assertTrue(models.demographic_events_equal([a], [a], 1))
         self.assertTrue(models.demographic_events_equal([b], [b], 1))
Esempio n. 3
0
 def test_different_times(self):
     n = 10
     e1 = [
         msprime.PopulationParametersChange(time=j, initial_size=1)
         for j in range(n)]
     e2 = [
         msprime.PopulationParametersChange(time=j + 1, initial_size=1)
         for j in range(n)]
     for j in range(1, n):
         self.assertFalse(models.demographic_events_equal(e1[:j], e2[:j], 1))
         self.assertFalse(models.demographic_events_equal(e2[:j], e1[:j], 1))
         with self.assertRaises(models.UnequalModelsError):
             models.verify_demographic_events_equal(e1[:j], e2[:j], 1)
         with self.assertRaises(models.UnequalModelsError):
             models.verify_demographic_events_equal(e2[:j], e1[:j], 1)
Esempio n. 4
0
    def test_simple_bottleneck(self):
        def f(time=1, population=1, proportion=1):
            return msprime.SimpleBottleneck(time=time,
                                            population=population,
                                            proportion=proportion)

        test_events = [
            (f(time=1), f(time=2)),
            (f(population=1), f(population=2)),
            (f(proportion=1), f(proportion=0.2)),
        ]
        for a, b in test_events:
            self.assertFalse(models.demographic_events_equal([a], [b], 1))
            self.assertFalse(models.demographic_events_equal([b], [a], 1))
            self.assertTrue(models.demographic_events_equal([a], [a], 1))
            self.assertTrue(models.demographic_events_equal([b], [b], 1))
Esempio n. 5
0
    def test_migration_rate_change(self):
        def f(time=1, rate=1, matrix_index=None):
            return msprime.MigrationRateChange(time=time,
                                               rate=rate,
                                               matrix_index=matrix_index)

        test_events = [
            (f(time=1), f(time=2)),
            (f(rate=1), f(rate=2)),
            (f(matrix_index=[0, 1]), f(matrix_index=[0, 2])),
            (f(matrix_index=np.array([0, 1])), f(matrix_index=[0, 2])),
        ]
        for a, b in test_events:
            self.assertFalse(models.demographic_events_equal([a], [b], 1))
            self.assertFalse(models.demographic_events_equal([b], [a], 1))
            self.assertTrue(models.demographic_events_equal([a], [a], 1))
            self.assertTrue(models.demographic_events_equal([b], [b], 1))
Esempio n. 6
0
    def test_mass_migration(self):
        def f(time=1, source=1, dest=1, proportion=1):
            return msprime.MassMigration(time=time,
                                         source=source,
                                         dest=dest,
                                         proportion=proportion)

        test_events = [
            (f(time=1), f(time=2)),
            (f(source=1), f(source=2)),
            (f(dest=1), f(dest=2)),
            (f(proportion=1), f(proportion=0.2)),
        ]
        for a, b in test_events:
            self.assertFalse(models.demographic_events_equal([a], [b], 1))
            self.assertFalse(models.demographic_events_equal([b], [a], 1))
            self.assertTrue(models.demographic_events_equal([a], [a], 1))
            self.assertTrue(models.demographic_events_equal([b], [b], 1))
Esempio n. 7
0
    def test_population_parameters_change(self):
        def f(time=1, initial_size=1, growth_rate=None, population=None):
            return msprime.PopulationParametersChange(
                time=time,
                initial_size=initial_size,
                growth_rate=growth_rate,
                population=population)

        test_events = [
            (f(time=1), f(time=2)),
            (f(initial_size=1), f(initial_size=2)),
            (f(growth_rate=1), f(growth_rate=2)),
            (f(population=1), f(population=2)),
        ]
        for a, b in test_events:
            self.assertFalse(models.demographic_events_equal([a], [b], 1))
            self.assertFalse(models.demographic_events_equal([b], [a], 1))
            self.assertTrue(models.demographic_events_equal([a], [a], 1))
            self.assertTrue(models.demographic_events_equal([b], [b], 1))
Esempio n. 8
0
 def test_empty(self):
     self.assertTrue(models.demographic_events_equal([], [], 1))