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