Bigtools is a library and associated tools for reading and writing bigwig and bigbed files.
The primary goals of the project are to be
- Performant
- Extensible
- Modern
Bigtools uses async/await
internally to allow for efficient, multi-core computation when possible. In addition, tools are optimized for minimal memory usage. See Benchmarks for more details.
Bigtools is designed to be as modular as possible. This, in addition to the safety and reliability of Rust, allows both flexibility and correctness as a library. In addition, its extremely easy to quickly create new tools or binaries.. (TODO: mention python wrapper)
Bigtools is written in Rust and published to crates.io
, so binaries can be installed with cargo install bigtools
or it can be used as a library by simply including it in your cargo.toml
.
use bigtools::bbiread::BigWigRead;
let mut reader = BigWigRead::open("test.bigWig").unwrap();
let chr1 = reader.get_interval("chr1", 0, 10000).unwrap();
for interval in chr1 {
println!("{:?}", interval);
}
TODO
Benchmarks are included in the ./bench
directory. The require python
to run.
Multiple tools are compared against the comparable UCSC tools. For completeness, both single-threaded and multi-threaded (when available) benchmarks are included.
TODO: include image of benchmarks