5个稳定版本

1.2.1 2024年6月26日
1.1.0 2024年6月17日
1.0.1 2024年6月11日

数据结构 中排名第372

MIT 许可证

63KB
1.5K SLoC

minimizer-iter

crates.io docs

遍历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

贡献者

依赖项

~255KB