1

J'écris du code pour trouver des alignements locaux entre deux séquences. Voici un minimum, par exemple de travail que je travaille sur:Biopython: l'alignement local entre les séquences d'ADN ne trouve pas d'alignement optimal

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)) 

Le code suivant fonctionne avec la sortie

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

Mais un score de « 6 » devrait être possible, trouver le « CC 'à côté des 5 alignements, comme si:

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

Des idées sur ce qui se passe?

Répondre

3

Cela semble être un bug dans l'implémentation actuelle des alignements locaux dans le module pairwise2 de Biopython. Il y a une récente demande de traction (# 782) sur Biopython's GitHub, ce qui devrait résoudre votre problème:

>>> 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. Si vous travaillez avec de courtes séquences seulement, vous pouvez simplement télécharger le code pour pairwise2.py de la traction demander mentionné ci-dessus. De plus, vous devez "inactiver" le module C respectif (cpairwise2.pyd ou cpairwise2.so), par ex. en le renommant ou en supprimant l'importation des fonctions C à la fin de pairwise2.py (from .cpairwise import ...).

  2. Si vous travaillez avec des séquences plus longues, vous aurez besoin de l'amélioration de la vitesse du module C. Ainsi, vous devez également télécharger cpairwise2module.c à partir de la demande d'extraction et le compiler en cpairwise2.pyd (pour les systèmes Windows) ou cpairwise2.so (Unix, Linux).

EDIT: Dans Biopython 1.68 le problème est résolu.