#生物信息学 #dna #蛋白质 #比对 #msa

multi-seq-align

操作多个序列比对(DNA/蛋白质)

2个不稳定版本

0.2.0 2020年9月2日
0.1.0 2020年9月2日

#199生物学

Apache-2.0

29KB
458

Multi-seq-align

stability-experimental

Rust Rust Documentation Crates.io version Crates.io license

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