Crate tskit[][src]

Expand description

A rust interface to tskit.

This crate provides a mapping of the tskit C API to rust. The result is an interface similar to the tskit Python interface, but with all operations implemented using compiled code.

Features

Interface to the C library

Safety

  • The types listed above handle all the memory management!
  • All array accesses are range-checked.
  • Object lifetimes are clear:
    • Creating a tree sequence moves/consumes a table collection.
    • Tree lifetimes are tied to that of the parent tree sequence.
    • Table objects (NodeTable, etc..) are only represented by non-owning, immutable types.

Prelude

The prelude module contains definitions that are difficult/annoying to live without. In particuar, this module exports various traits that make it so that client code does not have to use them a la carte.

We recomment that client code import all symbols from this module:

use tskit::prelude::*;

The various documentation examples manually use each trait both in order to illustrate which traits are needed and to serve as doc tests.

Optional features

Some features are optional, and are activated by requesting them in your Cargo.toml file.

  • provenance

  • derive enables the following derive macros:

    • [MutationMetadata]
    • [IndividualMetadata]
    • [SiteMetadata]
    • [EdgeMetadata]
    • [NodeMetadata]
    • [MigrationMetadata]
    • [PopulationMetadata]

    To see these derive macros in action, take a look here.

To add features to your Cargo.toml file:

[dependencies]
tskit = {version = "0.2.0", features=["feature0", "feature1"]}

What is missing?

  • A lot of wrappers to the C functions.
  • Tree sequence statistics!

Re-exports

pub use bindings::TSK_NODE_IS_SAMPLE;
pub use bindings::tsk_flags_t;
pub use bindings::tsk_id_t;
pub use bindings::tsk_size_t;
pub use error::TskitError;

Modules

Low-level (“unsafe”) bindings to the C API.

Error handling

Define traits related to wrapping tskit stuff

Support for table row metadata

Export commonly-use types and traits

Optional module for table and tree sequence provenance tables.

“Other” tskit types live here.

Macros

Convenience macro to handle implementing crate::metadata::MetadataRoundtrip

Structs

An edge ID

An immutable view of an edge table.

An individual ID

An immutable view of a individual table.

A migration ID

An immutable view of a migration table.

A mutation ID

An immutable view of site table.

A node ID

An immtable view of a node table.

A population ID

An immutable view of site table.

A provenance ID

A site ID

An immutable view of site table.

A table collection.

A Tree.

Specify the behavior of iterating over [Tree] objects. See [TreeSequence::tree_iterator].

A tree sequence.

Enums

Specify the traversal order used by Tree::traverse_nodes.

Traits

Interface for returning lists of node ids from types implementing TableAccess.

Immutable access to tables.

Provide pointer access to underlying C types

Functions

C API major version

C API minor version

C API patch version

The C API version in MAJOR.MINOR.PATCH format

Version of the rust crate.

Type Definitions

Handles return codes from low-level tskit functions.