当前位置: 首页 > 工具软件 > SARS > 使用案例 >

使用Biopython比较基因组相似度:新冠(COVID19)与非典(SARS)、中东呼吸综合征(MERS)

穆子琪
2023-12-01

序列比对

定义

序列比对(alignment):运用特定的算法找出两个或多个序列之间产生最大相似度得分的空格(空位)插入或序列排列方案。

分类

  • 多序列比对:两条以上序列的序列比对
  • 双序列比对:分为全局比对和局部比对
  • 全局比对:用于比较两个长度近似的序列,常用Needleman-Wunsch算法
  • 局部比对:用于比较一长一短两条序列

用途

  • 确定:一个未知序列是否属于某个家族
  • 建立:系统发生树,查看物种间或序列序列间的关系
  • 模式识别:一些特别保守的序列片段往往对应重要的功能区域,通过多序列比对,可以找到这些保守片段
  • 已知推未知:把已知有特殊功能的序列片段通过多序列比对做成模型,然后根据模型推测未知的片段序列是否也具有功能
  • 其他:预测蛋白质/RNA二级结构
## 比较COVID19与SARS、MERS序列的相似性
from Bio import SeqIO
## 数据来源:GenBank
## https://www.ncbi.nlm.nih.gov/nuccore/NC_045512
covid = SeqIO.read("covid19.fasta", "fasta")
covid

SeqRecord(seq=Seq(‘ATTAAAGGTTTATACCTTCCCAGGTAACAAACCAACCAACTTTCGATCTCTTGT…AAA’), id=‘NC_045512.2’, name=‘NC_045512.2’, description=‘NC_045512.2 Severe acute respiratory syndrome coronavirus 2 isolate Wuhan-Hu-1, complete genome’, dbxrefs=[])

sars = SeqIO.read("sars.fasta", "fasta")
mers = SeqIO.read("mers.fasta", "fasta")
from Bio import Align
## 算法:
# 比较两序列对应碱基是否相同
# 相同得1,不同得0
# 通过插入空位,使得分最高,获得全局比对
aligner = Align.PairwiseAligner()
## 用一个简单例子做试验
alignments = aligner.align('ATCT', 'ATCG')
## 打印得分最高的所有结果
for alignment in alignments:
    print(alignment)

ATCT-
|||–
ATC-G

ATC-T
|||–
ATCG-

ATCT
|||.
ATCG

## 这里只用到得分
mers_score = aligner.score(covid.seq, mers.seq)
sars_score = aligner.score(covid.seq, sars.seq)
## 在这种算法的基础上,满分即序列长度
mers_similarity = mers_score / len(covid)
sars_similarity = sars_score / len(covid)
print('名称\t相似度')
print('MERS\t%.2f' % mers_similarity)
print('SARS\t%.2f' % sars_similarity)

名称 相似度
MERS 0.70
SARS 0.83

 类似资料: