Python 中的 Smith-Waterman 算法

Aditya Raj 2023年1月30日 2022年7月18日
  1. Python 中的 Smith-Waterman 算法
  2. 结论
Python 中的 Smith-Waterman 算法

Smith-Waterman 算法用于执行字符串的局部序列比对。这些字符串主要代表 DNA 链或蛋白质序列。

本文讨论了 Smith-Waterman 算法在 Python 中的实现。

Python 中的 Smith-Waterman 算法

swalign 模块包含几个在 Python 中实现 Smith-Waterman 算法的函数。你可以通过在命令行中执行以下语句来使用 PIP 安装 swalign 模块。

pip3 install swalign

上述语句为 Python 版本 3 安装模块。要在 Python 版本 2 中安装模块,可以使用以下命令。

pip install swalign

安装 swalign 模块后,我们将使用以下步骤在 Python 程序中实现 Smith-Waterman 算法。

  1. 首先,我们将使用 import 语句导入 swalign 模块。

  2. 要进行比对,我们必须创建一个核苷酸评分矩阵。在矩阵中,我们为每个匹配和不匹配提供一个分数。

    通常,我们使用 2 表示匹配分数,使用 -1 表示不匹配。

  3. 要创建核苷酸评分矩阵,我们将使用 NucleotideScoringMatrix() 方法。NucleotideScoringMatrix() 将匹配分数作为其第一个输入参数,将不匹配分数作为其第二个输入参数。

    执行后,它返回一个 IdentityScoringMatrix 对象。

  4. 一旦我们得到核苷酸矩阵,我们将使用 LocalAlignment() 方法创建一个 LocalAlignment 对象。LocalAlignment() 方法将核苷酸评分矩阵作为其输入并返回一个 LocalAlignment 对象。

  5. 一旦我们得到 LocalAlignment 对象,我们可以使用 align() 方法执行 Smith-Waterman 算法。

  6. align() 方法,当在 LocalAlignment 对象上调用时,将代表 DNA 链的字符串作为其第一个输入参数。它需要另一个代表参考 DNA 链的字符串。

  7. 执行后,align() 方法返回一个 Alignment 对象。Alignment 对象包含输入字符串的匹配详细信息和不匹配以及其他一些详细信息。

你可以在以下示例中观察整个过程。

import swalign

dna_string = "ATCCACAGC"
reference_string = "ATGCAGCGC"
match_score = 2
mismatch_score = -1
matrix = swalign.NucleotideScoringMatrix(match_score, mismatch_score)
lalignment_object = swalign.LocalAlignment(matrix)
alignment_object = lalignment_object.align(dna_string, reference_string)
alignment_object.dump()

输出:

Query:  1 ATGCAGC-GC 9
          ||.|| | ||
Ref  :  1 ATCCA-CAGC 9

Score: 11
Matches: 7 (70.0%)
Mismatches: 3
CIGAR: 5M1I1M1D2M

结论

本文讨论了如何使用 Python 的 swalign 模块实现 Smith-Waterman 算法。

你还可以将 scikit learn-bio 模块中定义的函数用于 Python 中 Smith-Waterman 算法的其他实现。

相关文章 - Python Algorithm