Struct tskit::bindings::tsk_tree_t[][src]

#[repr(C)]pub struct tsk_tree_t {
    pub tree_sequence: *const tsk_treeseq_t,
    pub left_root: tsk_id_t,
    pub parent: *mut tsk_id_t,
    pub left_child: *mut tsk_id_t,
    pub right_child: *mut tsk_id_t,
    pub left_sib: *mut tsk_id_t,
    pub right_sib: *mut tsk_id_t,
    pub num_nodes: tsk_size_t,
    pub options: tsk_flags_t,
    pub root_threshold: tsk_size_t,
    pub samples: *const tsk_id_t,
    pub left: f64,
    pub right: f64,
    pub index: tsk_id_t,
    pub num_samples: *mut tsk_id_t,
    pub num_tracked_samples: *mut tsk_id_t,
    pub marked: *mut u8,
    pub mark: u8,
    pub left_sample: *mut tsk_id_t,
    pub right_sample: *mut tsk_id_t,
    pub next_sample: *mut tsk_id_t,
    pub sites: *const tsk_site_t,
    pub sites_length: tsk_size_t,
    pub direction: c_int,
    pub left_index: tsk_id_t,
    pub right_index: tsk_id_t,
}

@brief A single tree in a tree sequence.

@rst A tsk_tree_t object has two basic functions:

  1. Represent the state of a single tree in a tree sequence;
  2. Provide methods to transform this state into different trees in the sequence.

The state of a single tree in the tree sequence is represented using the quintuply linked encoding: please see the :ref:data model <sec_data_model_tree_structure> section for details on how this works. The left-to-right ordering of nodes in this encoding is arbitrary, and may change depending on the order in which trees are accessed within the sequence. Please see the :ref:sec_c_api_examples_tree_traversals examples for recommended usage.

On initialisation, a tree is in a “null” state: each sample is a root and there are no edges. We must call one of the ‘seeking’ methods to make the state of the tree object correspond to a particular tree in the sequence. Please see the :ref:sec_c_api_examples_tree_iteration examples for recommended usage.

@endrst

Fields

tree_sequence: *const tsk_treeseq_t

@brief The parent tree sequence.

left_root: tsk_id_t

@brief The leftmost root in the tree. Roots are siblings, and other roots can be found using right_sib.

parent: *mut tsk_id_t

@brief The parent of node u is parent[u]. Equal to TSK_NULL if node u is a root or is not a node in the current tree.

left_child: *mut tsk_id_t

@brief The leftmost child of node u is left_child[u]. Equal to TSK_NULL if node u is a leaf or is not a node in the current tree.

right_child: *mut tsk_id_t

@brief The rightmost child of node u is right_child[u]. Equal to TSK_NULL if node u is a leaf or is not a node in the current tree.

left_sib: *mut tsk_id_t

@brief The sibling to the left of node u is left_sib[u]. Equal to TSK_NULL if node u has no siblings to its left.

right_sib: *mut tsk_id_t

@brief The sibling to the right of node u is right_sib[u]. Equal to TSK_NULL if node u has no siblings to its right.

num_nodes: tsk_size_toptions: tsk_flags_troot_threshold: tsk_size_tsamples: *const tsk_id_tleft: f64right: f64index: tsk_id_tnum_samples: *mut tsk_id_tnum_tracked_samples: *mut tsk_id_tmarked: *mut u8mark: u8left_sample: *mut tsk_id_tright_sample: *mut tsk_id_tnext_sample: *mut tsk_id_tsites: *const tsk_site_tsites_length: tsk_size_tdirection: c_intleft_index: tsk_id_tright_index: tsk_id_t

Trait Implementations

impl Clone for tsk_tree_t[src]

impl Copy for tsk_tree_t[src]

impl Debug for tsk_tree_t[src]

impl TskitTypeAccess<tsk_tree_t> for Tree[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.