13 unstable releases (5 breaking)
0.6.0 | Apr 16, 2024 |
---|---|
0.5.0 | Sep 26, 2023 |
0.4.0 | Mar 30, 2023 |
0.4.0-alpha.2 | Oct 28, 2022 |
0.1.0 | May 27, 2022 |
#27 in Simulation
184 downloads per month
Used in 2 crates
(via demes-forward)
295KB
7K
SLoC
rust implementation of the demes specification.
Citation
If you use demes
for your research, please cite:
Gower, G., A. P. Ragsdale, G. Bisschop, R. N. Gutenkunst, M. Hartfield, E. Noskova, S. Schiffels, T. J. Struck, J. Kelleher, K. R. Thornton (2022) Demes: a standard format for demographic models. Genetics 222 (3):iyac131
DOI for the paper.
Example
This example reads in models from files.
The models are in YAML
format.
After reading, we iterate over every deme in the model and
over every epoch of each deme.
The iteration order is past to present.
fn main() {
for input in std::env::args().skip(1) {
println!("processing file {input}");
let file = std::fs::File::open(input).unwrap();
let graph = demes::load(file).unwrap();
for deme in graph.demes() {
println!("deme {}", deme.name());
for epoch in deme.epochs() {
println!("\tstart size = {}", epoch.start_size());
println!("\tend size = {}", epoch.end_size());
println!("\tstart time = {}", epoch.start_time());
println!("\tend time = {}", epoch.end_time());
}
}
}
}
This example can be run from the root of the workspace:
cargo run --example iterate_graph -- demes/examples/jouganous.yaml
Here is a richer example. To run it:
cargo run --example iterate_graph_detail -- demes/examples/jouganous.yaml
Change log
See here.
Dependencies
~4.5–7MB
~126K SLoC