2个不稳定版本
0.2.0 | 2020年9月2日 |
---|---|
0.1.0 | 2020年9月2日 |
#199 在 生物学
29KB
458 行
Multi-seq-align
Rust中操作多个序列比对(DNA/蛋白质)的库。
与将比对序列存储为多个字符串不同,multi_seq_align
使用字符列表将基或残基存储在 Alignment
中,就像一个矩阵。这使得可以轻松访问比对的特定行和列。
用法
let mut kappa_casein_fragments_alignment = Alignment::with_sequences(
&[
b"PAPISKWQSMP".to_vec(),
b"HAQIPQRQYLP".to_vec(),
b"PAQILQWQVLS".to_vec(),
],
)?;
// Let's extract a column of this alignment
assert_eq!(
kappa_casein_fragments_alignment.nth_position(6).unwrap(),
[&b'W', &b'R', &b'W']
);
// But we also have the aligned sequence for the Platypus
// Let's add it to the original alignment
kappa_casein_fragments_alignment.add(
b"EHQRP--YVLP".to_vec(),
)?;
// the new aligned sequence has a gap at the 6th position
assert_eq!(
kappa_casein_fragments_alignment.nth_position(6).unwrap(),
[&b'W', &b'R', &b'W', &b'-']
);
// We can also loop over each position of the alignment
for aas in kappa_casein_fragments_alignment.iter_positions() {
println!("{:?}", aas);
assert_eq!(aas.len(), 4); // 4 sequences
}
在这里,我使用 u8
实例化了比对,但 Alignment
适用于泛型,如数字、自定义或第三方结构。
特性
- 一次从一个或多个比对序列创建
Alignment
(请参阅add()
和create()
)。 - 提取比对的列(请参阅
iter_positions()
和iter_sequences(
)。这个库目前处于早期开发阶段。我不建议在生产环境中使用它,但我对进一步发展这个项目的想法很感兴趣。为了改进API并使其易于在其他项目中使用,还需要做一些工作。
想法
- 计算保守得分
- 识别保守位点
- 计算共识序列
- 合并/修剪比对
- 比对文件的序列化/反序列化
- 提取子比对
- 位置
- 基序
优化
我的目标是减少这个库的占地面积,为此还需要做些工作。代码最终将被优化,以使其运行更快并更好地使用内存。
问题
以泛型方式确保所有序列长度相同具有挑战性,并导致一些代码不够优雅。
想法 & 错误
请在 项目仓库 上创建一个新的问题。
许可
Aa-regex 根据 Apache 许可协议(版本 2.0)进行分发。有关详细信息,请参阅 LICENSE。
依赖项
~0.3–0.8MB
~20K SLoC