#bio #bigwig

bin+lib bigtools

A library and associated tools for reading and writing bigwigs and bigbeds

12 releases

Uses new Rust 2021

0.1.11 Aug 2, 2022
0.1.10 Aug 2, 2022
0.1.9 Jul 29, 2022
0.1.5 Dec 7, 2021
0.1.1 Nov 21, 2019

#250 in Science

Download history 3/week @ 2022-04-21 23/week @ 2022-04-28 39/week @ 2022-05-05 99/week @ 2022-05-12 29/week @ 2022-05-19 30/week @ 2022-05-26 71/week @ 2022-06-02 2/week @ 2022-06-09 4/week @ 2022-06-16 4/week @ 2022-06-23 8/week @ 2022-06-30 17/week @ 2022-07-07 23/week @ 2022-07-14 76/week @ 2022-07-21 122/week @ 2022-07-28 83/week @ 2022-08-04

311 downloads per month

MIT license



crates.io Documentation

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::bigwigread::BigWigRead;

let mut reader = BigWigRead::from("test.bigWig").unwrap();
let chr1 = reader.get_interval("chr1", 0, 10000).unwrap();
for interval in chr1 {
    println!("{:?}", interval);




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


~123K SLoC