Skip to content

Commit 684a482

Browse files
committed
example w/bincode metadata
1 parent c05e250 commit 684a482

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

.github/workflows/python.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ jobs:
3838
- name: run JSON metadata example
3939
run: |
4040
cargo run --example json_metadata --features derive
41+
- name: run bincode metadata example
42+
run: |
43+
cargo run --example bincode_metadata --features derive
4144
- name: setup Python and run tests
4245
run: |
4346
uv venv -p ${{ matrix.python }}

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,7 @@ name = "tree_traversals"
6060
[[example]]
6161
name = "json_metadata"
6262
required-features = ["derive"]
63+
64+
[[example]]
65+
name = "bincode_metadata"
66+
required-features = ["derive"]

examples/bincode_metadata.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#[derive(serde::Serialize, serde::Deserialize, tskit::metadata::MutationMetadata)]
2+
#[serializer("bincode")]
3+
struct MutationMetadata {
4+
effect_size: f64,
5+
dominance: f64,
6+
}
7+
8+
#[derive(serde::Serialize, serde::Deserialize, tskit::metadata::IndividualMetadata)]
9+
#[serializer("bincode")]
10+
struct IndividualMetadata {
11+
name: String,
12+
phenotypes: Vec<i32>,
13+
}
14+
15+
fn main() {
16+
let ts = make_treeseq().unwrap();
17+
ts.dump("with_bincode_metadata.trees", 0).unwrap();
18+
}
19+
20+
fn make_tables() -> anyhow::Result<tskit::TableCollection> {
21+
let mut tables = tskit::TableCollection::new(100.0)?;
22+
let pop0 = tables.add_population()?;
23+
let ind0 = tables.add_individual_with_metadata(
24+
0,
25+
None,
26+
None,
27+
&IndividualMetadata {
28+
name: "Jerome".to_string(),
29+
phenotypes: vec![0, 1, 2, 0],
30+
},
31+
)?;
32+
let node0 = tables.add_node(tskit::NodeFlags::new_sample(), 0.0, pop0, ind0)?;
33+
let site0 = tables.add_site(50.0, Some("A".as_bytes()))?;
34+
let _ = tables.add_mutation_with_metadata(
35+
site0,
36+
node0,
37+
tskit::MutationId::NULL,
38+
1.0,
39+
Some("G".as_bytes()),
40+
&MutationMetadata {
41+
effect_size: -1e-3,
42+
dominance: 0.1,
43+
},
44+
)?;
45+
tables.build_index()?;
46+
Ok(tables)
47+
}
48+
49+
fn make_treeseq() -> anyhow::Result<tskit::TreeSequence> {
50+
Ok(make_tables()?.tree_sequence(0)?)
51+
}

0 commit comments

Comments
 (0)