| Crates.io | bam |
| lib.rs | bam |
| version | 0.1.4 |
| created_at | 2019-08-28 16:13:53.706979+00 |
| updated_at | 2021-04-19 21:13:59.12679+00 |
| description | Crate that allows to read and write BAM, SAM and BGZIP files, written completely in Rust. |
| homepage | |
| repository | https://gitlab.com/tprodanov/bam |
| max_upload_size | |
| id | 160448 |
| size | 268,976 |
bam is a crate that allows to read and write BAM, SAM and BGZIP files, written completely in Rust.
Having a crate written completely in Rust reduces the number of dependencies and compilation time. Additionally, it removes the need to install additional C libraries.
Errors produced by this crate are more readable and easier to catch and fix on-the-fly.
Currently, there are three readers and two writers:
bam::IndexedReader - fetches records from
random genomic regions.bam::BamReader - reads a BAM file consecutively.bam::SamReader - reads a SAM file consecutively.bam::BamWriter - writes a BAM file.bam::SamWriter - writes a SAM file.BAM readers and writers have single-thread and multi-thread modes.
You can construct pileups from all readers using Pileup.
You can use bgzip module to interact directly with bgzip files (BGZF).
The crate also allows to conviniently work with SAM/BAM records
and their fields, such as CIGAR or tags.
The following code would load BAM file in.bam and its index in.bam.bai, take all records
from 3:600001-700000 and print them on the stdout.
extern crate bam;
use std::io;
use bam::RecordWriter;
fn main() {
let mut reader = bam::IndexedReader::from_path("in.bam").unwrap();
let output = io::BufWriter::new(io::stdout());
let mut writer = bam::SamWriter::build()
.write_header(false)
.from_stream(output, reader.header().clone()).unwrap();
for record in reader.fetch(&bam::Region::new(2, 600_000, 700_000)).unwrap() {
let record = record.unwrap();
writer.write(&record).unwrap();
}
}
You can find more detailed usage here.
You can find changelog here.
Please submit issues here or send them to
timofey.prodanov[at]gmail.com.