在biopython中的format_alignment中对序列的一部分着色

时间:2015-09-28 14:00:15

标签: biopython sequence-alignment

我正在使用format_alignment来查找两个序列之间的pariwise对齐。我想在完全对齐中突出显示具有不同颜色(在基数40和基数54之间)的序列的一部分,以便清楚它已对齐的部分。上述序列需要在两个序列中突出显示。你能建议我如何在biopython中做到这一点

示例序列:

序列1:ccagctgtttaattgagttgtcatatgttaataacggtatattggaacactgtataa

序列2:CCAGCTGTTTAATTGAGTTGTCATATGTTAATAACGGTATATTGGAACACTGTATAA

1 个答案:

答案 0 :(得分:1)

你可以尝试,

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

你明白了,

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

你得到:

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

你得到:

align color 2