Kiselev VY, Kirschner K, Schaub MT, Andrews T, Yiu A, Chandra T, Natarajan KN, Reik W, Barahona M, Green AR, Hemberg M (2017). “SC3 - consensus clustering of single-cell RNA-Seq data.” Nature Methods.
一開始我覺得這么火的單細(xì)胞數(shù)據(jù)分析,一定很高大上吧琴锭!當(dāng)我知道單細(xì)胞一個主要的功能是揭示細(xì)胞異質(zhì)性栋艳,而這個異質(zhì)性是有聚類算法來實(shí)現(xiàn)的变抽。一聽聚類缕棵,我樂了评姨。關(guān)于聚類我能說出一本書啊:
所謂聚類, 就是將一個數(shù)據(jù)單位的集合分割成幾個稱為簇或類別的子集 , 每個類中的數(shù)據(jù)都有相似性,它的劃分依據(jù)就是“物以類聚”。數(shù)據(jù)聚類分析是根據(jù)事物本身的特性, 研究對被聚類的對象進(jìn)行類別劃分的方法 珍坊。聚類分析依據(jù)的原則是使同一聚簇中的對象具有盡可能大的相似性, 而不同聚簇中的對象具有盡可能大的相異性, 聚類分析主要解決的問題就是如何在沒有先驗(yàn)知識的前提下, 實(shí)現(xiàn)滿足這種要求的聚簇的聚合。聚類分析稱為無監(jiān)督學(xué)習(xí) (Unsuper-vised Study),主要體現(xiàn)在聚類學(xué)習(xí)的數(shù)據(jù)對象沒有類別標(biāo)記,需要由聚類學(xué)習(xí)算法自動計(jì)算 正罢。
在我做過的上百場的培訓(xùn)中阵漏,每每講到聚類,我都會提到一句話:說到聚類翻具,有一個概念一定要像思想鋼印一樣刻在腦子里:距離履怯。不管哪種算法,都需要一個統(tǒng)計(jì)量來判斷對象之間的遠(yuǎn)近(或相似性)關(guān)系裆泳,這個就是距離叹洲。同樣的對象,不同的距離來度量親疏不同工禾,就像現(xiàn)在我站你面前运提,距離很近,但是血緣關(guān)系來講呢闻葵,就沒有那么近了民泵。
今天我們來認(rèn)識一種聚類算法(其實(shí)是一種組合的聚類算法, Nature Methods槽畔,2017)單細(xì)胞RNA-seq能夠基于轉(zhuǎn)錄組特征對細(xì)胞類型進(jìn)行定量表征栈妆。我們提出了單細(xì)胞一致性聚類(single cell consensus clustering, SC3),這是一種用戶友好的無監(jiān)督聚類工具,它通過一致方法將多個聚類解決方案組合在一起签钩,從而得到高精度和魯棒性的分群結(jié)果(http://bioconductor.org/packages/SC3)。這中聚類算法允許用戶自定義聚類的個數(shù)坏快,這個自由不是任何人都消受得起的:一些人根本不知道聚多少類是合適自己的铅檩。
(a)使用SC3框架進(jìn)行聚類的概述(參見方法)。用Treutlein數(shù)據(jù)舉例說明了一致步驟莽鸿。
(b)用于設(shè)置SC3參數(shù)的已發(fā)布數(shù)據(jù)集昧旨。N是數(shù)據(jù)集中的細(xì)胞數(shù);k為作者最初確定的簇?cái)?shù);單位:RPKM是每千堿基每百萬次讀的轉(zhuǎn)錄本,RPM是每百萬次讀的轉(zhuǎn)錄本祥得,F(xiàn)PKM是每千堿基每百萬次讀的轉(zhuǎn)錄本片段兔沃,TPM是每百萬次讀的轉(zhuǎn)錄本片段。
(c) ARI>處d值的直方圖级及。金標(biāo)準(zhǔn)數(shù)據(jù)集達(dá)到95乒疏。黑色豎線表示細(xì)胞總數(shù)N的d = 4-7%,分類準(zhǔn)確率高饮焦。
(d) (b)中所示數(shù)據(jù)集的SC3聚類的100個實(shí)現(xiàn)怕吴。條對應(yīng)點(diǎn)的中位數(shù)。紅色和灰色分別對應(yīng)有一致步長和無一致步長時的聚類县踢。這條黑線對應(yīng)的ARI=0转绷。8。黑色虛線分隔了金和銀標(biāo)準(zhǔn)數(shù)據(jù)集硼啤。
文獻(xiàn)用到的數(shù)據(jù)集包含了420個細(xì)胞中20000余個基因的表達(dá)信息议经,直接進(jìn)行聚類資源消耗較大且由于數(shù)據(jù)噪聲過大會導(dǎo)致效果不佳。其實(shí)谴返,先降維(特征選擇)再聚類已經(jīng)是通識了煞肾。SC3算法的第一步也是要進(jìn)行基因過濾,文中將表達(dá)率低于6%和高于94%的基因都從數(shù)據(jù)集中去除嗓袱,將數(shù)據(jù)集的規(guī)模減少了50%扯旷。不同的是,SC3第二步會計(jì)算細(xì)胞與細(xì)胞之間的“距離”索抓,為了算法的普適性钧忽,這里一共計(jì)算了三種距離,分別是歐氏距離逼肯,皮爾森相關(guān)系數(shù)與斯皮爾曼相關(guān)系數(shù)耸黑,最終得到了三個420維的距離矩陣±捍保基于距離矩陣來做pca降維大刊,而后再用k-means聚類。所以SC3與其說優(yōu)化了聚類算法三椿,不如說是調(diào)整了降維的算法缺菌。
實(shí)現(xiàn)起來是很簡單的葫辐,因?yàn)橐呀?jīng)有成熟的R包了:SC3。下載安裝就可以用來解鎖細(xì)胞異質(zhì)性啦伴郁!
卑微小王就不再一步一步跑官網(wǎng)的教程了耿战,SC3也是基于SingleCellExperiment對象,如果是10X的數(shù)據(jù)可以直接用Seurat過濾QC一下焊傅,轉(zhuǎn)化為SingleCellExperiment即可分析剂陡。
library(Seurat)
library(SingleCellExperiment)
library(SC3,lib.loc = "D:/R-3.5.1/library")
library(scater,lib.loc = "D:/R-3.5.1/library")
pbmc <- readRDS(file = "D:\\Users\\Administrator\\Desktop\\Novo周運(yùn)來\\SingleCell\\scrna_tools/pbmc3k_final.rds")
sce <- SingleCellExperiment(
assays = list(
counts = as.matrix(pbmc@assays$RNA@counts),
logcounts = as.matrix(pbmc@assays$RNA@data)
),
colData = pbmc@meta.data
)
當(dāng)然,也可以用seurat直接轉(zhuǎn):
sce <- as.SingleCellExperiment(pbmc)
library(future)
# check the current active plan
plan()
# change the current plan to access parallelization
plan("multiprocess", workers = 4)
plan()
sce <- sc3(sce, ks = 2:10, biology = TRUE) # too time
sc3_plot_expression(
sce, k = 3,
show_pdata = c(
"cell_type1",
"log10_total_features",
"sc3_3_clusters",
"sc3_3_log2_outlier_score"
)
)
SC3聚類算法實(shí)現(xiàn)初探
vignettes||SC3
SC3: consensus clustering of single-cell RNA-seq data