1

Я пишу код, чтобы найти локальные выравнивания между двумя последовательностями. Вот минимальный, рабочий пример, я работал на:Biopython: Локальное выравнивание между последовательностями ДНК не находит оптимального выравнивания

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 «» должно быть возможным, находя «CC 'рядом с 5 выравниваниями, например:

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

Любые идеи о том, что происходит?

ответ

3

Это, кажется, ошибка в текущей реализации локальных выравниваний в модуле parwise2 Biopython. Существует последний запрос тянуть (# 782) на Biopython's GitHub, который должен решить проблему:

>>> 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.pyd или cpairwise2.so), например. путем переименования или удаления импорта функций C в конце pairwise2.py (from .cpairwise import ...).

  2. Если вы работаете с более длинными последовательностями, вам потребуется усиление скорости модуля C. Таким образом, вам также нужно загрузить cpairwise2module.c из запроса на извлечение и скомпилировать его в cpairwise2.pyd (для систем Windows) или cpairwise2.so (Unix, Linux).

EDIT: В Biopython 1.68 проблема решена.

Смежные вопросы