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