20个版本
| 0.1.4 | 2021年4月19日 |
|---|---|
| 0.1.3 | 2021年2月17日 |
| 0.1.2 | 2020年12月2日 |
| 0.1.1 | 2020年9月4日 |
| 0.0.11 | 2019年11月15日 |
#193 in 压缩
256 每月下载量
用于 5 crates
250KB
5K SLoC
bam 是一个允许读取和写入BAM、SAM和BGZIP文件的crate,完全使用Rust编写。
为什么?
完全使用Rust编写的crate可以减少依赖项数量和编译时间。此外,它消除了安装额外的C库的需要。
该crate产生的错误更易于阅读,并且更容易实时捕获和修复。
概述
目前,有三个读者和两个写入者
bam::IndexedReader- 从随机基因组区域获取记录。bam::BamReader- 顺序读取BAM文件。bam::SamReader- 顺序读取SAM文件。bam::BamWriter- 写入BAM文件。bam::SamWriter- 写入SAM文件。
BAM读者和写入者具有单线程和多线程模式。
您可以使用 Pileup 从所有读者构建pileups。
您可以使用 bgzip 模块直接与bgzip文件(BGZF)交互。
该crate还允许方便地处理SAM/BAM records及其字段,例如 CIGAR 或 tags。
用法
以下代码将加载BAM文件 in.bam及其索引 in.bam.bai,从 3:600001-700000 取出所有记录,并将它们打印到标准输出。
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();
}
}
您可以在此处找到更详细的用法。
更新日志
您可以在此处找到更新日志。
问题
请在此处提交问题 这里 或发送到 timofey.prodanov[at]gmail.com。
依赖项
~580KB