#sam #read-write #pileup #reader-writer #htslib #bgzip

bam

一个允许读取和写入BAM、SAM和BGZIP文件的crate,完全使用Rust编写

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 压缩

Download history 51/week @ 2024-03-12 53/week @ 2024-03-19 62/week @ 2024-03-26 70/week @ 2024-04-02 37/week @ 2024-04-09 47/week @ 2024-04-16 79/week @ 2024-04-23 64/week @ 2024-04-30 63/week @ 2024-05-07 41/week @ 2024-05-14 58/week @ 2024-05-21 39/week @ 2024-05-28 53/week @ 2024-06-04 90/week @ 2024-06-11 55/week @ 2024-06-18 48/week @ 2024-06-25

256 每月下载量
用于 5 crates

MIT 协议

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及其字段,例如 CIGARtags

用法

以下代码将加载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