Crates.io | demes |
lib.rs | demes |
version | 0.6.0 |
source | src |
created_at | 2022-05-27 19:06:23.531362 |
updated_at | 2024-04-16 16:19:10.596761 |
description | rust implementation of demes specification |
homepage | https://github.com/molpopgen/demes-rs |
repository | https://github.com/molpopgen/demes-rs |
max_upload_size | |
id | 595239 |
size | 922,307 |
rust implementation of the demes specification.
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.
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
See here.