#fasta #indexed #fai

faidxquery

基于内存映射文件的索引 fasta 查询

4 个版本

0.1.3 2023 年 8 月 23 日
0.1.2 2023 年 8 月 23 日
0.1.1 2023 年 8 月 22 日
0.1.0 2023 年 8 月 22 日

#1722解析器实现


2 crates 中使用

MIT 许可证

29KB
370

faidxquery

MIT licensed actions status docs.rs

在索引 fasta 文件上执行区间查询

描述

这是一个简单的实用库,用于对索引 fasta 文件进行区间查询。

该索引假定 samtools faidx

fasta 文件是内存映射的,并保留一个单例可变缓冲区用于索引 fasta 读取器。此缓冲区用于返回查询序列的切片引用,但允许非连续序列(即可以返回不带换行的序列)

请注意,由于保留了可变缓冲区,这不是并发操作的最佳方法。

然而,对于单线程应用程序,它具有非常出色的性能,内存和运行时开销低。

用法

use anyhow::Result;
use faiquery::{FastaIndex, IndexedFasta};

fn main() -> Result<()> {
    let index = FastaIndex::from_filepath("example_data/example.fa.fai")?;
    let mut faidx = IndexedFasta::new(index, "example_data/example.fa")?;

    // Query the first 10 bases of chr1
    let seq = faidx.query("chr1", 0, 10)?;
    assert_eq!(seq, b"ACCTACGATC");

    // Query the first 10 bases of chr2
    let seq = faidx.query("chr2", 0, 10)?;
    assert_eq!(seq, b"TTTTGATCGA");

    Ok(())
}

类似方法

其他索引 fasta 读取器也可用,以下是一些非详尽的列表

如果您正在寻找强大的并发读取器,我建议使用 faimm crate。

依赖关系

~3.5–4.5MB
~65K SLoC