pub struct OwningMigrationTable { /* private fields */ }
Expand description
A standalone migration table that owns its data.
§Examples
use tskit::OwningMigrationTable;
let mut migrations = OwningMigrationTable::default();
let rowid = migrations.add_row((0., 1.), 1, (0, 1), 10.3).unwrap();
assert_eq!(rowid, 0);
assert_eq!(migrations.num_rows(), 1);
An example with metadata.
This requires the cargo feature "derive"
for tskit
.
use tskit::OwningMigrationTable;
#[derive(serde::Serialize,
serde::Deserialize,
tskit::metadata::MigrationMetadata)]
#[serializer("serde_json")]
struct MigrationMetadata {
value: i32,
}
let metadata = MigrationMetadata{value: 42};
let mut migrations = OwningMigrationTable::default();
let rowid = migrations.add_row_with_metadata((0., 1.), 1, (0, 1), 10.3, &metadata).unwrap();
assert_eq!(rowid, 0);
match migrations.metadata::<MigrationMetadata>(rowid) {
// rowid is in range, decoding succeeded
Some(Ok(decoded)) => assert_eq!(decoded.value, 42),
// rowid is in range, decoding failed
Some(Err(e)) => panic!("error decoding metadata: {:?}", e),
None => panic!("row id out of range")
}
Implementations§
Source§impl OwningMigrationTable
impl OwningMigrationTable
Sourcepub fn clear(&mut self) -> TskReturnValue
pub fn clear(&mut self) -> TskReturnValue
Clear the table.
Source§impl OwningMigrationTable
impl OwningMigrationTable
pub fn as_ptr(&self) -> *const tsk_migration_table_t
pub fn as_mut_ptr(&mut self) -> *mut tsk_migration_table_t
Source§impl OwningMigrationTable
impl OwningMigrationTable
pub fn add_row<LEFT, RIGHT, N, SOURCE, DEST, T>( &mut self, span: (LEFT, RIGHT), node: N, source_dest: (SOURCE, DEST), time: T, ) -> Result<MigrationId, TskitError>
pub fn add_row_with_metadata<LEFT, RIGHT, N, SOURCE, DEST, T, M>(
&mut self,
span: (LEFT, RIGHT),
node: N,
source_dest: (SOURCE, DEST),
time: T,
metadata: &M,
) -> Result<MigrationId, TskitError>where
LEFT: Into<Position>,
RIGHT: Into<Position>,
N: Into<NodeId>,
SOURCE: Into<PopulationId>,
DEST: Into<PopulationId>,
T: Into<Time>,
M: MigrationMetadata,
Methods from Deref<Target = MigrationTable>§
Sourcepub fn left<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<Position>
pub fn left<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<Position>
Return the left coordinate for a given row.
§Returns
Some(position)
ifrow
is valid.None
otherwise.
Sourcepub fn right<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<Position>
pub fn right<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<Position>
Return the right coordinate for a given row.
§Returns
Some(positions)
ifrow
is valid.None
otherwise.
Sourcepub fn source<M: Into<MigrationId> + Copy>(
&self,
row: M,
) -> Option<PopulationId>
pub fn source<M: Into<MigrationId> + Copy>( &self, row: M, ) -> Option<PopulationId>
Return the source population for a given row.
§Returns
Some(population)
ifrow
is valid.None
otherwise.
Sourcepub fn dest<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<PopulationId>
pub fn dest<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<PopulationId>
Return the destination population for a given row.
§Returns
Some(population)
ifrow
is valid.None
otherwise.
Sourcepub fn time<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<Time>
pub fn time<M: Into<MigrationId> + Copy>(&self, row: M) -> Option<Time>
Return the time of the migration event for a given row.
§Returns
Some(time)
ifrow
is valid.None
otherwise.
Sourcepub fn metadata<T: MigrationMetadata>(
&self,
row: MigrationId,
) -> Option<Result<T, TskitError>>
pub fn metadata<T: MigrationMetadata>( &self, row: MigrationId, ) -> Option<Result<T, TskitError>>
Retrieve decoded metadata for a row
.
§Returns
Some(Ok(T))
ifrow
is valid and decoding succeeded.Some(Err(_))
ifrow
is not valid and decoding failed.None
ifrow
is not valid.
§Errors
TskitError::MetadataError
if decoding fails.
§Examples.
The big-picture semantics are the same for all table types.
See crate::IndividualTable::metadata
for examples.
Sourcepub fn iter(&self) -> impl Iterator<Item = MigrationTableRow> + '_
pub fn iter(&self) -> impl Iterator<Item = MigrationTableRow> + '_
Return an iterator over rows of the table.
The value of the iterator is MigrationTableRow
.
pub fn lending_iter(&self) -> MigrationTableRowView<'_>
Sourcepub fn row<M: Into<MigrationId> + Copy>(
&self,
r: M,
) -> Option<MigrationTableRow>
pub fn row<M: Into<MigrationId> + Copy>( &self, r: M, ) -> Option<MigrationTableRow>
Sourcepub fn row_view<M: Into<MigrationId> + Copy>(
&self,
r: M,
) -> Option<MigrationTableRowView<'_>>
pub fn row_view<M: Into<MigrationId> + Copy>( &self, r: M, ) -> Option<MigrationTableRowView<'_>>
Sourcepub fn left_slice(&self) -> &[Position]
pub fn left_slice(&self) -> &[Position]
Get the left column as a slice
Sourcepub fn left_slice_raw(&self) -> &[f64]
pub fn left_slice_raw(&self) -> &[f64]
Get the left column as a slice
Sourcepub fn right_slice(&self) -> &[Position]
pub fn right_slice(&self) -> &[Position]
Get the right column as a slice
Sourcepub fn right_slice_raw(&self) -> &[f64]
pub fn right_slice_raw(&self) -> &[f64]
Get the right column as a slice
Sourcepub fn time_slice(&self) -> &[Time]
pub fn time_slice(&self) -> &[Time]
Get the time column as a slice
Sourcepub fn time_slice_raw(&self) -> &[f64]
pub fn time_slice_raw(&self) -> &[f64]
Get the time column as a slice
Sourcepub fn node_slice(&self) -> &[NodeId]
pub fn node_slice(&self) -> &[NodeId]
Get the node column as a slice
Sourcepub fn node_slice_raw(&self) -> &[tsk_id_t]
pub fn node_slice_raw(&self) -> &[tsk_id_t]
Get the node column as a slice
Sourcepub fn source_slice(&self) -> &[PopulationId]
pub fn source_slice(&self) -> &[PopulationId]
Get the source column as a slice
Sourcepub fn source_slice_raw(&self) -> &[tsk_id_t]
pub fn source_slice_raw(&self) -> &[tsk_id_t]
Get the source column as a slice
Sourcepub fn dest_slice(&self) -> &[PopulationId]
pub fn dest_slice(&self) -> &[PopulationId]
Get the dest column as a slice
Sourcepub fn dest_slice_raw(&self) -> &[tsk_id_t]
pub fn dest_slice_raw(&self) -> &[tsk_id_t]
Get the dest column as a slice