def test_named_model_variants(self): simulation_models = [ ("hudson", msprime.StandardCoalescent), ("smc", msprime.SmcApproxCoalescent), ("smc_prime", msprime.SmcPrimeApproxCoalescent), ("dtwf", msprime.DiscreteTimeWrightFisher), ("wf_ped", msprime.WrightFisherPedigree), ] for name, model_class in simulation_models: model = ancestry._model_factory(model=name.upper()) assert isinstance(model, model_class) model = ancestry._model_factory(model=name.title()) assert isinstance(model, model_class) model = ancestry._model_factory(model=name) assert isinstance(model, model_class)
def test_model_instances(self): models = [ msprime.StandardCoalescent(), msprime.SmcApproxCoalescent(), msprime.SmcPrimeApproxCoalescent(), msprime.DiscreteTimeWrightFisher(), msprime.WrightFisherPedigree(), msprime.SweepGenicSelection( position=0.5, start_frequency=0.1, end_frequency=0.9, s=0.01, dt=0.01, ), msprime.BetaCoalescent(alpha=2), msprime.DiracCoalescent(psi=1, c=1), ] for model in models: new_model = ancestry._model_factory(model=model) assert new_model is model assert new_model.__dict__ == model.__dict__
def test_bad_model_names(self): for bad_model in ["NOT", "", "MODEL"]: with pytest.raises(ValueError): ancestry._model_factory(model=bad_model)
def test_bad_models(self): for bad_type in [1234, {}]: with pytest.raises(TypeError): ancestry._model_factory(model=bad_type)
def test_named_parametric_models_fail(self): parametric_models = ["beta", "dirac"] for name in parametric_models: with pytest.raises(ValueError): ancestry._model_factory(model=name)