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

#10 in Simulation

Download history 136/week @ 2024-01-01 91/week @ 2024-01-08 308/week @ 2024-01-15 140/week @ 2024-01-22 94/week @ 2024-01-29 30/week @ 2024-02-19 99/week @ 2024-02-26 9/week @ 2024-03-11 2381/week @ 2024-04-01 855/week @ 2024-04-08 839/week @ 2024-04-15

4,075 downloads per month
Used in 2 crates (via demes-forward)

MIT license

295KB
7K SLoC

Rust 5K SLoC // 0.0% comments Python 2K SLoC // 0.1% comments C 114 SLoC C++ 104 SLoC // 0.0% comments Shell 90 SLoC // 0.1% comments

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

~5–7MB
~128K SLoC