tskit 0.4.0

rust interface to tskit
Documentation
#[cfg(test)]
mod tests {
    use crate::test_fixtures::make_small_table_collection_two_trees;
    use crate::test_fixtures::treeseq_from_small_table_collection_two_trees;
    use crate::NodeId;
    use crate::SimplificationOptions;
    use crate::TableAccess;
    use crate::TSK_NODE_IS_SAMPLE;

    #[test]
    fn test_simplify_tables() {
        let mut tables = make_small_table_collection_two_trees();
        let mut samples: Vec<NodeId> = vec![];
        for (i, row) in tables.nodes_iter().enumerate() {
            if row.flags & TSK_NODE_IS_SAMPLE > 0 {
                samples.push((i as i32).into());
            }
        }
        let idmap_option = tables
            .simplify(&samples, SimplificationOptions::default(), true)
            .unwrap();
        assert!(idmap_option.is_some());
        let idmap = idmap_option.unwrap();
        for i in samples.iter() {
            assert_ne!(idmap[i.0 as usize], NodeId::NULL);
            assert!(!idmap[i.0 as usize].is_null());
        }
    }

    #[test]
    fn test_simplify_treeseq() {
        let ts = treeseq_from_small_table_collection_two_trees();
        let samples = ts.sample_nodes();
        let (_, idmap_option) = ts
            .simplify(samples, SimplificationOptions::default(), true)
            .unwrap();
        assert!(idmap_option.is_some());
        let idmap = idmap_option.unwrap();
        for &i in samples {
            assert_ne!(idmap[usize::from(i)], NodeId::NULL);
        }
    }
}