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 = msprime.model_factory(model=name.upper()) self.assertIsInstance(model, model_class) model = msprime.model_factory(model=name.title()) self.assertIsInstance(model, model_class) model = msprime.model_factory(model=name) self.assertIsInstance(model, model_class)
def test_reference_size_instance(self): for size in range(1, 10): existing_model = msprime.StandardCoalescent() model = msprime.model_factory(existing_model, reference_size=size) self.assertEqual(model.reference_size, size) existing_model = msprime.StandardCoalescent(None) model = msprime.model_factory(existing_model, reference_size=size) self.assertEqual(model.reference_size, size) # If the size is already set, the model isn't changed. existing_model = msprime.StandardCoalescent(10**4) model = msprime.model_factory(existing_model, reference_size=size) self.assertEqual(model.reference_size, 10**4)
def test_model_instances(self): models = [ msprime.StandardCoalescent(100), msprime.SmcApproxCoalescent(30), msprime.SmcPrimeApproxCoalescent(2132), msprime.DiscreteTimeWrightFisher(500), msprime.SweepGenicSelection( reference_size=500, position=0.5, start_frequency=0.1, end_frequency=0.9, alpha=0.1, dt=0.01), msprime.DiracCoalescent(), msprime.BetaCoalescent(), ] for model in models: new_model = msprime.model_factory(model=model) self.assertFalse(new_model is model) self.assertEqual(new_model.__dict__, model.__dict__)
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, alpha=0.1, dt=0.01, ), msprime.BetaCoalescent(alpha=2), msprime.DiracCoalescent(psi=1, c=1), ] for model in models: new_model = msprime.model_factory(model=model) self.assertTrue(new_model is model) self.assertEqual(new_model.__dict__, model.__dict__)
def test_reference_size_inherited(self): for Ne in [1, 10, 100]: models = [ msprime.DiracCoalescent(psi=0.5, c=0), msprime.StandardCoalescent(), msprime.SmcApproxCoalescent(), msprime.SmcPrimeApproxCoalescent(), msprime.DiscreteTimeWrightFisher(), msprime.WrightFisherPedigree(), msprime.SweepGenicSelection( position=0.5, start_frequency=0.1, end_frequency=0.9, alpha=0.1, dt=0.01, ), msprime.BetaCoalescent(alpha=2), msprime.DiracCoalescent(psi=1, c=1), ] for model in models: new_model = msprime.model_factory(model, reference_size=Ne) self.assertEqual(new_model.reference_size, Ne)
def test_named_parametric_models_fail(self): parametric_models = ["beta", "dirac"] for name in parametric_models: with self.assertRaises(ValueError): msprime.model_factory(model=name)
def test_reference_size_string(self): for size in range(1, 10): model = msprime.model_factory("hudson", reference_size=size) self.assertEqual(model.reference_size, size)