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}" )
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)
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}", )
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())
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)
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()
def test_demography_debugger(self): for model in stdpopsim.all_demographic_models(): ddb = model.get_demography_debugger() self.assertIsInstance(ddb, msprime.DemographyDebugger)
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))
def test_non_empty(self): self.assertGreater(len(list(stdpopsim.all_demographic_models())), 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)
def test_non_empty(self): assert len(list(stdpopsim.all_demographic_models())) > 0