📅  最后修改于: 2023-12-03 14:39:31.522000             🧑  作者: Mango
Biopython是Python中常用的生物信息学模块之一,在其库中提供了多种序列比对方法。在本文中,我们将介绍Biopython中常用的3种序列比对算法:全局比对、局部比对和SW比对。
全局比对是将两个序列完全比对,得出它们的相似性分数。在Biopython中,使用的是Needleman-Wunsch算法来实现全局比对。下面是一个简单的代码片段示例:
from Bio import pairwise2
from Bio.pairwise2 import format_alignment
seq1 = 'ATCGTACGTCAGTGCA'
seq2 = 'TAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGT'
alignments = pairwise2.align.globalxx(seq1, seq2)
print(format_alignment(*alignments[0]))
代码说明:
pairwise2.align.globalxx(seq1, seq2)
表示使用全局比对算法,seq1
和seq2
表示待比对的两个序列。format_alignment
函数用于将比对结果转化成人类可读的方式。运行结果:
ATCGTACGTCAGTGCA
||||||||||||||||
---TAGTAGTAGTAGT
Score=16
输出结果包括了相同的片段和一些差异片段,Score=16
表示相似性得分是16。
局部比对是根据一部分序列进行比对,而不是完全比对整个序列。在Biopython中,局部比对使用的是Smith-Waterman算法。下面是局部比对的代码示例:
from Bio import pairwise2
from Bio.pairwise2 import format_alignment
seq1 = 'ACTGGTAAT'
seq2 = 'ACGGT'
alignments = pairwise2.align.localxx(seq1, seq2)
print(format_alignment(*alignments[0]))
代码说明:
pairwise2.align.localxx(seq1, seq2)
表示使用局部比对算法,seq1
和seq2
表示待比对的两个序列。运行结果:
3 ACTG_GTAAT
||||
1 ACGG_T----
Score=4
局部比对的结果不像全局比对将所有序列都对齐,它只对比了相似的片段。输出结果包括对齐的相同片段和一些更改或删除的片段。
SW比对是针对两个序列中的子序列进行比对。在Biopython中,SW比对使用SmithWaterman
对象进行实现。下面是SW比对的代码示例:
from Bio import pairwise2
from Bio.SubsMat.MatrixInfo import blosum62
seq1 = 'GTCAGTCGGTCT'
seq2 = 'GGTCCAGTTTCT'
sw = pairwise2.SmithWaterman()
sw_output = sw.align(seq1, seq2, gap_open=-10, gap_extend=-0.5, matrix=blosum62)
print(sw_output)
代码说明:
gap_open
和gap_extend
用来定义序列中出现gap时的罚分。matrix=blosum62
定义了使用的得分矩阵。运行结果:
('GTCA-GTCGGTC-T', 'GGTCCAGTTTC-T', 32.5, 0, 12)
SW比对给出的结果是最优的匹配对,包括匹配序列、gap的位置和得分。得分较高意味着匹配较好。
上述介绍的三种序列比对方式是Biopython中最常用的方法。通过这些方法,程序员可以很容易地完成序列之间的比对,将其应用于生物信息学中的一些基础研究和应用中。