/omics

Primary LanguageRustApache License 2.0Apache-2.0

omics

CI: Status crates.io version crates.io downloads License: Apache 2.0 License: MIT

Foundations for the Rust omics ecosystem.
Explore the docs »

Request Feature · Report Bug · ⭐ Consider starring the repo! ⭐

NOTE: this crate is highly experimental and is not ready for production or even really experimenting with. There are many things I already don't like about or are arguably up incorrect within the existing implementation. As I find time, I'll continue to update the crate with these changes.

🎨 Features

The omics crate provides foundational data structures for working with omics data. The following features are included and are top-level goals of the project.

  • Coordinate systems (omics::coordinate). Provides multiple genomic coordinate systems including both a 0-based, half-open coordinate system (also known as the interbase coordinate system) and 1-based, fully-closed coordinate system (also known as the in-base or just base coordinate system).
  • Biologically relevant molecules (omics::molecule). Representations of molecules relevant in omics including smaller compounds (e.g., nucleotides) and larger polymers (e.g., DNA, RNA).
  • Variation (omics::variation). Facilities for expressing common types of variation including single nucleotide variations (SNVs), insertions/deletions (INDELs), structural variations (SVs), and copy number variations (CNVs).

🖥️ Development

To bootstrap a development environment, please use the following commands.

# Clone the repository
git clone git@github.com:stjude-rust-labs/omics.git
cd omics

# Build the crate in release mode
cargo build --release

# List out the examples
cargo run --release --example

🚧️ Tests

Before submitting any pull requests, please make sure the code passes the following checks (from the root directory).

# Run the project's tests.
cargo test --all-features

# Run the tests for the examples.
cargo test --examples --all-features

# Ensure the project doesn't have any linting warnings.
cargo clippy --all-features

# Ensure the project passes `cargo fmt`.
cargo fmt --check

# Ensure the docs build.
cargo doc

🤝 Contributing

Contributions, issues and feature requests are welcome! Feel free to check issues page.

📝 License

This project is licensed as either Apache 2.0 or MIT at your discretion. Additionally, please see the disclaimer that applies to all crates and command line tools made available by St. Jude Rust Labs.

Copyright © 2024-Present St. Jude Children's Research Hospital.