pub struct OwningMutationTable { /* private fields */ }
Expand description

A standalone mutation table that owns its data.

Examples

use tskit::OwningMutationTable;

let mut mutations = OwningMutationTable::default();
let rowid = mutations.add_row(1, 2, 0, 1.0, None).unwrap();
assert_eq!(rowid, 0);
assert_eq!(mutations.num_rows(), 1);

An example with metadata. This requires the cargo feature "derive" for tskit.

use tskit::OwningMutationTable;

#[derive(serde::Serialize,
         serde::Deserialize,
         tskit::metadata::MutationMetadata)]
#[serializer("serde_json")]
struct MutationMetadata {
    value: i32,
}

let metadata = MutationMetadata{value: 42};

let mut mutations = OwningMutationTable::default();

let rowid = mutations.add_row_with_metadata(0, 1, 5, 10.0, None, &metadata).unwrap();
assert_eq!(rowid, 0);

match mutations.metadata::<MutationMetadata>(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 OwningMutationTable

source

pub fn clear(&mut self) -> TskReturnValue

Clear the table.

source§

impl OwningMutationTable

source§

impl OwningMutationTable

source

pub fn add_row<S, N, P, T>( &mut self, site: S, node: N, parent: P, time: T, derived_state: Option<&[u8]> ) -> Result<MutationId, TskitError>where S: Into<SiteId>, N: Into<NodeId>, P: Into<MutationId>, T: Into<Time>,

source

pub fn add_row_with_metadata<S, N, P, T, M>( &mut self, site: S, node: N, parent: P, time: T, derived_state: Option<&[u8]>, metadata: &M ) -> Result<MutationId, TskitError>where S: Into<SiteId>, N: Into<NodeId>, P: Into<MutationId>, T: Into<Time>, M: MutationMetadata,

Methods from Deref<Target = MutationTable>§

source

pub fn num_rows(&self) -> SizeType

Return the number of rows.

source

pub fn site<M: Into<MutationId> + Copy>(&self, row: M) -> Option<SiteId>

Return the site value from row row of the table.

Errors

Will return IndexError if row is out of range.

source

pub fn node<M: Into<MutationId> + Copy>(&self, row: M) -> Option<NodeId>

Return the node value from row row of the table.

Errors

Will return IndexError if row is out of range.

source

pub fn parent<M: Into<MutationId> + Copy>(&self, row: M) -> Option<MutationId>

Return the parent value from row row of the table.

Errors

Will return IndexError if row is out of range.

source

pub fn time<M: Into<MutationId> + Copy>(&self, row: M) -> Option<Time>

Return the time value from row row of the table.

Errors

Will return IndexError if row is out of range.

source

pub fn derived_state<M: Into<MutationId>>(&self, row: M) -> Option<&[u8]>

Get the derived_state value from row row of the table.

Return

Will return None if there is no derived state.

Errors

Will return IndexError if row is out of range.

source

pub fn metadata<T: MutationMetadata>( &self, row: MutationId ) -> Option<Result<T, TskitError>>

Retrieve decoded metadata for a row.

Returns
  • Some(Ok(T)) if row is valid and decoding succeeded.
  • Some(Err(_)) if row is not valid and decoding failed.
  • None if row is not valid.
Errors
Examples.

The big-picture semantics are the same for all table types. See crate::IndividualTable::metadata for examples.

source

pub fn iter(&self) -> impl Iterator<Item = MutationTableRow> + '_

Return an iterator over rows of the table. The value of the iterator is MutationTableRow.

source

pub fn lending_iter(&self) -> MutationTableRowView<'_>

source

pub fn row<M: Into<MutationId> + Copy>(&self, r: M) -> Option<MutationTableRow>

Return row r of the table.

Parameters
  • r: the row id.
Returns
  • Some(row) if r is valid
  • None otherwise
source

pub fn row_view<M: Into<MutationId> + Copy>( &self, r: M ) -> Option<MutationTableRowView<'_>>

Return a view of row r of the table.

Parameters
  • r: the row id.
Returns
  • Some(row view) if r is valid
  • None otherwise
source

pub fn node_slice(&self) -> &[NodeId]

Get the node column as a slice

source

pub fn node_slice_raw(&self) -> &[tsk_id_t]

Get the node column as a slice

source

pub fn site_slice(&self) -> &[SiteId]

Get the site column as a slice

source

pub fn site_slice_raw(&self) -> &[tsk_id_t]

Get the site column as a slice

source

pub fn time_slice(&self) -> &[Time]

Get the time column as a slice

source

pub fn time_slice_raw(&self) -> &[f64]

Get the time column as a slice

source

pub fn parent_slice(&self) -> &[MutationId]

Get the parent column as a slice

source

pub fn parent_slice_raw(&self) -> &[tsk_id_t]

Get the parent column as a slice

Trait Implementations§

source§

impl Default for OwningMutationTable

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Deref for OwningMutationTable

§

type Target = MutationTable

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for OwningMutationTable

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Free for T

source§

unsafe default fn free(ptr_ref: NonNull<T>)

Drops the content pointed by this pointer and frees it. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.