Struct tskit::OwnedMigrationTable
source · pub struct OwnedMigrationTable { /* private fields */ }
Expand description
A standalone migration table that owns its data.
Examples
use tskit::OwnedMigrationTable;
let mut migrations = OwnedMigrationTable::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::OwnedMigrationTable;
#[derive(serde::Serialize,
serde::Deserialize,
tskit::metadata::MigrationMetadata)]
#[serializer("serde_json")]
struct MigrationMetadata {
value: i32,
}
let metadata = MigrationMetadata{value: 42};
let mut migrations = OwnedMigrationTable::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
sourceimpl OwnedMigrationTable
impl OwnedMigrationTable
sourcepub fn clear(&mut self) -> TskReturnValue
pub fn clear(&mut self) -> TskReturnValue
Clear the table.
sourceimpl OwnedMigrationTable
impl OwnedMigrationTable
pub fn as_ptr(&self) -> *const tsk_migration_table_t
pub fn as_mut_ptr(&mut self) -> *mut tsk_migration_table_t
sourceimpl OwnedMigrationTable
impl OwnedMigrationTable
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>where
LEFT: Into<Position>,
RIGHT: Into<Position>,
N: Into<NodeId>,
SOURCE: Into<PopulationId>,
DEST: Into<PopulationId>,
T: Into<Time>,
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 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
.
sourcepub fn row<M: Into<MigrationId> + Copy>(&self, r: M) -> Option<MigrationTableRow>
pub fn row<M: Into<MigrationId> + Copy>(&self, r: M) -> Option<MigrationTableRow>
Trait Implementations
sourceimpl Default for OwnedMigrationTable
impl Default for OwnedMigrationTable
sourceimpl Deref for OwnedMigrationTable
impl Deref for OwnedMigrationTable
type Target = MigrationTable
type Target = MigrationTable
The resulting type after dereferencing.
sourceimpl DerefMut for OwnedMigrationTable
impl DerefMut for OwnedMigrationTable
Auto Trait Implementations
impl RefUnwindSafe for OwnedMigrationTable
impl !Send for OwnedMigrationTable
impl !Sync for OwnedMigrationTable
impl Unpin for OwnedMigrationTable
impl UnwindSafe for OwnedMigrationTable
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more