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

标签 alignment local biopython dna-sequence sequence-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 代码 上文提到的。此外,您需要“停用”相应的 C 模块(cpairwise2.pydcpairwise2.so),例如通过重命名或删除 最后导入 C 函数 pairwise2.py(from .cpairwise import ...)。

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

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

关于alignment - Biopython:DNA 序列之间的局部比对未找到最佳比对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874826/

相关文章:

css - 对齐 botton div,在未嵌套的顶部 div 之上,其中底部 div 的 z-index 为 :1;

css - 是否可以水平居中对齐一行加起来不等于 12 的 Bootstrap 跨度?

python:我可以将基于部分名称的文件移动到具有该名称的文件夹中吗

python - Biopython:resseq 与 pdb 文件不匹配

html - CSS3/HTML5/Javascript 竖屏调整大小

ruby - Ruby 中方法的静态局部变量?

c++ - 返回本地作为值/引用

c++ - 为什么模板非类型参数指针和引用参数需要是全局的

python - 将序列从 FASTA 文件提取到多个文件,文件基于单独文件中的 header_ID

html - Twitter 和 Facebook 按钮对齐