Skip to content

This library provides HTSlib bindings and a high level Rust API for reading and writing BAM files.

License

Notifications You must be signed in to change notification settings

TomKellyGenetics/rust-htslib

 
 

Repository files navigation

Crates.io Crates.io Crates.io docs.rs GitHub Workflow Status

HTSlib bindings for Rust

This library provides HTSlib bindings and a high level Rust API for reading and writing BAM files.

To clone this repository, issue

$ git clone --recursive https://github.com/rust-bio/rust-htslib.git

ensuring that the HTSlib submodule is fetched, too. If you only want to use the library, there is no need to clone the repository. Go on to the Usage section in this case.

Requirements

To compile this crate you need docker and cross:

$ cargo install cross
$ cross build 				              # will build with GNU toolchain

If you want to run rust-htslib code on AWS lambda, you'll need to statically compile it with MUSL as follows:

$ export CFLAGS="-I/usr/local/musl/include"
$ cross build --target x86_64-unknown-linux-musl      # will build with MUSL toolchain

Alternatively, you can also install it locally by installing the development headers of zlib, bzip2 and xz. For instance, in Debian systems one needs the following dependencies:

$ sudo apt-get install zlib1g-dev libbz2-dev liblzma-dev clang pkg-config

On OSX:

$ brew install FiloSottile/musl-cross/musl-cross
$ brew install bzip2 zlib xz curl-openssl

Usage

Add this to your Cargo.toml:

[dependencies]
rust-htslib = "*"

By default rust-htslib links to bzip2-sys and lzma-sys for full CRAM support. If you do not need CRAM support, or you do need to support CRAM files with these compression methods, you can deactivate these features to reduce you dependency count:

[dependencies]
rust-htslib = { version = "*", default-features = false }

rust-htslib also has optional support for serde, to allow (de)serialization of bam::Record via any serde-supported format:

[dependencies]
rust-htslib = { version = "*", features = ["serde"] }

For more information, please see the docs.

Alternatives

There's noodles by Michael Macias which implements a large part of htslib's C functionality in pure Rust (still experimental though).

Authors

For other contributors, see here.

License

Licensed under the MIT license http://opensource.org/licenses/MIT. This project may not be copied, modified, or distributed except according to those terms.

About

This library provides HTSlib bindings and a high level Rust API for reading and writing BAM files.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.7%
  • Other 0.3%