這一講是介紹單細(xì)胞聚類的相關(guān)知識(shí)點(diǎn)。里面不僅是介紹方法猖闪,還有一些相關(guān)的原理鲜棠,每一種cluster是怎么工作的(不是數(shù)學(xué)公式,而是用圖形說明原理)培慌,有的地方主講人講的太偏于數(shù)學(xué)原理豁陆,我就直接跳過去了。所以如果想了解細(xì)節(jié)的童鞋可以看看吵护。
視頻地址:https://www.youtube.com/watch?v=Qa6k7RIwltg&list=PLjiXAZO27elC_xnk7gVNM85I2IQl5BEJN&index=7
練習(xí)地址:https://github.com/NBISweden/excelerate-scRNAseq/blob/master/session-clustering/Clustering.md
之前講了質(zhì)量控制献联、降維,現(xiàn)在這一步就是鑒定你的data里的細(xì)胞群何址。上圖就是一個(gè)簡單的流程圖。拿到scRNA-seq 的matrix进胯,這個(gè)matrix里含有細(xì)胞和features(這里就是基因)用爪。然后你把細(xì)胞聚類(clustering),然后你再試著將這些細(xì)胞群注釋胁镐,標(biāo)注細(xì)胞群的名稱偎血。
上圖就是從QC開始的一個(gè)簡單的分析流程,圖里打√的部分都是之前幾講講過的盯漂,今天要講的是clustering颇玷。那么在講聚類前,還涉及一步是feature selection就缆。這部分主講人會(huì)在下面講到帖渠。
所以,為什么我們需要做feature selection竭宰?這里有一個(gè)名詞叫curse of dimensionality(有道翻譯出來是“維數(shù)災(zāi)難”空郊,孤陋寡聞的我沒聽說過這個(gè)詞。切揭。)狞甚。主講人舉了個(gè)例子:上圖的兩張PCA圖,左邊那個(gè)你只用500個(gè)基因來分析廓旬,你可以得到非常好的clustering哼审;而右邊你用2萬個(gè)基因來分析,你會(huì)發(fā)現(xiàn)細(xì)胞并沒有分的很開孕豹,比如黑色和灰色的細(xì)胞群就沒有像左邊那樣分的很開涩盾。所以curse of dimensionality的意思就是:你想看越多的features,那么背景noise就會(huì)越大励背。所以去除一些基因的目的就是提高real 的信號(hào)旁赊,提高信噪比。另外一個(gè)目的就是降低計(jì)算的復(fù)雜程度椅野。
上圖是一個(gè)feature selection的方法终畅,你的目的是選出那些在你的dataset里不同細(xì)胞之間表達(dá)差異最大的那些基因籍胯。但是問題是,當(dāng)你看variance和平均表達(dá)量之間的關(guān)系离福,你會(huì)發(fā)現(xiàn)他們是相互依賴的杖狼。所以你第一件事可以做的就是:畫變異系數(shù)圖(變異系數(shù):coefficient of variation)。棕色的點(diǎn)是所有的基因妖爷,藍(lán)色的點(diǎn)是spike-in蝶涩,根據(jù)這些你可以fit一個(gè)函數(shù)在spike-in上(基因和spike-in之間的variation是技術(shù)層面的variation)。粉色的點(diǎn)顯示的是基因的true variation絮识。但是如果你用的是droplet-base的方法進(jìn)行測(cè)序绿聘,是不適用spike-in的,如果是這種情況次舌,你就要根據(jù)你所有的基因來估計(jì)技術(shù)noise熄攘。比如下面這種方法:
上圖是基于dropout的feature selection的方法。原理我就不聽了彼念,聽也聽不懂挪圾。。主要看右下角逐沙,藍(lán)色線是根據(jù)所有基因評(píng)估出來的哲思,類似于上一個(gè)方法圖里的紅色虛線。這里藍(lán)色線右面的黃色點(diǎn)吩案,就是你data里真正的variation.
接下來選主要成分棚赔。上圖是Elbow plot圖,也叫碎石圖徘郭。這圖是對(duì)主要成分進(jìn)行排序忆嗜。那么排在第一的成分就是你的data里最大的variation。然后你可以選擇多少個(gè)PC進(jìn)行下游分析崎岂,那么虛線右邊的PC就可以忽略不看了捆毫。
在這一講里,主講人將主要介紹3種聚類的方法冲甘。
先看上圖绩卤,先看看什么是好的聚類,什么是不好的聚類江醇。那你覺得哪一個(gè)聚類結(jié)果更好呢濒憋?很顯然,左圖的聚類明顯比右邊的好陶夜。為什么呢凛驮?因?yàn)樽髨D里,同一個(gè)圈里的點(diǎn)之間的距離条辟,要明顯小于和另一個(gè)圈里的距離黔夭。而右圖并不是宏胯。
首先是第一種,Hierarchical clustering本姥,分層聚類肩袍。舉個(gè)簡單的例子,8個(gè)點(diǎn)分布在二維里』楸梗現(xiàn)在我們想把這些點(diǎn)聚類氛赐。
首先我們要做的是,把最接近的兩個(gè)細(xì)胞圈在一起先舷。在右邊系統(tǒng)樹圖里艰管,4和2之間連接的高度,代表兩個(gè)點(diǎn)的距離蒋川。
第二步牲芋,把離的第二近的兩個(gè)細(xì)胞圈在一起。然后再在右邊系統(tǒng)樹圖里標(biāo)出5和8的height尔破。
第三步,把4和2的圈與3畫在一起浇衬,因?yàn)檫@個(gè)距離是第三近的懒构。同樣的,在右邊系統(tǒng)樹圖里把4耘擂,2和3的height標(biāo)出來胆剧。接著用同樣的方法,一步一步把系統(tǒng)樹畫完整:
直到上圖醉冤,把兩個(gè)離的較遠(yuǎn)的群劃分在一起秩霍,這樣cluster就結(jié)束了。
如果你想要兩個(gè)分群蚁阳,那么可以把系統(tǒng)樹從上面切開铃绒,這樣就得到了兩個(gè)獨(dú)立的群。
那么怎么計(jì)算兩個(gè)cluster之間的距離呢螺捐?主講人主要講了其中的兩種:第一種方法是single linkage颠悬,這種方法是計(jì)算兩個(gè)cluster里每一個(gè)點(diǎn)之間的距離。然后得到最短的和最長的距離定血,取平均值赔癌。
第二種方法是complete linkage。這種方法是計(jì)算兩個(gè)cluster里距離最遠(yuǎn)的兩個(gè)點(diǎn)的距離澜沟,然后取最小的那個(gè)距離灾票。
由于兩種方法的不同,可導(dǎo)致你最后的聚類結(jié)果的不同茫虽。如果你用single linkage聚類刊苍,你最終會(huì)得到比較“長條”的聚類結(jié)果既们;而complete linkage方法聚類,你會(huì)得到比較大的聚類結(jié)果班缰。
上面講了分層聚類方法贤壁,現(xiàn)在來講k-means聚類方法。這種聚類方法是先從data里隨機(jī)選取兩個(gè)隨機(jī)點(diǎn)埠忘,這里不是說所有的k-means方法都是先取兩個(gè)隨機(jī)點(diǎn)脾拆,如果你只想把細(xì)胞聚類為2類,那么就隨機(jī)取2個(gè)開始莹妒。你想把細(xì)胞聚幾類名船,就要隨機(jī)取幾個(gè)開始。
然后把其他細(xì)胞根據(jù)距離每個(gè)隨機(jī)點(diǎn)(prototype)的遠(yuǎn)近旨怠,分配給不同的隨機(jī)點(diǎn)渠驼,形成一個(gè)cluster。
之后根據(jù)你分的群里每個(gè)點(diǎn)的平均距離鉴腻,更新你的prototype(隨機(jī)點(diǎn))迷扇,所以上圖里可以看到,隨機(jī)點(diǎn)的位置改變了爽哎。
由于隨機(jī)點(diǎn)的位置改變蜓席,這時(shí)就要忽略你之前的分派了。現(xiàn)在所有的點(diǎn)根據(jù)新的隨機(jī)點(diǎn)课锌,再重新被分派到離自己最近的隨機(jī)點(diǎn)厨内,形成一個(gè)新的cluster。
然后再根據(jù)兩個(gè)cluster里的點(diǎn)的平均距離來更新隨機(jī)點(diǎn)的位置渺贤,上圖看到雏胃,隨機(jī)點(diǎn)的位置又變了。
根據(jù)這個(gè)再次更新的隨機(jī)點(diǎn)志鞍,每個(gè)點(diǎn)又會(huì)被重新分派給新的cluster瞭亮。這個(gè)過程會(huì)被一直重復(fù),直到?jīng)]有點(diǎn)的分配改變固棚,那么這個(gè)循環(huán)就會(huì)停止街州。最終的cluster會(huì)像下圖一樣:
但是,k-means聚類方法仍然存在一些缺陷玻孟。第一唆缴,就是k-means做出來的聚類圖,基本上都是圓圈形狀的聚類黍翎。但是你的dataset不會(huì)剛好都是圓圈的那種聚類面徽,比如上圖,如果你用k-means聚類,就會(huì)得到很奇怪的聚類結(jié)果趟紊。所以如果你確定你的聚類會(huì)得到圓圈形狀的結(jié)果氮双,用k-means就沒問題。
第三種要講的聚類方法是基于graph的聚類霎匈。graph戴差,就是network。它包括節(jié)點(diǎn)和邊界铛嘱。
在單細(xì)胞的分析里暖释,人們討論的graph主要分兩類。KNN和SNN墨吓。這兩種很相似球匕,但是還是有不同點(diǎn)。(這里原理實(shí)在是聽不懂帖烘,是和數(shù)學(xué)模型有關(guān)的)像我們經(jīng)常使用的Seurat包就是基于 graph的方法進(jìn)行聚類的(下面省略幾張PPT是數(shù)學(xué)模型的亮曹,太過于復(fù)雜,感興趣的可以去看視頻)
請(qǐng)記住秘症,聚類是非常主觀的一個(gè)過程照卦。這取決于你使用哪種聚類方法,不同聚類方法給出的結(jié)果可能完全不一樣乡摹。重要的是聚類以后你的實(shí)驗(yàn)證明役耕。
還有一個(gè)辦法可以驗(yàn)證你的clustering是否合適。你可以從你的dataset里得到的cluster中抽出一部分細(xì)胞趟卸,每個(gè)cluster都抽出一部分細(xì)胞蹄葱,組成一個(gè)小的dataset氏义,然后把這個(gè)小的dataset進(jìn)行聚類锄列,如果你的小的dataset聚類結(jié)果和你的總的dataset聚類結(jié)果非常相似,那么你的clustering是比較靠譜的惯悠。你可以利用這種方法多重復(fù)幾次邻邮,如果你每一次的聚類結(jié)果圖形都是一樣的,那么這個(gè)結(jié)果就比較可靠克婶。
請(qǐng)記得:經(jīng)常要檢查你的QC情況筒严。是否有低質(zhì)量的細(xì)胞、是否有線粒體基因情萤、是否有批次效應(yīng)鸭蛙!因?yàn)閏lustering對(duì)于你輸入的dataset是非常敏感的,任何干擾都有可能導(dǎo)致結(jié)果的不同筋岛。
注釋你的clusters娶视。這一步是一門“藝術(shù)”,會(huì)花你很多時(shí)間。因?yàn)槟阋业矫恳粋€(gè)cluster的差異表達(dá)基因或者是marker肪获。所以關(guān)于這一步寝凌,實(shí)在是沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。