全文共2338字,預計學習時長9分鐘
病毒和其他微生物一樣,為了在地球上存活,不斷進化和變異。這對於人類來說就有點兒可怕了,尤其是新冠病毒肆虐全球的今天,它還想整什麼么蛾子?
事實上,變異已經發生了。先來看一段由人類病毒進化而來的蝙蝠病毒的RNA核苷酸序列:
AAAATCAAAGCTTGTGTTGAAGAAGTTACAACAACTCTGGAAGAAACTAAGTT
以及一段新冠病毒的RNA核苷酸序列:
AAAATTAAGGCTTGCATTGATGAGGTTACCACAACACTGGAAGAAACTAAGTT
顯然,新冠病毒為了適應新宿主,其原始結構已發生改變。準確來說,已經有20%的原始結構發生變異,但因大部分結構並未改變,所以病毒還未發生變種。
研究者發現新冠病毒已發生重複變異以持續存活。在與新冠病毒的較量中,我們不僅要知道如何消滅病毒,還要了解病毒如何變異以及怎樣應對病毒變異。本文將嘗試用K-Means和PCA探究這一點。
什麼是基因組序列?
如果您對RNA核苷酸序列有所瞭解,那麼可直接略過這部分內容。
基因組序列,通常我們稱之為“解碼”,是對樣本進行DNA分析的重要步驟。一般來說,正常細胞中有23對攜帶DNA結構的染色體。
DNA為雙螺旋結構,解開後呈梯形,構成梯形的是成對出現的鹼基。DNA有四種鹼基,分別是:腺嘌呤、胸腺嘧啶、鳥嘌呤和胞嘧啶。其中,腺嘌呤只和胸腺嘧啶配對,鳥嘌呤只和胞嘧啶配對。這四種鹼基分別用A、T、G、C表示。
這些鹼基對通過排列組合可以決定生物體蛋白質的具體結構,也就是從本質上決定病毒如何作用的DNA。
通過使用特殊儀器,比如排序儀器和一些特殊的標記法,可以揭開某特殊片段DNA序列的神秘面紗。而由此獲得的信息可以進一步地分析和比較,有助於幫助研究者識別基因變化、疾病和表型相關以及判斷藥物靶標。
基因組序列,由A、T、G和C組成的長鏈,是生物體對自然環境的具體表現。生物體的變異是通過改變DNA來完成的。研究基因組序列是分析病毒變異的有效方式。
瞭解數據
以下數據可在 Kaggle找到:
每一行數據表示蝙蝠病毒發生的一次變異。僅僅幾周時間,新冠病毒為提高存活率已經發生了262次變異。
一些重要數據:
· query acc.ver表示原始病毒的標示符。
· Mismatches表示變異病毒和原始病毒的不同項的數量
· subject acc.ver 表示變異病毒的標示符。
· % identity表示原始病毒和變異病毒的相似程度。
· alignment length 表示序列中相同或形近數目的具體數量。
· bit score表示形近度,分數越高,形近度越高。
下圖為一些數據每列的統計數值(此數據用Python通過data.describe()便可輕鬆得出):
通過觀察 % identity 列的數據,我們可以發現一個有趣的現象,每次變異的最小比對值大約為77.6%。對於這列數據而言,7%的標準偏差已經算相當大了,而這麼大的標準差也就意味著變異範圍的擴大。bit score的值也表明標準偏差已經很大了,竟然比均值還大!
關聯熱圖是將數據可視化的好方法。每一單元格都表明了各個特性之間的關聯。
許多數據彼此間高度關聯,因為大多數數值的變化是相互影響的。這裡需要特別注意的是alignment length 和 bit score的高度關聯性。
運用K-Means創造變異集群
K-Means是一種應用於機器學習的聚類算法,可發現未來空間內的數據點群。K-Means的目標是發現變異集群,以此來為病毒本質的研究和處理提供依據。
然而,我們仍然需要選擇集群k的數量。雖然這和在二維中繪製點一樣簡單,但在高維中是無法實現的(如果我們想保留大部分信息的話)。運用肘部方法選擇k過於主觀、不準確,所以我們將使用剪影法。
剪影法是k個聚類的分數,說明聚類對數據的適應程度。Python中的sklearn庫令使用K-Means和silouhette方法變得非常簡單。
似乎5個集群對數據來說是最好的。現在,我們可以確定集群中心了。這些是每個集群圍繞的點,代表了(在本例中)5種主要突變類型的數值評估。
Note: The features have been standardized to put them all on the samescale. Otherwise, columns would not be comparable.
此熱圖中的每列表示每個群集的屬性。因為這些點是按比例縮放的,所以實際的註釋值在數量上並沒有意義。
但是,可以比較每列中的縮放值。你可以很直觀地感受到每個變異集群的相對屬性。如果科學家要研發一種疫苗,則應該解決virii的主要病毒群。
下一步是運用PCA將集群可視化。
運用PCA將集群可視化
PCA是一種降維方法,選擇多維空間中的正交向量來表示軸,這樣一來就保留了大部分信息(方差)。
使用流行的Python庫sklearn,可以用兩行代碼實現PCA。首先,我們可以檢查解釋的方差比。這是原始數據集中保留的統計信息的百分比。在這種情況下,解釋的方差比是0.9838548580740327,這簡直是天文數字!
可以確信的是,我們從PCA中得到的任何分析都將是真實的數據。
每個新特徵(主成分)都是幾個其他列的線性組合。我們可以用熱圖直觀地看到一個列對兩個主要組件中的任何一個都很重要。
重要的是要理解第一個組件中的高值意味著什麼——在這種情況下,其特徵是對齊長度較長,也就是更接近原始病毒,而組件2的特徵主要是對齊長度較短,也就是突變後更遠離原始值,這也反映在bit score較大的差異上。
很明顯,病毒突變有5條主線。我們可以從中得到很多信息。
其中有四個病毒突變位於第一主成分的左側,一個位於右側。第一主成分的特徵是高對齊長度。這表示第一主成分的較高值對應較高的對齊長度(更接近原始病毒)。
因此,組件1的較低值與原始病毒的基因差距較大。大多數病毒集群與原始病毒有很大不同。因此,試圖製造疫苗的科學家應該意識到這種病毒會發生大規模變異。
通過使用K-Means和PCA,我們可以識別出五種主要的新冠病毒變異集群,研製疫苗的科學家可以運用這些集群中心獲得的每種集群特徵。通過PCA,我們可以在兩個維度上看到這些集群中心,並且發現冠狀病毒具有非常高的突變率。
這可能就是新冠病毒如此致命的原因。
留言點贊關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範