Mis a jour le 2025-04-14, 12:10

Création alignements pairwise

Alignment pairwise directement en python :
  • utiliser le module pairwise2 : from Bio import pairwise2.
  • attention : c'est terriblement lent !
  • alignment de séquences nucléotidiques :
    • alignement global : alignments = pairwise2.align.globalms('CGACTAGTTTTGACGGGAG', 'ACGATGCGACATTTTGACGGG', 2, -1, -2, -0.5) : +2 pour un match, -1 pour un mismatch, -2 pour une ouverture de gap, -0.5 pour une extension de gap.
    • alignement local : alignments = pairwise2.align.localms('CGACTAGTTTTGACGGGAG', 'ACGATGCGACATTTTGACGGG', 2, -1, -2, -0.5) : +2 pour un match, -1 pour un mismatch, -2 pour une ouverture de gap, -0.5 pour une extension de gap.
    • le résultat renvoyé est une liste d'alignements sous forme d'un tuple, par exemple : [('------CGACTAGTTTTGACGGGAG', 'ACGATGCGAC-A-TTTTGACGGG--', 26.0, 6, 23)] (un seul alignement ici). Les éléments du tuple sont :
      • séquence 1 alignée : la totalité de la séquence, même si l'alignement est local !
      • séquence 2 alignée : la totalité de la séquence, même si l'alignement est local !
      • score.
      • début (intéressant pour alignement local).
      • fin (intéressant pour alignement local).
    • si l'alignement est local, le score calculé est pour un alignement local, donc les gaps aux extrémités ne comptent pas dans le score.
    • si l'alignement est local et que "align" est un des tuples renvoyés, on peut afficher les segments alignés en utilisant le début et la fin par :
      (begin, end) = (align[3], align[4])
      print(align[0][begin:end])
      print(align[1][begin:end])
            
  • alignement de séquences protéiques : normalement, il faut une matrice de score qui est fournie comme dictionnaire dont les clefs sont des paires de lettre et les valeurs sont les scores :
    • exemple de matrice : from Bio.SubsMat import MatrixInfo; matrix = MatrixInfo.blosum62.
    • pour avoir la liste de toutes les matrices de score disponibles : MatrixInfo.available_matrices.
    • alignement global : alignments = pairwise2.align.globalds('IKLQVPWSNMAQ', 'GHIKLQPWSNMAQ', MatrixInfo.blosum62, -3, -0.5).
    • alignement local : alignments = pairwise2.align.localds('IKLQVPWSNMAQ', 'GHIKLQPWSNMAQ', MatrixInfo.blosum62, -3, -0.5).
    • le 'd' dans globalds et localds indique qu'un dictionnaire est passé pour le scoring au lieu de passer un score de match et un score de mismatch.
  • une liste de plusieurs alignements peuvent être renvoyée si plusieurs alignements optimaux (de même score).
  • on peut se limiter à un seul alignement renvoyé en rajoutant l'option : one_alignment_only = 1
  • attention : la fonction format_alignment ne fait pas ce que l'on veut : elle met des '|' partout, même quand pas de match !
  • pairwise2 est implémenté en C (cpairwise2), mais si le module C n'est pas disponible, il peut tourner en pur python.

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert