生物學的機器學習:使用K-Means和PCA進行基因組序列分析 COVID-19...

2020-12-08 AI科技大本營

作者 | Andre Ye

譯者 | 孟翔傑

來源 | DeepHub IMBA

許多人沒有想到,病毒就像地球上為生存而掙扎的其他生物一樣,它們會進化或變異。

只要看一看人類病毒來源的蝙蝠攜帶的病毒RNA序列片段即可。

AAAATCAAAGCTTGTGTTGAAGAAGTTACAACAACTCTGGAAGAAACTAAGTT

…以及人類COVID-19病毒的RNA序列的摘錄…

AAAATTAAGGCTTGCATTGATGAGGTTACCACAACACTGGAAGAAACTAAGTT

…顯然,冠狀病毒已改變其內部結構以適應其新宿主(更精確地說,冠狀病毒內部結構的約20%發生了突變),但仍保持了足夠的活力,以至於它仍然可以在起源物種體內存活。

實際上,研究表明COVID-19通過反覆變異來提高它們的存活率。在抗擊冠狀病毒的鬥爭中,我們不僅需要找到消滅病毒的方法,還需要找到病毒如何突變以及如何遏制這些突變的方法。

在本文中,我將……

提供RNA序列的簡單解釋使用K-Means創建基因組信息集群使用PCA可視化集群…並對我們執行的每個程序進行分析來獲取經驗。

什麼是基因組序列?

如果您對RNA序列有基本的了解,請跳過此部分。

與「解碼」相比,基因組測序通常是分析從樣品中提取的脫氧核糖核酸(DNA)的過程。在每個正常細胞內有23對染色體,這些染色體容納著DNA。

DNA的捲曲雙螺旋結構使其可以展開為梯形。該梯形由成對的化學字母(稱為鹼基)製成。DNA中只有四種:腺嘌呤,胸腺嘧啶,鳥嘌呤和胞嘧啶。腺嘌呤僅與胸腺嘧啶結合,而鳥嘌呤僅與胞嘧啶結合。這些鹼基分別用A,T,G和C表示。

這些鹼基構成了指示生物體如何構建蛋白質的各種代碼-實際上是控制病毒行為的DNA。

DNA轉換為RNA再轉換為蛋白質的過程

使用包括測序儀器和專用標籤等專用設備,可以揭示特定片段的DNA序列。從中獲得的信息將用於進一步的分析和比較,以使研究人員能夠識別基因的變化過程,並將基因與疾病和表型以及潛在的藥物靶細胞關聯起來。

基因組序列是一串長長的「 A」,「 T」,「 G」和「 C」,代表生物體對環境的反應方式。通過改變DNA可以造成生物的突變。查看基因組序列是分析冠狀病毒突變的有力方法。

了解數據

在Kaggle上找到的數據如下所示:

每行代表蝙蝠病毒的一種突變。首先,只需花一分鐘就可以欣賞大自然的不可思議性-在數周之內,冠狀病毒已經產生了262種自身突變,以提高自身存活率。

一些重要的列:

query acc.ver代表原始病毒標識符。subject acc.ver是病毒突變的標識符。% identity代表當前序列與原始病毒相同的百分比。alignment length表示序列中有多少個相同的標識符。mismatches代表突變和原始變異的數量。bit score表示衡量對齊程度的度量;分數越高,對齊越好。每列的一些統計度量(可以在Python中使用data.describe方便地調用它):

查看% identity列,很有趣的是,該值最小約為77.6%。% identity的標準差為7%。這個數值相當大,意味著存在廣泛可能的突變。bit score比較大的標準差支持這一觀點-標準差大於平均值!

可視化數據的一種好方法是通過關聯熱圖。每個單元代表一個特徵與另一個特徵之間的關聯程度。

圖中可以看到許多數據彼此高度相關。這是有道理的,因為大多數突變都是彼此不同的。需要注意的一件事是alignment length與bit score高度相關。

使用K-Means創建突變聚類

K-Means是用於聚類的算法,它是機器學習中在特徵空間中查找數據點並結合成組的一種方法。我們的K-Means的目標是找到突變簇,由此我們可以得出有關的突變性質以及如何解決突變的見解。

但是,我們仍然需要選擇簇數k。儘管這就像在二維中繪製點一樣簡單,但在更高的維度中則無法實現(如果我們想保留最多的信息)。像肘法(elbow method)這樣選擇k的方法是主觀且不準確的,因此,我們將使用輪廓法(silhouette method)。

輪廓法是針對k個聚類中心給出的聚類結果對數據適應程度的評分。Python中的sklearn庫使實現K-Means和輪廓法變得非常簡單。

似乎5個聚類中心是最合適的。現在,我們可以確定聚類中心。這些聚類中心是每個類別圍繞的點,代表(在這種情況下)5種主要突變類型的數值評估。

注意:已對數據進行了標準化,以使它們全部縮放為相同的比例。否則,每列將不可比較。

此熱圖按列表示每個簇的屬性。因為這些點是按比例縮放的,所以圖中標註的數值在數量上沒有任何意義。但是,可以比較每列中的標註值。您可以從視覺上了解每個突變簇的相對屬性。如果科學家要開發疫苗,它應針對這些主要的病毒突變簇。

在下一節中,我們將使用PCA可視化數據。

PCA數據可視化

PCA(主成分分析法)是一種降維方法。它選擇多維空間中的正交矢量來表示軸,從而保留了最多的信息(方差)。

流行的Python庫sklearn可以用兩行代碼實現PCA。首先,我們可以檢查數據的方差比。這是從原始數據集中保留的統計信息的百分比。在這種情況下,數據的方差比是0.9838548580740327,這已經很高了!我們可以放心,無論我們從PCA進行的任何分析都不會使數據失真。

每個新功能(主要組件)都是其他幾列的線性組合。我們可以通過熱圖可視化其中一列對於相對的兩個其他組件之一的重要性。

主要需要了解成分一具有較高分數的含義-在這種情況下,其特徵具有更長的比對長度(更接近原始病毒),而成分2的主要特徵具有更短的比對長度 (距離原始值更遠)。這也反映在bit score的較大差異上。

顯然,病毒突變有5種主要方式。我們可以從中獲得許多信息。

其中四個突變位於成分一的左側,一個突變位於右側。成分一的特徵是高alignment length。這意味著成分一的值越高則對齊長度越長(更接近原始病毒)。因此,成分一的值較低時在遺傳上距離原始病毒較遠。因此大多數病毒突變與原始病毒差異很大。因此,試圖製造疫苗的科學家應該意識到該病毒會產生大量與原始病毒差異很大的突變。

結論

使用K-Means和PCA,能夠識別冠狀病毒中的五個主要突變簇。研發冠狀病毒疫苗的科學家可以利用聚類中心的信息獲得有關每個聚類特徵的知識。我們能夠使用主成分分析在二維空間上可視化簇,並發現冠狀病毒具有很高的突變率。這可能是它如此致命的原因。

【end】

信息保留的二值神經網絡IR-Net,落地性能和實用性俱佳 | CVPR 2020人生苦短,不光要用Python,還要在VSCode裡用清華學霸組團的工業 AIoT 創企再獲數千萬融資:玩家應推動在邊緣 AI 晶片上跑算法用Java開發自己的Kubernetes控制器,想試試嗎?字節跳動武漢招聘 2000 人,距離大廠 Offer,你還差這篇 Java 乾貨!| 原力計劃數字合約如何將所有權下放?如何使用腳本系統將交易轉換為可編程的智能合約?答案就在這篇文章裡!你點的每個「在看」,我都認真當成了AI

相關焦點

  • 【直播】我的基因組55:簡單的PCA分析千人基因組的人群分布
    今天,我們主要講的是人群分布,先用簡單的PCA來分析一下千人基因組的人群分布吧!PCA分析,就是主成分分析,我博客有講過(點擊最底部的閱讀原文或複製連結http://www.bio-info-trainee.com/1232.html進行查看)。 PCA的原本目的是因為變量太多,想把它們合併成兩三個變量,從而簡化分析步驟。
  • 機器學習之分類算法K-Means介紹與代碼分析(篇四)
    簡單理解為:聚類是一個將數據集中在某些方面相似的數據成員進行分類組織的過程,聚類就是一種發現這種內在結構的技術,聚類技術經常被稱為無監督學習。k均值聚類是最著名的劃分聚類算法,由於簡潔和效率使得他成為所有聚類算法中最廣泛使用的。
  • 使用K-means 算法進行客戶分類
    這些數據互相交融以滿足不同的目標和可能性。應用機器學習技術就很有可能為客戶創造價值。作為Patterns7團隊不斷嘗試的機器學習計劃和創新事物的一部分,我們對K-Means聚類算法進行了實驗,這為客戶帶來的價值非常驚人。
  • 如何進行基因組序列比對?
    首先要做的就是將測序得到的reads比對到人基因組參考序列上。隨著人類基因組計劃(Human Genome Project,HGP)的進行,International Human Genome Sequencing Consortium在2001年首次公布了人基因組序列的草圖,2003年人類基因組計劃宣布完成。
  • 【機器學習】無監督學習:PCA和聚類
    機器學習開放課程第七課,Snap軟體工程師Sergey Korolev講解了主成分分析降維方法和常用聚類方法。在這節課中,我們將討論主成分分析(PCA)和聚類(clustering)這樣的無監督學習方法。你將學習為何以及如何降低原始數據的維度,還有分組類似數據點的主要方法。
  • 深度|基因組醫學中的機器學習:計算問題與數據集綜述(下)
    基因組醫學的一個目標就是發現個體 DNA 的變化是如何影響疾病風險,並試圖找到背後的致病機理以便於研製出相應的靶向治療[1]方案。本文的重點將放在如何利用機器學習來對 DNA 與細胞中可能與疾病風險存在關聯的關鍵分子的數量(我們稱之為細胞變量)之間的關係進行建模。現代生物學允許對很多細胞變量(包括基因表達[2],剪接[3]和核酸結合蛋白[4]等)進行高通量測量。
  • 明碼標價之單細胞轉錄組的質控降維聚類分群和生物學注釋
    單細胞轉錄組的質控降維聚類分群和生物學注釋例子我們在《生信技能樹》和《單細胞天地》都多次分享過:人人都能學會的單細胞聚類分群注釋  。下面是學徒的探索0、背景(1)在Seurat等包中,在進行挑選高變基因,PCA分析後,多使用SNN(shared nearest neighbor)算法進行單細胞聚類,然後進行TSNE或者UMAP二維可視化。
  • 機器學習之SKlearn(scikit-learn)的K-means聚類算法
    更多情況下,是分析採集到的數據,根據數據特徵選擇適合的算法,在工具包中調用算法,調整算法的參數,獲取需要的信息,從而實現算法效率和效果之間的平衡。而sklearn,正是這樣一個可以幫助我們高效實現算法應用的工具包。Scikit learn 也簡稱 sklearn, 是機器學習領域當中最知名的 python 模塊之一.
  • k-means聚類算法原理總結
    k-means算法是非監督聚類最常用的一種方法,因其算法簡單和很好的適用於大樣本數據,廣泛應用於不同領域,本文詳細總結了k-means聚類算法原理
  • 機器學習十大經典算法之K-Means聚類算法
    聚類介紹聚類在機器學習,數據挖掘,模式識別,圖像分析以及生物信息等領域有廣泛的應用。聚類是把相似的對象通過靜態分類的方法分成不同的組別或者更多的子集(subset),這樣讓在同一個子集中的成員對象都有相似的一些屬性,常見的包括在坐標系中更加短的空間距離(一般是歐式距離)等。
  • k-means聚類算法從入門到精通
    k-means算法是非監督聚類最常用的一種方法,因其算法簡單和很好的適用於大樣本數據,廣泛應用於不同領域,本文詳細總結了k-means聚類算法原理 。,若樣本量達到上萬時,k-means聚類算法非常耗時,因此對該數據集進行無放回隨機抽樣得到合適的小批量樣本數據集,sklearn.cluster包提供了相應的實現方法MiniBatchKMeans。
  • 如何從基因組重複序列分析中挖到有趣的生物學故事?
    看看研究者的高分文章都是如何從基因組重複序列分析中挖到了有趣的生物學故事。From PNAS:食肉植物絲葉狸藻的串聯重複序列[1]基於PacBio測序的長讀長,研究者得到染色體級別的高連續性Conitg,以此進行基因組功能和進化分析,其中,研究者發現串聯重複多集中在與食肉植物重要的代謝功能及轉錄因子功能區域,如半胱氨酸蛋白酶基因只在食肉植物的誘捕組織(trap)中表達(Figure1),串聯重複事件被認為是絲葉狸藻的食肉適應性的必要元素。
  • 聚類樹和PCA等排序圖的組合繪製
    聚類分析和排序分析(降維分析)都是用於探索多元數據結構的常用方法,二者的結果也可以結合在一起通過一張圖呈現,本篇展示一些常見的示例。https://pan.baidu.com/s/1dQxyRcBuGDoec9ZKm77Y6w示例數據包含15個樣本(對象),20個變量,下文對它執行聚類和降維,並作圖展示。
  • 機器學習之數據降維總結+代碼示例復現(線性代數/矩陣論/主成分分析PCA/核主成分分析KPCA/奇異值分解SVD)
    使用PCA(主成分分析)進行數據壓縮    降維後的訓練及所佔用的空間將會減少許多,此處將PCA應用於MNIST手寫數字數據集,保留其95%的方差,將原始的784個特徵顯著減小至154個。 # using regular PCA and incremental PCA.# First, the means are equal: 首先將pca和IncrementalPCA(增量PCA)的均值對比計算並使其相等# numpy的allclose方法,比較兩個array是不是每一元素都相等,默認在1e-05的誤差範圍內# pca = PCA(n_components = 154):正常降維至
  • 如何使用K-Means對用戶進行分群
    聚類分析是在沒有給定劃分類別情況下,根據數據相似度進行樣本分組的一種方法。是一種無監督的學習算法。劃分依據主要是自身的距離或相似度將他們劃分為若干組,劃分原則是組內樣本最小化而組間(外部)距離最大化。聚類多數場景下用在「數據探索」環節,也就是用來了解數據。它無法提供明確的行動指向,更多是為後期挖掘和分析提供參考,無法回答「為什麼」和「怎麼辦」的問題。
  • python機器學習之k-means聚類算法(1)
    k-means算法是一種無監督的機器學習算法,雖然是機器學習,但它簡單易於實現。本篇採用python語言,自主編程實現k-menas算法,當然python用專門的庫函數來實現該算法,但本次主要使用該算法闡述編程思想,所以不採用內置函數。採用自主編寫的程序的方式。
  • k-means算法
    ,只能保證局部最優(與K的個數及初值選取有關)k-means的經典案例與適用範圍1.文檔分類器:根據標籤、主題和文檔內容將文檔分為多個不同的類別。這是一個非常標準且經典的K-means算法分類問題。2.物品傳輸優化:使用K-means算法的組合找到無人機最佳發射位置和遺傳算法來解決旅行商的行車路線問題,優化無人機物品傳輸過程。3.識別犯罪地點:使用城市中特定地區的相關犯罪數據,分析犯罪類別、犯罪地點以及兩者之間的關聯,可以對城市或區域中容易犯罪的地區做高質量的勘察。
  • k-means聚類簡介
    前提條件特定領域的經驗要求:無專業經驗要求:無行業經驗不需要機器學習的知識,但是讀者應該熟悉基本的數據分析(如,描述性分析)。為了實踐該示例,讀者也應該熟悉Python。K-means聚類簡介K-means聚類是一種無監督學習,用於有未標記的數據時(例如,數據沒有定義類別或組)。該算法的目標是在數據中找到分組,變量K代表分組的個數。
  • 機器學習算法之K-means算法
    K-means舉例shi'li1 K-means算法簡介k-means算法是一種聚類算法,所謂聚類,即根據相似性原則2 K-means算法原理k-means算法中的k代表類簇個數,means代表類簇內數據對象的均值(這種均值是一種對類簇中心的描述),因此,k-means算法又稱為k-均值算法。
  • K-Means聚類算法詳解
    4.1 如何使用sklearn中的KMeans算法sklearn 是 Python 的機器學習工具庫,如果從功能上來劃分,sklearn 可以實現分類、聚類、回歸、降維、模型選擇和預處理等功能。在創建好 K-Means 類之後,就可以使用它的方法,最常用的是 fit 和 predict 這個兩個函數。你可以單獨使用 fit 函數和 predict 函數,也可以合併使用 fit_predict 函數。其中 fit(data) 可以對 data 數據進行 k-Means 聚類。