Example #1
0
 def test_reason_for_model_citations(self):
     for model in stdpopsim.all_demographic_models():
         for citation in model.citations:
             assert len(citation.reasons) > 0, (
                 f"No reason given for '{citation.author}' citation "
                 f"in model {model.id}"
             )
Example #2
0
 def test_population_config_order_equal(self):
     for model in stdpopsim.all_demographic_models():
         pop_ids = [pop.id for pop in model.populations]
         config_ids = [
             config.metadata["id"] for config in model.population_configurations]
         for p, c in zip(pop_ids, config_ids):
             self.assertEqual(p, c)
Example #3
0
 def test_population_order(self):
     for model in stdpopsim.all_demographic_models():
         allow_sample_status = [
             int(p.allow_samples) for p in model.populations
         ]
         num_sampling = sum(allow_sample_status)
         # All sampling populations must be at the start of the list
         self.assertEqual(sum(allow_sample_status[num_sampling:]), 0)
 def test_reason_for_model_citations(self):
     for model in stdpopsim.all_demographic_models():
         for citation in model.citations:
             self.assertGreater(
                 len(citation.reasons),
                 0,
                 msg=f"No reason given for '{citation.author}' citation "
                 f"in model {model.id}",
             )
Example #5
0
 def test_demography_debugger_equal(self):
     for model in stdpopsim.all_demographic_models():
         ddb1 = model.get_demography_debugger()
         ddb2 = msprime.DemographyDebugger(
             population_configurations=model.population_configurations,
             migration_matrix=model.migration_matrix,
             demographic_events=model.demographic_events)
         f1 = io.StringIO()
         f2 = io.StringIO()
         ddb1.print_history(f1)
         ddb2.print_history(f2)
         self.assertEqual(f1.getvalue(), f2.getvalue())
Example #6
0
    def test_all_instances(self):
        for model in stdpopsim.all_demographic_models():
            self.assertIsInstance(model, models.DemographicModel)

            self.assertGreater(len(model.id), 0)
            self.assertGreater(len(model.description), 0)
            self.assertGreater(len(model.long_description), 0)
            self.assertGreater(len(model.citations), 0)
            self.assertGreater(model.generation_time, 0)

            npops = len(model.populations)
            self.assertGreater(npops, 0)
            self.assertEqual(len(model.population_configurations), npops)
            self.assertEqual(len(model.migration_matrix), npops)
            self.assertEqual(len(model.migration_matrix[0]), npops)
            self.assertIsInstance(model.demographic_events, list)
Example #7
0
class TestAllModels:
    """
    Tests for registered simulation models.
    """
    def test_non_empty(self):
        assert len(list(stdpopsim.all_demographic_models())) > 0

    @pytest.mark.parametrize("model", stdpopsim.all_demographic_models())
    def test_all_instances(self, model):
        assert isinstance(model, models.DemographicModel)
        assert len(model.id) > 0
        assert len(model.description) > 0
        assert len(model.long_description) > 0
        assert len(model.citations) > 0
        assert model.generation_time > 0
        model.model.validate()
Example #8
0
 def test_demography_debugger(self):
     for model in stdpopsim.all_demographic_models():
         ddb = model.get_demography_debugger()
         self.assertIsInstance(ddb, msprime.DemographyDebugger)
Example #9
0
 def test_known_models(self):
     # All models should be equal to themselves.
     other_model = models.DemographicModel.empty()
     for model in stdpopsim.all_demographic_models():
         self.assertTrue(model.equals(model))
         self.assertFalse(model.equals(other_model))
Example #10
0
 def test_non_empty(self):
     self.assertGreater(len(list(stdpopsim.all_demographic_models())), 0)
Example #11
0
 def test_known_models(self):
     other_model = msprime.Demography.isolated_model([1])
     for model in stdpopsim.all_demographic_models():
         model.model.assert_equivalent(model.model)
         model.model.assert_equal(model.model)
         assert not model.model.is_equivalent(other_model)
Example #12
0
 def test_non_empty(self):
     assert len(list(stdpopsim.all_demographic_models())) > 0