demes

Crates.iodemes
lib.rsdemes
version0.6.0
sourcesrc
created_at2022-05-27 19:06:23.531362
updated_at2024-04-16 16:19:10.596761
descriptionrust implementation of demes specification
homepagehttps://github.com/molpopgen/demes-rs
repositoryhttps://github.com/molpopgen/demes-rs
max_upload_size
id595239
size922,307
Kevin R. Thornton (molpopgen)

documentation

README

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.

Commit count: 322

cargo fmt