1

I am using format_alignment to look for pariwise alignment between two sequences. I want to highlight part of the sequence with a different color (say between base number 40 and base number 54) in the full alignment, so that it is clear to which part it has aligned. The above sequence needs to be highlighted in both sequences. Can you suggest how I can do this in biopython

Example sequences :

Sequence 1 : ccagctgtttaattgagttgtcatatgttaataacggtatattggaacactgtataa

Sequence 2 : CCAGCTGTTTAATTGAGTTGTCATATGTTAATAACGGTATATTGGAACACTGTATAA

Ssank
  • 3,367
  • 7
  • 28
  • 34

1 Answers1

1

you can try,

from Bio.pairwise2 import format_alignment
from Bio import pairwise2
#note: seq1 is equal to seq2 .... however, I use it
seq1 = "ccagctgtttaattgagttgtcatatgttaataacggtatattggaacactgtataa"
seq2 = "CCAGCTGTTTAATTGAGTTGTCATATGTTAATAACGGTATATTGGAACACTGTATAA" 
first = pairwise2.align.globalxx(seq1, seq2)[0]
print(format_alignment(*first))

you get,

---------------------------ccagctgtttaattgagttgtcatatgttaataacggtatattggaacactgtataa-
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CCAGCTGTTTAATTGAGTTGTCATATGT-T-A-A-T-A-A-C-G-G-T-A-T-A-T-T-G-G-A-A-C-A-C-T-G-T-A-T-AA
  Score=0
class bcolors:
    MY_COLOR = '\033[93m'
    ENDC = '\033[0m'

wcolor = (first[0][:40] + bcolors.MY_COLOR + first[0][40:55] + bcolors.ENDC + first[0][55:], first[1], first[2], first[3], first[4])
print(format_alignment(*wcolor))

you get:

color align

wcolor = (first[0][:27] + bcolors.MY_COLOR + first[0][27:84] + bcolors.ENDC + first[0][84:], 
          first[1][:27] + bcolors.MY_COLOR + first[1][27:84] + bcolors.ENDC + first[1][84:], 
          first[2], first[3], first[4])
print(format_alignment(*wcolor))

you get:

align color 2

Jose Ricardo Bustos M.
  • 8,016
  • 6
  • 40
  • 62