單細胞RNA-seq生信分析全流程——第八篇:聚類

8. 聚類Clustering

預處理和可視化使我們能夠描述我們的scRNA-seq數(shù)據(jù)集并降低其維度褂微。到目前為止,我們嵌入并可視化了細胞以了解數(shù)據(jù)集的基礎(chǔ)屬性园爷。然而宠蚂,它們的定義仍然相當抽象。單細胞分析的下一個步驟是識別數(shù)據(jù)集中的細胞結(jié)構(gòu)童社。
在scRNA-seq數(shù)據(jù)分析中求厕,我們通過查找與已知細胞狀態(tài)或細胞周期階段相關(guān)的細胞身份來描述數(shù)據(jù)集中的細胞結(jié)構(gòu)。這個過程通常稱為細胞身份注釋扰楼。為此呀癣,我們將細胞組織成簇,以推斷相似細胞的身份弦赖。聚類本身是一個常見的無監(jiān)督機器學習問題项栏。我們可以通過最小化表達空間中的簇內(nèi)距離來導出簇。在這種情況下蹬竖,表達空間決定了細胞相對于降維表示的基因表達相似性沼沈。例如,這種較低維度的表示是通過主成分分析確定的币厕,然后基于歐幾里德距離進行相似性評分列另。
在k最近鄰(KNN)圖中,節(jié)點反映數(shù)據(jù)集中的細胞旦装。我們首先在PC(主成分)縮減表達空間上計算所有細胞的歐幾里德距離矩陣页衙,然后將每個細胞連接到其K個最相似的細胞。通常同辣,K設(shè)置為5到100之間的值拷姿,具體取決于數(shù)據(jù)集的大小。KNN圖通過圖中的密集連接區(qū)域來反映表達數(shù)據(jù)的基礎(chǔ)拓撲結(jié)構(gòu)旱函。KNN圖中的密集區(qū)域是通過Leiden和Louvain等community檢測方法實現(xiàn)响巢。
Leiden算法是Louvain算法的改進版本,在單細胞RNA-seq數(shù)據(jù)分析方面優(yōu)于其他聚類方法棒妨。由于Louvain算法不再維護踪古,因此首選使用Leiden含长。
因此,我們建議在單細胞k最近鄰(KNN)圖上使用Leiden算法來對單細胞數(shù)據(jù)集進行聚類伏穆。
Leiden通過考慮簇中細胞之間的鏈接數(shù)量與數(shù)據(jù)集中的總體預期鏈接數(shù)量來創(chuàng)建簇拘泞。


Leiden算法在從PC簡化表達空間獲得的KNN圖上計算聚類。它從一個初始分區(qū)開始枕扫,其中每個節(jié)點都來自自己的分區(qū)陪腌。接下來,算法將單個節(jié)點從一個社區(qū)移動到另一個社區(qū)以找到分區(qū)烟瞧,然后對其進行細化诗鸭。基于細化的分區(qū)生成聚合網(wǎng)絡(luò)参滴,再次細化直至無法獲得進一步的改進强岸,從而達到最終的分區(qū)。

起點是一個單例分區(qū)砾赔,其中每個節(jié)點都充當自己的社區(qū)(a)蝌箍。下一步,該算法通過將單個節(jié)點從一個社區(qū)移動到另一個社區(qū)來創(chuàng)建分區(qū)(b)暴心,隨后進行細化以增強分區(qū)(c)妓盲。然后將細化的分區(qū)聚合到網(wǎng)絡(luò)(d)。隨后酷勺,算法再次移動聚合網(wǎng)絡(luò)中的各個節(jié)點(e)本橙,直到細化不再改變分區(qū)(f)。 重復所有步驟脆诉,直到創(chuàng)建最終的聚類并且分區(qū)不再發(fā)生變化甚亭。
Leiden模塊具有分辨率參數(shù),可以確定分區(qū)簇的規(guī)模击胜,從而確定聚類的粗糙度亏狰。更高分辨率的參數(shù)會導致更多的簇。該算法還允許通過對KNN圖進行子設(shè)置來對數(shù)據(jù)集中的特定聚類進行有效的子聚類偶摔。子聚類使用戶能夠識別聚類內(nèi)的細胞類型特定狀態(tài)或更精細的細胞類型標記暇唾,但也可能導致僅由于數(shù)據(jù)中存在的噪聲而產(chǎn)生的結(jié)果。
前面提到辰斋,Leiden算法是在scanpy中實現(xiàn)的策州。

import scanpy as sc

sc.settings.verbosity = 0
sc.settings.set_figure_params(dpi=80, facecolor="white", frameon=False)

8.1 聚類人類骨髓來源細胞

首先,我們加載數(shù)據(jù)集宫仗。 我們對來自我們已經(jīng)預處理的NeurIPS人類骨髓數(shù)據(jù)集的預處理樣本site4-donor8進行聚類够挂。
該數(shù)據(jù)集使用log1pPF、scran和scTransform 進行標準化藕夫。我們將按照預處理章節(jié)中的建議重點關(guān)注本筆記本中數(shù)據(jù)集的scran標準化版本孽糖,以更好地識別單個細胞的狀態(tài)枯冈。

adata = sc.read("s4d8_subset_gex.h5ad")

我們可以使用scanpy函數(shù)sc.pp.neighbors計算低維基因表達表示的KNN圖。我們在前30個主成分上調(diào)用此函數(shù)办悟,因為它們捕獲了數(shù)據(jù)集中的大部分方差尘奏。
可視化聚類可以幫助我們理解結(jié)果,因此我們將細胞嵌入到UMAP中病蛉。有關(guān)UMAP可視化的更多信息可以在可視化部分找到炫加。

sc.pp.neighbors(adata, n_pcs=30)
sc.tl.umap(adata)

輸出結(jié)果:

/Users/anna.schaar/opt/miniconda3/envs/bp_pp/lib/python3.8/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.

我們現(xiàn)在可以調(diào)用Leiden算法。

sc.tl.leiden(adata)

scanpy中默認的分辨率參數(shù)是1.0铡恕。然而琢感,在許多情況下,分析人員可能希望嘗試不同的分辨率參數(shù)來控制聚類的粗糙度探熔。因此,我們建議將聚類結(jié)果保存烘挫。

sc.tl.leiden(adata, key_added="leiden_res0_25", resolution=0.25)
sc.tl.leiden(adata, key_added="leiden_res0_5", resolution=0.5)
sc.tl.leiden(adata, key_added="leiden_res1", resolution=1.0)

我們現(xiàn)在可視化在不同分辨率下使用萊頓算法獲得的不同聚類結(jié)果诀艰。正如我們所看到的,分辨率很大程度上影響了我們的聚類的粗略程度饮六。較高的分辨率參數(shù)會導致更多的社區(qū)其垄,即更多的識別簇,而較低的分辨率參數(shù)會導致更少的社區(qū)卤橄。因此绿满,分辨率參數(shù)控制算法將KNN嵌入中的聚類區(qū)域分組在一起的密度。這對于注釋集群變得尤其重要窟扑。

sc.pl.umap(
    adata,
    color=["leiden_res0_25", "leiden_res0_5", "leiden_res1"],
    legend_loc="on data",
)
UMAP

我們現(xiàn)在可以清楚地檢查不同分辨率對聚類結(jié)果的影響喇颁。對于0.25的分辨率,聚類更加粗糙嚎货,算法檢測到的社區(qū)也更少橘霎。此外,與分辨率為1.0 時獲得的聚類相比殖属,聚類區(qū)域的密度較低姐叁。
我們想再次強調(diào),必須謹慎解釋顯示的簇之間的距離洗显。由于UMAP嵌入是二維的外潜,因此不一定能很好地捕獲所有點之間的距離。我們建議不要解釋UMAP嵌入上可視化的簇之間的距離挠唆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末处窥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子损搬,更是在濱河造成了極大的恐慌碧库,老刑警劉巖柜与,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嵌灰,居然都是意外死亡弄匕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門沽瞭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迁匠,“玉大人,你說我怎么就攤上這事驹溃〕巧ィ” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵豌鹤,是天一觀的道長亡哄。 經(jīng)常有香客問我,道長布疙,這世上最難降的妖魔是什么蚊惯? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮灵临,結(jié)果婚禮上截型,老公的妹妹穿的比我還像新娘。我一直安慰自己儒溉,他們只是感情好宦焦,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著顿涣,像睡著了一般波闹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上园骆,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天舔痪,我揣著相機與錄音,去河邊找鬼锌唾。 笑死锄码,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的晌涕。 我是一名探鬼主播滋捶,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼余黎!你這毒婦竟也來了重窟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤惧财,失蹤者是張志新(化名)和其女友劉穎巡扇,沒想到半個月后扭仁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡厅翔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年乖坠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刀闷。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡熊泵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甸昏,到底是詐尸還是另有隱情顽分,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布施蜜,位于F島的核電站卒蘸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏花墩。R本人自食惡果不足惜悬秉,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冰蘑。 院中可真熱鬧,春花似錦村缸、人聲如沸祠肥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仇箱。三九已至,卻和暖如春东羹,著一層夾襖步出監(jiān)牢的瞬間剂桥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工属提, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留权逗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓冤议,卻偏偏與公主長得像斟薇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子恕酸,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容