5个版本
0.1.5 | 2022年12月19日 |
---|---|
0.1.4 | 2022年10月22日 |
0.1.3 | 2022年10月17日 |
0.1.1 | 2022年10月17日 |
0.1.0 | 2022年10月17日 |
在 #fastq 中排名第33
每月下载量 38
在 2 个crate中使用(通过 libsfasta)
12KB
164 代码行
Rust中的Syncmers库
Syncmers按照Dutta等人2022年的定义,见https://www.biorxiv.org/content/10.1101/2022.01.10.475696v2.full Esp Fig 1b / 算法1。计划很快实现其他方法。
定义
使用参数化的syncmer方案,syncmer是一个kmer,其最小的smer位于给定的目标位置(t)。
从 &[u8] 中提取Syncmers
let sequence = b"CCAGTGTTTACGG";
let syncmers = find_syncmers(5, 2, &[2], None, sequence);
assert!(syncmers == vec![b"CCAGT", b"TTACG"]);
println!("{:?}", syncmers);
从 &[u8] 中提取Syncmers,下采样到20%
let sequence = b"CCAGTGTTTACGG";
let syncmers = find_syncmers(5, 2, &[2], Some(0.2), sequence);
assert!(syncmers == vec![b"CCAGT", b"TTACG"]);
println!("{:?}", syncmers);
从 &[u8] 中提取Syncmers,保留80%
let sequence = b"CCAGTGTTTACGG";
let syncmers = find_syncmers(5, 2, &[2], Some(0.8), sequence);
assert!(syncmers == vec![b"CCAGT", b"TTACG"]);
println!("{:?}", syncmers);
查找Syncmers的位置
let sequence = b"CCAGTGTTTACGG";
let syncmer_positions = find_syncmers_pos(5, 2, &[2], None, sequence);
println!("{:?}", syncmer_positions);
assert!(syncmer_positions == vec![0, 7]);
变更日志
0.1.4: 添加了下采样支持
依赖关系
~1.5MB
~36K SLoC