4个版本

0.2.1 2022年6月26日
0.2.0 2021年11月25日
0.1.1 2020年9月28日
0.1.0 2020年8月4日

#796解析器实现

37 每月下载量
3 crates 中使用

MIT 许可证

69KB
1.5K SLoC

twobit

纯Rust实现的2bit文件读取器。

Build Latest Version Documentation twobit: rustc 1.51+ MIT

2bit文件格式用于在磁盘上存储基因组序列。它允许快速访问基因组中的特定部分。

此crate受py2bit的启发,并试图提供类似的功能,没有C依赖项,没有外部crate依赖项,并且性能出色。它遵循2位规范版本0

示例

use twobit::TwoBitFile;

let mut tb = TwoBitFile::open("assets/foo.2bit")?;
assert_eq!(tb.chrom_names(), &["chr1", "chr2"]);
assert_eq!(tb.chrom_sizes(), &[150, 100]);
let expected_seq = "NNACGTACGTACGTAGCTAGCTGATC";
assert_eq!(tb.read_sequence("chr1", 48..74)?, expected_seq);

所有与序列相关的函数都期望范围参数;可以传递..(无界范围)来查询整个序列

assert_eq!(tb.read_sequence("chr1", ..)?.len(), 150);

可以将文件完全缓存到内存中,以提供快速的随机访问,并在解码时避免任何IO操作

let mut tb_mem = TwoBitFile::open_and_read("assets/foo.2bit")?;
let expected_seq = tb.read_sequence("chr1", ..)?;
assert_eq!(tb_mem.read_sequence("chr1", ..)?, expected_seq);

2bit文件提供两种类型的掩码:N掩码(又称硬掩码)用于未知或任意核苷酸,以及软掩码用于小写核苷酸(例如,“t”而不是“T”)。

硬掩码始终启用;软掩码默认禁用,但可以手动启用

let mut tb_soft = tb.enable_softmask(true);
let expected_seq = "NNACGTACGTACGTagctagctGATC";
assert_eq!(tb_soft.read_sequence("chr1", 48..74)?, expected_seq);

无运行时依赖