Struct tskit::TableCollection [−][src]
pub struct TableCollection { /* fields omitted */ }
A table collection.
This is a thin wrapper around the C type tsk_table_collection_t
.
Current limitations
Examples
use tskit::TableAccess; let mut tables = tskit::TableCollection::new(100.).unwrap(); assert_eq!(tables.sequence_length(), 100.); // Adding edges: let rv = tables.add_edge(0., 53., 1, 11).unwrap(); // Add node: let rv = tables.add_node(0, 3.2, tskit::TSK_NULL, tskit::TSK_NULL).unwrap(); // Get immutable reference to edge table let edges = tables.edges(); assert_eq!(edges.num_rows(), 1); // Get immutable reference to node table let nodes = tables.nodes(); assert_eq!(nodes.num_rows(), 1);
Metadata round trips and table iteration
use tskit; use tskit::TableAccess; use tskit::metadata::MetadataRoundtrip; // Define a type for metadata struct F { x: i32, } // Implement our metadata trait for type F. // NOTE: this is hard because we are only using the // rust standard library here. See the examples/ // directory of the repository for examples using // other, more convenient, crates. impl tskit::metadata::MetadataRoundtrip for F { fn encode(&self) -> Result<Vec<u8>, tskit::metadata::MetadataError> { let mut rv = vec![]; rv.extend(self.x.to_le_bytes().iter().copied()); Ok(rv) } fn decode(md: &[u8]) -> Result<Self, tskit::metadata::MetadataError> { use std::convert::TryInto; let (x_int_bytes, rest) = md.split_at(std::mem::size_of::<i32>()); Ok(Self { x: i32::from_le_bytes(x_int_bytes.try_into().unwrap()), }) } } // Crate a table and add a mutation with metadata let mut tables = tskit::TableCollection::new(100.).unwrap(); // The metadata takes a reference in the event that it could // be data store in some container somewhere, and you don't want // it moved. tables.add_mutation_with_metadata(0, 0, 0, 0., None, Some(&F{x: -33})).unwrap(); // Iterate over each row in the table. // The "true" means to include (a copy of) the // encoded metadata, if any exist. for row in tables.mutations().iter(true) { // Decode the metadata if any exists. if !row.metadata.is_none() { let md = F::decode(&row.metadata.unwrap()).unwrap(); assert_eq!(md.x, -33); } }
Future road map
- Support all table types. Currently, we only support those needed for current goals in ongoing projects.
- Strengthen some of the error handling.
Implementations
impl TableCollection
[src]
impl TableCollection
[src]pub fn new(sequence_length: f64) -> Result<Self, TskitError>
[src]
Create a new table collection with a sequence length.
pub fn new_from_file(filename: &str) -> Result<Self, TskitError>
[src]
Load a table collection from a file.
pub fn sequence_length(&self) -> f64
[src]
Length of the sequence/“genome”.
pub fn add_edge(
&mut self,
left: f64,
right: f64,
parent: tsk_id_t,
child: tsk_id_t
) -> TskReturnValue
[src]
&mut self,
left: f64,
right: f64,
parent: tsk_id_t,
child: tsk_id_t
) -> TskReturnValue
Add a row to the edge table
pub fn add_edge_with_metadata(
&mut self,
left: f64,
right: f64,
parent: tsk_id_t,
child: tsk_id_t,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
left: f64,
right: f64,
parent: tsk_id_t,
child: tsk_id_t,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the edge table
pub fn add_individual(
&mut self,
flags: tsk_flags_t,
location: &[f64],
parents: &[tsk_id_t]
) -> TskReturnValue
[src]
&mut self,
flags: tsk_flags_t,
location: &[f64],
parents: &[tsk_id_t]
) -> TskReturnValue
Add a row to the individual table
pub fn add_individual_with_metadata(
&mut self,
flags: tsk_flags_t,
location: &[f64],
parents: &[tsk_id_t],
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
flags: tsk_flags_t,
location: &[f64],
parents: &[tsk_id_t],
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the individual table
pub fn add_migration(
&mut self,
span: (f64, f64),
node: tsk_id_t,
source_dest: (tsk_id_t, tsk_id_t),
time: f64
) -> TskReturnValue
[src]
&mut self,
span: (f64, f64),
node: tsk_id_t,
source_dest: (tsk_id_t, tsk_id_t),
time: f64
) -> TskReturnValue
Add a row to the migration table
Warnings
Migration tables are not currently supported by tree sequence simplification.
pub fn add_migration_with_metadata(
&mut self,
span: (f64, f64),
node: tsk_id_t,
source_dest: (tsk_id_t, tsk_id_t),
time: f64,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
span: (f64, f64),
node: tsk_id_t,
source_dest: (tsk_id_t, tsk_id_t),
time: f64,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the migration table
Warnings
Migration tables are not currently supported by tree sequence simplification.
pub fn add_node(
&mut self,
flags: tsk_flags_t,
time: f64,
population: tsk_id_t,
individual: tsk_id_t
) -> TskReturnValue
[src]
&mut self,
flags: tsk_flags_t,
time: f64,
population: tsk_id_t,
individual: tsk_id_t
) -> TskReturnValue
Add a row to the node table
pub fn add_node_with_metadata(
&mut self,
flags: tsk_flags_t,
time: f64,
population: tsk_id_t,
individual: tsk_id_t,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
flags: tsk_flags_t,
time: f64,
population: tsk_id_t,
individual: tsk_id_t,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the node table
pub fn add_site(
&mut self,
position: f64,
ancestral_state: Option<&[u8]>
) -> TskReturnValue
[src]
&mut self,
position: f64,
ancestral_state: Option<&[u8]>
) -> TskReturnValue
Add a row to the site table
pub fn add_site_with_metadata(
&mut self,
position: f64,
ancestral_state: Option<&[u8]>,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
position: f64,
ancestral_state: Option<&[u8]>,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the site table
pub fn add_mutation(
&mut self,
site: tsk_id_t,
node: tsk_id_t,
parent: tsk_id_t,
time: f64,
derived_state: Option<&[u8]>
) -> TskReturnValue
[src]
&mut self,
site: tsk_id_t,
node: tsk_id_t,
parent: tsk_id_t,
time: f64,
derived_state: Option<&[u8]>
) -> TskReturnValue
Add a row to the mutation table.
pub fn add_mutation_with_metadata(
&mut self,
site: tsk_id_t,
node: tsk_id_t,
parent: tsk_id_t,
time: f64,
derived_state: Option<&[u8]>,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
site: tsk_id_t,
node: tsk_id_t,
parent: tsk_id_t,
time: f64,
derived_state: Option<&[u8]>,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the mutation table.
pub fn add_population(&mut self) -> TskReturnValue
[src]
Add a row to the population_table
pub fn add_population_with_metadata(
&mut self,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
[src]
&mut self,
metadata: Option<&dyn MetadataRoundtrip>
) -> TskReturnValue
Add a row with metadata to the population_table
pub fn build_index(&mut self) -> TskReturnValue
[src]
Build the “input” and “output” indexes for the edge table.
Note
The C API
call behind this takes a flags
argument
that is currently unused. A future release may break API
here if the C
library is updated to use flags.
pub fn sort(
&mut self,
start: &Bookmark,
options: TableSortOptions
) -> TskReturnValue
[src]
&mut self,
start: &Bookmark,
options: TableSortOptions
) -> TskReturnValue
Sort the tables.
The bookmark
can
be used to affect where sorting starts from for each table.
pub fn full_sort(&mut self, options: TableSortOptions) -> TskReturnValue
[src]
Fully sort all functions.
Implemented via a call to sort
.
pub fn dump(
&self,
filename: &str,
options: TableOutputOptions
) -> TskReturnValue
[src]
&self,
filename: &str,
options: TableOutputOptions
) -> TskReturnValue
Dump the table collection to file.
Note
This function by default uses the flag TSK_NO_BUILD_INDEXES.
pub fn clear(&mut self, options: TableClearOptions) -> TskReturnValue
[src]
Clear the contents of all tables. Does not release memory. Memory will be released when the object goes out of scope.
pub fn equals(
&self,
other: &TableCollection,
options: TableEqualityOptions
) -> bool
[src]
&self,
other: &TableCollection,
options: TableEqualityOptions
) -> bool
Return true
if self
contains the same
data as other
, and false
otherwise.
pub fn deepcopy(&self) -> Result<TableCollection, TskitError>
[src]
Return a “deep” copy of the tables.
pub fn tree_sequence(
self,
flags: TreeSequenceFlags
) -> Result<TreeSequence, TskitError>
[src]
self,
flags: TreeSequenceFlags
) -> Result<TreeSequence, TskitError>
Return a crate::TreeSequence
based on the tables.
This function will raise errors if tables are not sorted,
not indexed, or invalid in any way.
pub fn simplify(
&mut self,
samples: &[tsk_id_t],
options: SimplificationOptions,
idmap: bool
) -> Result<Option<Vec<tsk_id_t>>, TskitError>
[src]
&mut self,
samples: &[tsk_id_t],
options: SimplificationOptions,
idmap: bool
) -> Result<Option<Vec<tsk_id_t>>, TskitError>
Simplify tables in place.
Parameters
samples
: a slice containing non-null node ids. The tables are simplified with respect to the ancestry of these nodes.options
: ASimplificationOptions
bit field controlling the behavior of simplification.idmap
: iftrue
, the return value contains a vector equal in length to the input node table. For each input node, this vector either contains the node’s new index orTSK_NULL
if the input node is not part of the simplified history.
Trait Implementations
impl Drop for TableCollection
[src]
impl Drop for TableCollection
[src]impl NodeListGenerator for TableCollection
[src]
impl NodeListGenerator for TableCollection
[src]fn samples_as_vector(&self) -> Vec<tsk_id_t>
[src]
fn create_node_id_vector(
&self,
f: impl FnMut(&NodeTableRow) -> bool
) -> Vec<tsk_id_t>
[src]
&self,
f: impl FnMut(&NodeTableRow) -> bool
) -> Vec<tsk_id_t>
impl Provenance for TableCollection
[src]
impl Provenance for TableCollection
[src]fn add_provenance(&mut self, record: &str) -> TskReturnValue
[src]
fn provenances(&self) -> ProvenanceTable<'_>
[src]
fn provenances_iter(&self) -> TableIterator<ProvenanceTable<'_>>
[src]
impl TableAccess for TableCollection
[src]
impl TableAccess for TableCollection
[src]fn edges(&self) -> EdgeTable<'_>
[src]
fn individuals(&self) -> IndividualTable<'_>
[src]
fn migrations(&self) -> MigrationTable<'_>
[src]
fn nodes(&self) -> NodeTable<'_>
[src]
fn sites(&self) -> SiteTable<'_>
[src]
fn mutations(&self) -> MutationTable<'_>
[src]
fn populations(&self) -> PopulationTable<'_>
[src]
fn edges_iter(&self, decode_metadata: bool) -> TableIterator<EdgeTable<'_>>
[src]
fn nodes_iter(&self, decode_metadata: bool) -> TableIterator<NodeTable<'_>>
[src]
fn mutations_iter(
&self,
decode_metadata: bool
) -> TableIterator<MutationTable<'_>>
[src]
&self,
decode_metadata: bool
) -> TableIterator<MutationTable<'_>>
fn sites_iter(&self, decode_metadata: bool) -> TableIterator<SiteTable<'_>>
[src]
fn populations_iter(
&self,
decode_metadata: bool
) -> TableIterator<PopulationTable<'_>>
[src]
&self,
decode_metadata: bool
) -> TableIterator<PopulationTable<'_>>
fn migrations_iter(
&self,
decode_metadata: bool
) -> TableIterator<MigrationTable<'_>>
[src]
&self,
decode_metadata: bool
) -> TableIterator<MigrationTable<'_>>
fn individuals_iter(
&self,
decode_metadata: bool
) -> TableIterator<IndividualTable<'_>>
[src]
&self,
decode_metadata: bool
) -> TableIterator<IndividualTable<'_>>
impl TskitTypeAccess<tsk_table_collection_t> for TableCollection
[src]
impl TskitTypeAccess<tsk_table_collection_t> for TableCollection
[src]fn as_ptr(&self) -> *const tsk_table_collection_t
[src]
fn as_mut_ptr(&mut self) -> *mut tsk_table_collection_t
[src]
Auto Trait Implementations
impl RefUnwindSafe for TableCollection
impl RefUnwindSafe for TableCollection
impl !Send for TableCollection
impl !Send for TableCollection
impl !Sync for TableCollection
impl !Sync for TableCollection
impl Unpin for TableCollection
impl Unpin for TableCollection
impl UnwindSafe for TableCollection
impl UnwindSafe for TableCollection