Skip to content

Commit

Permalink
tests pass
Browse files Browse the repository at this point in the history
  • Loading branch information
molpopgen committed Aug 16, 2023
1 parent 95a34db commit adc0de8
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 31 deletions.
2 changes: 2 additions & 0 deletions fwdpy11/conditional_models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,8 @@ class ConditionalModelOutput:
"""The evolved model parameters"""
mutation_index: typing.Optional[int]
"""The index of the new mutation in pop.mutations"""
fixation_index: typing.Optional[int]
"""The index of the new mutation in pop.fixations"""
num_descendant_nodes: int
"""The number of alive nodes initially containing the new mutation"""

Expand Down
5 changes: 5 additions & 0 deletions fwdpy11/conditional_models/_track_added_mutation.py
Original file line number Diff line number Diff line change
Expand Up @@ -432,9 +432,14 @@ def _track_added_mutation(
assert pop_to_return.mutations[mutation_index].key == tracked_mutation_key
else:
assert any([i.key == tracked_mutation_key for i in pop_to_return.fixations])
fixation_index = None
for i, f in enumerate(pop_to_return.fixations):
if f.key == tracked_mutation_key:
fixation_index = i
return ConditionalModelOutput(
pop=pop_to_return,
params=local_params,
mutation_index=mutation_index,
fixation_index=fixation_index,
num_descendant_nodes=ndescendants,
)
92 changes: 61 additions & 31 deletions tests/test_conditional_simulations.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,8 +327,13 @@ def test_sweep_from_standing_variation_using_API(
assert output.num_descendant_nodes == ndescendants
assert output.pop.generation > pop.generation
if output.pop is not None:
assert output.pop.mcounts[output.mutation_index] == 2 * \
output.pop.N
if output.mutation_index is not None:
assert output.pop.mcounts[output.mutation_index] == 2 * \
output.pop.N
else:
assert output.fixation_index is not None
assert output.fixation_index < len(output.pop.fixations)
assert output.fixation_index < len(output.pop.fixation_times)
_ = output.pop.dump_tables_to_tskit()
except fwdpy11.conditional_models.AddMutationFailure:
pass
Expand Down Expand Up @@ -458,11 +463,17 @@ def test_sweep_from_new_mutation_in_single_deme_using_API(fp11_seed, demes_yaml,
assert output.num_descendant_nodes == 1
assert output.pop.generation > pop.generation
if output.pop is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
assert output.pop.mcounts[output.mutation_index] == 2 * output.pop.N
if output.mutation_index is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
assert output.pop.mcounts[output.mutation_index] == 2 * output.pop.N
else:
assert (
output.pop.fixations[output.fixation_index].g ==
model.metadata["burnin_time"] + 50
)
_ = output.pop.dump_tables_to_tskit()
else:
pytest.fail("test failed")
Expand Down Expand Up @@ -508,11 +519,17 @@ def test_sweep_from_new_mutation_with_demography_using_API(
assert output.pop.generation > pop.generation
assert output.pop.generation == params.simlen
if output.pop is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
assert output.pop.mcounts[output.mutation_index] == 2 * output.pop.N
if output.mutation_index is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
assert output.pop.mcounts[output.mutation_index] == 2 * output.pop.N
else:
assert (
output.pop.fixations[output.fixation_index].g ==
model.metadata["burnin_time"] + 50
)
_ = output.pop.dump_tables_to_tskit()
else:
pytest.fail("test failed")
Expand Down Expand Up @@ -556,14 +573,20 @@ def test_origination_deme1_fixation_in_deme_2(fp11_seed, demes_yaml, alpha, prun
assert output.num_descendant_nodes == 1
assert output.pop.generation > pop.generation
if output.pop is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
assert (
count_mutation(output.pop, output.mutation_index, 2)
== 2 * output.pop.deme_sizes(as_dict=True)[2]
)
if output.mutation_index is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
assert (
count_mutation(output.pop, output.mutation_index, 2)
== 2 * output.pop.deme_sizes(as_dict=True)[2]
)
else:
assert (
output.pop.fixations[output.fixation_index].g ==
model.metadata["burnin_time"] + 50
)
_ = output.pop.dump_tables_to_tskit()


Expand Down Expand Up @@ -606,20 +629,27 @@ def test_origination_deme1_fixation_in_deme_2_with_growth(fp11_seed, demes_yaml,
assert output.pop.generation > pop.generation
del pop
if output.pop is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)
if output.mutation_index is not None:
assert (
output.pop.mutations[output.mutation_index].g ==
model.metadata["burnin_time"] + 50
)

deme_sizes = output.pop.deme_sizes(as_dict=True)
deme_sizes = output.pop.deme_sizes(as_dict=True)

for deme, n in zip([1, 2], [60, 55]):
assert deme_sizes[deme] == n
for deme, n in zip([1, 2], [60, 55]):
assert deme_sizes[deme] == n

assert (
count_mutation(output.pop, output.mutation_index, 2)
== 2 * output.pop.deme_sizes(as_dict=True)[2]
)
assert (
count_mutation(output.pop, output.mutation_index, 2)
== 2 * output.pop.deme_sizes(as_dict=True)[2]
)
else:
assert output.fixation_index is not None
assert (
output.pop.fixations[output.fixation_index].g ==
model.metadata["burnin_time"] + 50
)
_ = output.pop.dump_tables_to_tskit()
else:
pytest.fail("mutation did not fix?")
Expand Down

0 comments on commit adc0de8

Please sign in to comment.