From 1afb247cbc042325b28829a7e2085f2b9479dffd Mon Sep 17 00:00:00 2001 From: silastittes Date: Tue, 27 Aug 2024 11:02:26 -0700 Subject: [PATCH 1/6] various fixes after msprime api updates --- validation.py | 51 ++++++++++++++++++--------------------------------- 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/validation.py b/validation.py index 49f376664..01ef0610e 100755 --- a/validation.py +++ b/validation.py @@ -61,7 +61,7 @@ def _onepop_PC(engine_id, out_dir, seed, N0=1000, *size_changes, **sim_kwargs): contig = irradiate(contig) model = stdpopsim.PiecewiseConstantSize(N0, *size_changes) model.generation_time = species.generation_time - samples = model.get_samples(100) + samples = {"pop_0": 100} engine = stdpopsim.get_engine(engine_id) t0 = time.perf_counter() ts = engine.simulate(model, contig, samples, seed=seed, **sim_kwargs) @@ -141,34 +141,19 @@ class _PiecewiseSize(stdpopsim.DemographicModel): A copy of stdpopsim.PiecewiseConstantSize that permits growth rates. """ - id = "Piecewise" - description = "Piecewise size population model over multiple epochs." - citations = [] - populations = [stdpopsim.Population(id="pop0", description="Population 0")] - author = None - year = None - doi = None - def __init__(self, N0, growth_rate, *args): - self.population_configurations = [ - msprime.PopulationConfiguration( - initial_size=N0, - growth_rate=growth_rate, - metadata=self.populations[0].asdict(), - ) - ] - self.migration_matrix = [[0]] - self.demographic_events = [] + model = msprime.Demography.isolated_model(initial_size=[N0], growth_rate=[growth_rate]) for t, initial_size, growth_rate in args: - self.demographic_events.append( - msprime.PopulationParametersChange( - time=t, - initial_size=initial_size, - growth_rate=growth_rate, - population_id=0, - ) - ) - + model.add_population_parameters_change(time=t, initial_size=initial_size, growth_rate=growth_rate) + + super().__init__( + id = "Piecewise", + description = "Piecewise size population model over multiple epochs that permits a growth rate.", + citations = [], + long_description="", + model=model, + generation_time=1, + ) def _onepop_expgrowth(engine_id, out_dir, seed, N0=5000, N1=500, T=1000, **sim_kwargs): growth_rate = -np.log(N1 / N0) / T @@ -177,7 +162,7 @@ def _onepop_expgrowth(engine_id, out_dir, seed, N0=5000, N1=500, T=1000, **sim_k contig = irradiate(contig) model = _PiecewiseSize(N0, growth_rate, (T, N1, 0)) model.generation_time = species.generation_time - samples = model.get_samples(100) + samples = {"pop_0": 100} engine = stdpopsim.get_engine(engine_id) t0 = time.perf_counter() ts = engine.simulate(model, contig, samples, seed=seed, **sim_kwargs) @@ -236,13 +221,13 @@ def _twopop_IM( contig = irradiate(contig) model = stdpopsim.IsolationWithMigration(NA=NA, N1=N1, N2=N2, T=T, M12=M12, M21=M21) if pulse is not None: - model.demographic_events.append(pulse) - model.demographic_events.sort(key=lambda x: x.time) + model.model.events.append(pulse) + model.model.events.sort(key=lambda x: x.time) # XXX: AraTha has species.generation_time == 1, but there is the potential # for this to mask bugs related to generation_time scaling, so we use 3 here. model.generation_time = 3 if samples is None: - samples = model.get_samples(50, 50, 0) + samples = {"pop1": 50, "pop2": 50, "ancestral": 0} engine = stdpopsim.get_engine(engine_id) t0 = time.perf_counter() ts = engine.simulate(model, contig, samples, seed=seed, **sim_kwargs) @@ -325,7 +310,7 @@ def twopop_pulse_migration_slim2(out_dir, seed): ) -_ancient_samples = 50 * [msprime.Sample(0, time=0), msprime.Sample(1, time=500)] +_ancient_samples = 50 * [msprime.SampleSet(num_samples = 0, population = "pop1", time=0, ploidy = 2), msprime.SampleSet(num_samples = 1, population = "pop2", time=500, ploidy = 2)] def twopop_ancient_samples_msprime1(out_dir, seed): @@ -362,7 +347,7 @@ def do_cmd(cmd, out_dir, seed): assert "-o" not in cmd and "--output" not in cmd assert "-s" not in cmd and "--seed" not in cmd out_file = out_dir / f"{seed}.trees" - full_cmd = cmd + f" -q -o {out_file} -s {seed}".split() + full_cmd = cmd + f" -o {out_file} -s {seed}".split() t0 = time.perf_counter() stdpopsim.cli.stdpopsim_main(full_cmd) t1 = time.perf_counter() From 836b8c70f1fd594d2085a4641014d7d6c1e43d6f Mon Sep 17 00:00:00 2001 From: silastittes Date: Tue, 27 Aug 2024 11:28:30 -0700 Subject: [PATCH 2/6] linting --- validation.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/validation.py b/validation.py index 01ef0610e..85f96fdad 100755 --- a/validation.py +++ b/validation.py @@ -142,19 +142,23 @@ class _PiecewiseSize(stdpopsim.DemographicModel): """ def __init__(self, N0, growth_rate, *args): - model = msprime.Demography.isolated_model(initial_size=[N0], growth_rate=[growth_rate]) + model = msprime.Demography.isolated_model( + initial_size=[N0], growth_rate=[growth_rate]) for t, initial_size, growth_rate in args: - model.add_population_parameters_change(time=t, initial_size=initial_size, growth_rate=growth_rate) + model.add_population_parameters_change( + time=t, initial_size=initial_size, growth_rate=growth_rate) super().__init__( - id = "Piecewise", - description = "Piecewise size population model over multiple epochs that permits a growth rate.", - citations = [], + id="Piecewise", + description="Piecewise size population model" + "over multiple epochs that permits a growth rate.", + citations=[], long_description="", model=model, - generation_time=1, + generation_time=1, ) + def _onepop_expgrowth(engine_id, out_dir, seed, N0=5000, N1=500, T=1000, **sim_kwargs): growth_rate = -np.log(N1 / N0) / T species = stdpopsim.get_species("DroMel") @@ -310,7 +314,9 @@ def twopop_pulse_migration_slim2(out_dir, seed): ) -_ancient_samples = 50 * [msprime.SampleSet(num_samples = 0, population = "pop1", time=0, ploidy = 2), msprime.SampleSet(num_samples = 1, population = "pop2", time=500, ploidy = 2)] +_ancient_samples = 50 * [msprime.SampleSet( + num_samples=0, population="pop1", time=0, ploidy=2), + msprime.SampleSet(num_samples=1, population="pop2", time=500, ploidy=2)] def twopop_ancient_samples_msprime1(out_dir, seed): From eb5cfff11e4cac39953f16793e1ed5ec264e4634 Mon Sep 17 00:00:00 2001 From: silastittes Date: Tue, 27 Aug 2024 11:39:53 -0700 Subject: [PATCH 3/6] updated CI version of msprime --- requirements/CI/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/CI/requirements.txt b/requirements/CI/requirements.txt index e03d2ffa8..cb2879315 100644 --- a/requirements/CI/requirements.txt +++ b/requirements/CI/requirements.txt @@ -9,7 +9,7 @@ sphinx-argparse==0.4.0 sphinx-issues==3.0.1 sphinx_rtd_theme==1.2.0 sphinxcontrib-programoutput==0.17 -msprime==1.2.0 +msprime==1.3.1 attrs==21.4.0 appdirs==1.4.4 humanize==4.6.0 From 807a2ebbac4980b83bd92bf2e8076084f75a1bf7 Mon Sep 17 00:00:00 2001 From: silastittes Date: Tue, 27 Aug 2024 11:44:43 -0700 Subject: [PATCH 4/6] ran black --- validation.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/validation.py b/validation.py index 85f96fdad..462c69297 100755 --- a/validation.py +++ b/validation.py @@ -143,10 +143,12 @@ class _PiecewiseSize(stdpopsim.DemographicModel): def __init__(self, N0, growth_rate, *args): model = msprime.Demography.isolated_model( - initial_size=[N0], growth_rate=[growth_rate]) + initial_size=[N0], growth_rate=[growth_rate] + ) for t, initial_size, growth_rate in args: model.add_population_parameters_change( - time=t, initial_size=initial_size, growth_rate=growth_rate) + time=t, initial_size=initial_size, growth_rate=growth_rate + ) super().__init__( id="Piecewise", @@ -314,9 +316,10 @@ def twopop_pulse_migration_slim2(out_dir, seed): ) -_ancient_samples = 50 * [msprime.SampleSet( - num_samples=0, population="pop1", time=0, ploidy=2), - msprime.SampleSet(num_samples=1, population="pop2", time=500, ploidy=2)] +_ancient_samples = 50 * [ + msprime.SampleSet(num_samples=0, population="pop1", time=0, ploidy=2), + msprime.SampleSet(num_samples=1, population="pop2", time=500, ploidy=2), +] def twopop_ancient_samples_msprime1(out_dir, seed): From 7d40607e7bc3230ec549b06e8eb4eddfd3ed2e5e Mon Sep 17 00:00:00 2001 From: silastittes Date: Tue, 27 Aug 2024 11:50:54 -0700 Subject: [PATCH 5/6] reverting msprime version --- requirements/CI/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/CI/requirements.txt b/requirements/CI/requirements.txt index cb2879315..e03d2ffa8 100644 --- a/requirements/CI/requirements.txt +++ b/requirements/CI/requirements.txt @@ -9,7 +9,7 @@ sphinx-argparse==0.4.0 sphinx-issues==3.0.1 sphinx_rtd_theme==1.2.0 sphinxcontrib-programoutput==0.17 -msprime==1.3.1 +msprime==1.2.0 attrs==21.4.0 appdirs==1.4.4 humanize==4.6.0 From 14b68423a11fd6123d77deeb9f7f0a2472bf3e39 Mon Sep 17 00:00:00 2001 From: Peter Ralph Date: Tue, 17 Sep 2024 09:39:18 -0700 Subject: [PATCH 6/6] Update validation.py --- validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/validation.py b/validation.py index 462c69297..00c5c3f69 100755 --- a/validation.py +++ b/validation.py @@ -317,7 +317,7 @@ def twopop_pulse_migration_slim2(out_dir, seed): _ancient_samples = 50 * [ - msprime.SampleSet(num_samples=0, population="pop1", time=0, ploidy=2), + msprime.SampleSet(num_samples=1, population="pop1", time=0, ploidy=2), msprime.SampleSet(num_samples=1, population="pop2", time=500, ploidy=2), ]