Biopython:DNA 序列之间的局部比对未找到最佳比对

Biopython: Local alignment between DNA sequences doesn't find optimal alignment

我正在编写代码来查找两个序列之间的局部比对。这是我一直在研究的一个最小的工作示例:

from Bio import pairwise2
from Bio.pairwise2 import format_alignment
seq1 = "GTGGTCCTAGGC"
seq2 = "GCCTAGGACCAC"
# scores for the alignment
match =1
mismatch = -2
gapopen = -2
gapext = 0
# see: http://biopython.org/DIST/docs/api/Bio.pairwise2-module.html
# 'localms' takes <seq1,seq2, match,mismatch,open,extend>
for a in pairwise2.align.localms(seq1,seq2,match,mismatch,gapopen,gapext):
    print(format_alignment(*a))

以下代码运行输出

GTGGTCCTAGGC----
      |||||
----GCCTAGGACCAC
  Score=5

但是得分“6”应该是可能的,找到 5 个对齐旁边的 'C-C',如下所示:

GTGGTCCTAGGC----
     ||||||
----GCCTAGGACCAC
  Score=6

对正在发生的事情有什么想法吗?

这似乎是当前在 Biopython 的 pairwise2 模块中实现局部比对的一个错误。最近在 Biopython's GitHub 上有一个拉取请求 (#782),应该可以解决您的问题:

>>> from Bio import pairwise2  # This is the version from the pull request
>>> seq1 = 'GTGGTCCTAGGC'
>>> seq2 = 'GCCTAGGACCAC'
>>> for a in pairwise2.align.localms(seq1, seq2, 1, -2, -2, 0):
        print pairwise2.format_alignment(*a)


GTGGTCCTAGGC----
     ||||||
----GCCTAGGACCAC
  Score=6
  1. 如果您只处理短序列,您可以直接下载 拉取请求中 pairwise2.py 的代码 上文提到的。此外,您需要 'inactivate' 各自的 C 模块(cpairwise2.pydcpairwise2.so),例如通过重命名或删除 在末尾导入 C 函数 pairwise2.py(from .cpairwise import ...).

  2. 如果您正在处理较长的序列,您将需要 C 模块的速度增强。因此,您还必须下载 cpairwise2module.c 来自 pull request 并编译它 进入 cpairwise2.pyd(对于 Windows 系统)或 cpairwise2.so(Unix,Linux)。

编辑:在 Biopython 1.68 中问题已解决。