5个稳定版本
1.2.1 | 2024年6月26日 |
---|---|
1.1.0 | 2024年6月17日 |
1.0.1 | 2024年6月11日 |
在 数据结构 中排名第372
63KB
1.5K SLoC
minimizer-iter
遍历DNA序列的最小化器。
特性
- 单次遍历中迭代最小化器
- 输出带有位置的位打包最小化器
- 支持由Groot Koerkamp & Pibiri引入的mod-minimizers
- 支持规范最小化器
- 支持自定义核苷酸的位编码
- 支持自定义 哈希器,默认使用 wyhash
- 可以设置种子以产生不同的排序
如果您想手动使用底层数据结构,请查看minimizer-queue 包。
示例用法
use minimizer_iter::MinimizerBuilder;
// Build an iterator over minimizers
// of size 21 with a window of size 11
// for the sequence "TGATTGCACAATC"
let min_iter = MinimizerBuilder::<u64>::new()
.minimizer_size(21)
.width(11)
.iter(b"TGATTGCACAATC");
for (minimizer, position) in min_iter {
// ...
}
如果您想使用mod-minimizers,只需将 new()
更改为 new_mod()
use minimizer_iter::MinimizerBuilder;
// Build an iterator over mod-minimizers
// of size 21 with a window of size 11
// for the sequence "TGATTGCACAATC"
let min_iter = MinimizerBuilder::<u64, _>::new_mod()
.minimizer_size(21)
.width(11)
.iter(b"TGATTGCACAATC");
for (minimizer, position) in min_iter {
// ...
}
此外,迭代器还可以产生规范最小化器,以便序列及其互补序列选择相同的最小化器。要做到这一点,只需在构建器中添加 .canonical()
MinimizerBuilder::<u64>::new()
.canonical()
.minimizer_size(...)
.width(...)
.iter(...)
如果您需要更长的最小化器(> 32个碱基),可以指定更大的整数类型,例如 u128
MinimizerBuilder::<u128>::new()
.minimizer_size(...)
.width(...)
.iter(...)
有关更多详细信息,请参阅文档。
基准测试
要与其他最小化器的实现进行基准测试,请克隆此仓库并运行
cargo bench
贡献者
- Igor Martayan(主要开发者)
依赖项
~255KB