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

问题描述 投票:2回答:1

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

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

关于发生了什么的任何想法?

alignment local biopython dna-sequence sequence-alignment
1个回答
4
投票

这似乎是Biopython pairwise2模块中当前实现局部对齐的一个错误。最近有关qazxsw poi的拉取请求(#782),它可以解决您的问题:

Biopython's GitHub
  1. 如果您只使用短序列,您可以从上面提到的pull请求下载>>> 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 的代码。此外,您需要“灭活”相应的C模块(pairwise2.pycpairwise2.pyd),例如通过重命名或删除cpairwise2.sopairwise2.py)末尾的C函数导入。
  2. 如果您正在使用更长的序列,则需要C模块的速度增强。因此,您还必须从pull请求下载from .cpairwise import ...并将其编译为cpairwise2module.c(适用于Windows系统)或cpairwise2.pyd(Unix,Linux)。

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

© www.soinside.com 2019 - 2024. All rights reserved.