📜  Biopython-序列比对(1)

📅  最后修改于: 2023-12-03 14:39:31.522000             🧑  作者: Mango

Biopython-序列比对

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)表示使用全局比对算法,seq1seq2表示待比对的两个序列。
  • 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)表示使用局部比对算法,seq1seq2表示待比对的两个序列。

运行结果:

3 ACTG_GTAAT
  ||||
1 ACGG_T----
  Score=4

局部比对的结果不像全局比对将所有序列都对齐,它只对比了相似的片段。输出结果包括对齐的相同片段和一些更改或删除的片段。

SW比对

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_opengap_extend用来定义序列中出现gap时的罚分。
  • matrix=blosum62定义了使用的得分矩阵。

运行结果:

('GTCA-GTCGGTC-T', 'GGTCCAGTTTC-T', 32.5, 0, 12)

SW比对给出的结果是最优的匹配对,包括匹配序列、gap的位置和得分。得分较高意味着匹配较好。

结论

上述介绍的三种序列比对方式是Biopython中最常用的方法。通过这些方法,程序员可以很容易地完成序列之间的比对,将其应用于生物信息学中的一些基础研究和应用中。