Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

start updating recapitation vignette #1241

Merged
merged 1 commit into from
Dec 6, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion doc/short_vignettes/recapitation.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,53 @@ assert pop.generation == 10
Now we use `msprime` to coalesce the founder generation roots back to a common ancestor:

```{code-cell} python
import demes
import msprime


# Convert to tskit format
ts = pop.dump_tables_to_tskit()

num_roots_pre_recapitation = ts.first().num_roots

recapitated_ts = msprime.simulate(from_ts=ts)
yaml=f"""
time_units: generations
demes:
- name: deme0
epochs:
- start_size: {pop.N}
"""
graph = demes.loads(yaml)
demography = msprime.Demography.from_demes(graph)

recapitated_ts = msprime.sim_ancestry(demography=demography, initial_state=ts)

print(num_roots_pre_recapitation, recapitated_ts.first().num_roots)
```
## Important considerations

The previous example was very simple.
The model involved no recombination and a single deme.

### Demography

In the above example, we had to provide `msprime` a demographic model.
That model must be the correct model for the first generation of your simulation!

### Recombination/genetic maps

You must take care to proved `msprime` with a correct genetic map!
This software and `msprime` differ in some key ways:

* Here, rates are per *genomic segment*. In `msprime`, rates are per "base pair".
* For forward simulations with unlinked regions, you must take special care when defining a recombination map in `msprime`

### Using the proper backwards-time model

`msprime` supports a few different models of the backwards process.
The two most relevant to this discussion are the "Hudson" and "discrete-time Wright-Fisher" models.
The former is the continuous approximation with recombination and is what most people think of when they think "coalescent simulation".
The latter model allows you to couple Wright-Fisher dynamics to model the recent past with the Hudson algorithm to simulate more ancient events.
You will want to read the msprime [documentation](https://tskit.dev/msprime/docs/stable/intro.html) and the literature cited therein to make a decision about how to best model the ancestry of the ancestral roots of your simulation.


Loading