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 中使用
69KB
1.5K SLoC
twobit
纯Rust实现的2bit文件读取器。
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);