Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ tskit-derive = {version = "0.2.0", path = "tskit-derive", optional = true}
chrono = { version = "0.4.40", default-features = false, features = ["now", "std"] , optional = true}

[dev-dependencies]
anyhow = {version = "1.0.86"}
clap = {version = "4.4.6", features = ["derive"]}
serde = {version = "1.0.203", features = ["derive"]}
serde-pickle = "1.1.0"
Expand Down
6 changes: 3 additions & 3 deletions examples/bincode_metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ fn main() {
ts.dump("with_bincode_metadata.trees", 0).unwrap();
}

fn make_tables() -> anyhow::Result<tskit::TableCollection> {
fn make_tables() -> Result<tskit::TableCollection, tskit::TskitError> {
let mut tables = tskit::TableCollection::new(100.0)?;
let pop0 = tables.add_population()?;
let ind0 = tables.add_individual_with_metadata(
Expand Down Expand Up @@ -46,6 +46,6 @@ fn make_tables() -> anyhow::Result<tskit::TableCollection> {
Ok(tables)
}

fn make_treeseq() -> anyhow::Result<tskit::TreeSequence> {
Ok(make_tables()?.tree_sequence(0)?)
fn make_treeseq() -> Result<tskit::TreeSequence, tskit::TskitError> {
make_tables()?.tree_sequence(0)
}
38 changes: 30 additions & 8 deletions examples/haploid_wright_fisher.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,35 @@
// This is a rust implementation of the example
// found in tskit-c

use anyhow::Result;
use clap::Parser;
#[cfg(test)]
use rand::distributions::Distribution;
use rand::prelude::*;
use rand::SeedableRng;

#[derive(Debug)]
enum Error {
Tskit(tskit::TskitError),
Message(String),
}

impl From<tskit::TskitError> for Error {
fn from(value: tskit::TskitError) -> Self {
Self::Tskit(value)
}
}

impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Tskit(e) => write!(f, "{e}"),
Self::Message(m) => write!(f, "{m}"),
}
}
}

impl std::error::Error for Error {}

fn rotate_edges(bookmark: &tskit::types::Bookmark, tables: &mut tskit::TableCollection) {
let num_edges = tables.edges().num_rows().as_usize();
let left =
Expand All @@ -32,15 +54,15 @@ fn simulate(
num_generations: i32,
simplify_interval: i32,
update_bookmark: bool,
) -> Result<tskit::TreeSequence> {
) -> Result<tskit::TreeSequence, Error> {
if popsize == 0 {
return Err(anyhow::Error::msg("popsize must be > 0"));
return Err(Error::Message("popsize must be > 0".to_string()));
}
if num_generations == 0 {
return Err(anyhow::Error::msg("num_generations must be > 0"));
return Err(Error::Message("num_generations must be > 0".to_string()));
}
if simplify_interval == 0 {
return Err(anyhow::Error::msg("simplify_interval must be > 0"));
return Err(Error::Message("simplify_interval must be > 0".to_string()));
}
let mut tables = tskit::TableCollection::new(1.0)?;

Expand Down Expand Up @@ -72,10 +94,10 @@ fn simulate(
let child = tables.add_node(0, bt, -1, -1)?;
let left_parent = parents
.get(parent_picker.sample(&mut rng))
.ok_or_else(|| anyhow::Error::msg("invalid left_parent index"))?;
.ok_or_else(|| Error::Message("invalid left_parent index".to_string()))?;
let right_parent = parents
.get(parent_picker.sample(&mut rng))
.ok_or_else(|| anyhow::Error::msg("invalid right_parent index"))?;
.ok_or_else(|| Error::Message("invalid right_parent index".to_string()))?;
let breakpoint = breakpoint_generator.sample(&mut rng);
tables.add_edge(0., breakpoint, *left_parent, child)?;
tables.add_edge(breakpoint, 1.0, *right_parent, child)?;
Expand Down Expand Up @@ -120,7 +142,7 @@ struct SimParams {
bookmark: bool,
}

fn main() -> Result<()> {
fn main() -> Result<(), Error> {
let params = SimParams::parse();
let treeseq = simulate(
params.seed,
Expand Down
6 changes: 3 additions & 3 deletions examples/json_metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ fn main() {
ts.dump("with_json_metadata.trees", 0).unwrap();
}

fn make_tables() -> anyhow::Result<tskit::TableCollection> {
fn make_tables() -> Result<tskit::TableCollection, tskit::TskitError> {
let mut tables = tskit::TableCollection::new(100.0)?;
let pop0 = tables.add_population()?;
let ind0 = tables.add_individual_with_metadata(
Expand Down Expand Up @@ -46,6 +46,6 @@ fn make_tables() -> anyhow::Result<tskit::TableCollection> {
Ok(tables)
}

fn make_treeseq() -> anyhow::Result<tskit::TreeSequence> {
Ok(make_tables()?.tree_sequence(0)?)
fn make_treeseq() -> Result<tskit::TreeSequence, tskit::TskitError> {
make_tables()?.tree_sequence(0)
}
6 changes: 3 additions & 3 deletions examples/manual_metadata_encoding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ fn main() {
ts.dump("with_manual_metadata.trees", 0).unwrap();
}

fn make_tables() -> anyhow::Result<tskit::TableCollection> {
fn make_tables() -> Result<tskit::TableCollection, tskit::TskitError> {
let mut tables = tskit::TableCollection::new(100.0)?;
let pop0 = tables.add_population()?;
let ind0 = tables.add_individual_with_metadata(
Expand Down Expand Up @@ -108,8 +108,8 @@ fn make_tables() -> anyhow::Result<tskit::TableCollection> {
Ok(tables)
}

fn make_treeseq() -> anyhow::Result<tskit::TreeSequence> {
Ok(make_tables()?.tree_sequence(0)?)
fn make_treeseq() -> Result<tskit::TreeSequence, tskit::TskitError> {
make_tables()?.tree_sequence(0)
}

#[test]
Expand Down
10 changes: 0 additions & 10 deletions src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,4 @@ mod test {
panic!();
}
}

#[test]
fn test_anyhow_compatability() {
fn foo() -> anyhow::Result<crate::TableCollection> {
let tables = crate::TableCollection::new(1.0)?;
Ok(tables)
}

let _ = foo().unwrap();
}
}
Loading