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 中使用
29KB
370 行
faidxquery
在索引 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