#sequence #fasta #fastq #bioinformatics

syncmers

Rust库,用于查找syncmers

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

MIT/Apache

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