提起达尔文的生物进化论,在人们的普遍认知中,这是开创现代科学的重要理论之一。像地球上其他所有为生存而挣扎的生物一样,病毒也会进化或变异。让我们看看人类病毒的来源——蝙蝠病毒的RNA核苷酸序列片段:AAAATCAAAGCTTGTGTTGAAGAAGTTACAACAACTCTGGAAGAAACTAAGTT与一小段人类的新型冠状病毒肺炎(CoronaVirusDisease,COVID-19)的RNA核苷酸序列:AAAATTAAGGCTTGCATTGATGAGGTTACCACAACACTGGAAGAAACTAAGTT显然,冠状病毒已经改变了它的内部结构以适应新的宿主物种(更准确地说,大约20%的冠状病毒内部结构都发生了突变),但仍然保持了足够数量的一致,使它仍然忠于它的起源物种。事实上,研究表明,COVID-19会不断发生变异,以提高其存活率。在与冠状病毒的对抗中,我们不仅需要探究击败病毒的方法,更需要明白病毒是如何变异的,以及如何应对病毒变异。这篇文章中将从以下几个方面进行阐述:①从表面上解释RNA核苷酸序列是什么②使用K-Means创建基因组信息集群③使用PCA实现可视化集群什么是基因组序列?DNA是脱氧核酸的简称,其基本单位是脱氧核糖核苷酸(也叫脱氧核苷酸),是大多数生物的遗传物质,在真核生物、原核生物、DNA病毒内都存在的一种核酸;RNA则是核糖核酸的简称,其基本单位是核糖核苷酸,是RNA病毒的遗传物质。新型冠状病毒的基因序列就是RNA.基因组测序,通常被比作“解码”,是分析取自样本的脱氧核糖核酸(DNA)的过程。在每个正常细胞中有23对染色体,DNA的结构是这样的:
DNA卷曲的双螺旋结构可以使它展开成阶梯状,这个梯子是由成对的化学字母组成的,叫做碱基。在DNA中有四种碱基:腺嘌呤、胸腺嘧啶、鸟嘌呤和胞嘧啶。腺嘌呤只与胸腺嘧啶结合,鸟嘌呤只与胞嘧啶结合,这些碱基分别用A、T、G和C表示。这些碱基形成了各种各样的代码,指导有机体如何构建蛋白质——这就是DNA如何控制病毒一举一动的基础。
使用专门的设备,包括测序仪器和专门的标签,可以显示特定的DNA序列片段。由此获得的信息将经过进一步的分析和比较,使研究人员能够识别基因的变化,与疾病和表型的关系,并确定潜在的药物靶标。一长串的基因组序列A、T、G和C,代表了有机体对环境的反应,而生物体的突变又是通过改变DNA产生的,因此观察基因组序列是分析冠状病毒突变的有效手段,其中序列对齐法是常用的方法,主要通过将两个或多个核酸序列或者蛋白质序列进行对比,并将其中相似的结构区域突出显示。序列对齐:给定两个DNA序列A和B,对齐的方式是将空格分别插入到A和B序列中,得到具有相同长度的对齐后的序列C和D;空格可以插入到任意的位置(包括两端),但是相同位置不能同时为空格,也即是不存在C和D同时为空格的情况。然后为对齐后的序列的每个位置打分,总分为每个位置得分之和,具体的打分规则如下:a、如果C==D且都不是空格,得3分;b、如果C!=D[j]且都不是空格,得1分;c、如果C或者D是空格,得0分。求给定原序列A和B的一个对齐方案,使得该对齐方案的总分最高。例如,序列原序列A和B如下:StringstrA=GATC;StringstrB=ATCG;则其中一个对齐方案如下:GATC**ATCG该方案总得分score=2*0+3*3=9分。因此,经常通过序列对齐方式来比较序列与已知(尤其是功能和结构已知的序列)之间的同源性,预测未知序列的功能。因此本文后续对于序列的分析主要是针对序列对齐后形成的指标特征进行探索和分析。数据的获取数据可以在Kaggle上找到,如下图所示:
每一行代表蝙蝠病毒的一个突变。首先,花一分钟来欣赏大自然是多么不可思议——在几周内,冠状病毒已经产生了个突变来增加存活率。一些重要的列名解释:
queryacc.ver表示原始的病毒标识符。subjectacc.ver是病毒突变的标识符。%identity表示序列中与原始病毒相同的百分比。Alignmentlength表示序列中有多少项是相同的或对齐的。mismatches表示突变项和原始项之间的不同项数。bitscore代表了一个衡量标准,衡量序列的对齐程度;分数越高,对齐程度越高。每一列的统计度量如下所示(这些可以在Python中运用data.describe()语句被方便地调用):
有趣的是,通过查看%identity列,我们可以看到一个突变与原始病毒的最小对齐比率约为77.6%。然而巨大的标准偏差(7%的%identity)意味着原始病毒存在广泛的变异范围。在bitscore中巨大标准偏差证实可以证实这一点——标准偏差大于平均值(即代表变异系统大于1,进一步说明了突变发生情况的多样性)!通过相关性热力图可以很好的呈现变量之间的相关性,图形中每个单元表示一个特征与另一个特征的相关性。
我们不难发现,很多数据都是高度相关的,这是可以解释的,因为大多数的度量彼此存在一定的依赖性,因此导致变量之间存在高相关性,可以发现alignmentlength与bitscore之间就具有高度相关性(0.94)。
使用K-Means来创建突变集群K-Means是一种聚类算法,是通过机器学习的方式在特征空间中确定数据点相似群组。我们运用K-Means的目标是找到突变的群体,这样我们就可以对突变的本质以及如何针对性的处理它们有深入的了解。在此之前,我们首先需要确定集群k的数量,虽然这就像在二维空间中绘制一个点一样简单,但在高维空间中是几乎无法实现的(如果我们想要保留最多的信息)。若用“肘部法则”来选择k会显得过于主观,且不准确,所以我们会用轮廓法来代替。轮廓法是给不同取值k的集群打分,来区分聚类的结果好坏程度(好的聚类:内密外疏,同一个聚类内部的样本要足够密集,不同聚类之间样本要足够疏远)。Python中的sklearn库将使K-Means和轮廓法的实现变得非常简单。
通过对上图进行分析,可以发现群体数为5时聚类效果最佳。现在,我们可以进一步确定群体中心,这些点是每个群体的中心,代表了不同群体的突变样本的共性特征。
注:特征已经被标准化,列与列之间无可比性
在此热力图中,行:代表不同的群体,列:代表每个群体的属性。因为在聚类之间需要对于特征按比例进行缩放,以减少不同特征尺度差异的影响,所以图中的数值在数量(缩放值,非原始尺度下的值)上没有任何意义,但是,我们可以通过比较每个列中的缩放值,这使得我们可以对每个突变群体的特征相对大小产生一个更直观的感觉。通过对以上聚类结果的分析,可以让科学家将更多精力聚焦在对不同突变群体的特征研究上,进而针对性的研究不同类型的疫苗,治疗和预防也将变的更有目标性。聚类的结果已经可以帮助我们解决很多方面的问题,但由于存在高维特征及特征之间相关性的存在,让我们不能更好的去解读聚类结果,因此,在下一节中,我们将使用PCA来实现聚类结果的可视化呈现。利用PCA进行集群可视化主成分分析是一种降维方法。它选择多维空间中的正交向量来表示坐标轴,通过特征的空间变换,可以有效降低特征之间的相关性,进而通过贡献度来保留最多的信息的特征,实现降维目的。同样,我们可以通过Python的sklearn库,PCA的执行可以被两行代码实现。首先,我们可以检查被解释的方差比(explainedvarianceratio),这是从原始数据集中保留的统计信息的百分比。在本例中,被解释的方差比是0.,代表信息只有很少部分遗失!在此我们可以确信,无论我们从PCA得到什么分析,数据都是具有很高的可信度。每个新的特征(主成分)都是其他几个列的线性组合。通过热力图,我们可以直观地了解每一特征对于两个成份(新的特征)中的重要性。
通过以上图中数值的分析,关键是要理解在成分1中出现高数值是什么意思——在这种情况下,它的特点是有着更高的一致性,即更接近原始病毒;成分2的主要的特点是拥有更低的一致性,即突变远离原始值,这也反映在bitscore的较大差异上。
通过主成分将所有样本映射到2维空间体系下,可以很明显发现,病毒突变有5条主线,以下通过对这5条线的分析,可以让我们获取更多的信息。可以发现,有四个病毒突变在第一主成分(X轴)的左边,一个在右边。第一主成分的特征是alignmentlength具有很高的取值,这意味着第一个主成分的值越高,对应的alignmentlength就越长(越接近原始病毒)。因此,第一主成分的低值区与原始病毒的遗传距离较远,即大多数病毒集群与原始病毒有很大不同。因此,试图研制疫苗的科学家应该意识到,这种病毒会发生大量变异。第二主成分(Y轴)在同一群体之间的差异性很小,在不同群体之间明显分为3个区段,这就需要后续我们进一步分析,以便能够更好的对于突变群体进行深入了解。结论本文一方面通过使用K-Means聚类算法,能够帮助我们从众多突变样本中快速识别冠状病毒的五个主要典型突变群体,另一方面用PCA分析方法在二维空间中实现这些群体的可视化展现,通过展示结果可以很直观的呈现冠状病毒有很高的突变率(这可能就是它如此致命的原因),通过对于这些分析结果,对于研制冠状病毒疫苗的科学家来说,可以利用群体的共性特征值结合领域专业知识来充分解读每个群体的特征信息,以便有针性的、更好的指导疫苗的研制及预防工作。(文章来源于:towardsdatascience,作者:AndreYe)