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

8. 聚類Clustering

預處理和可視化使我們能夠描述我們的scRNA-seq數據集并降低其維度。到目前為止,我們嵌入并可視化了細胞以了解數據集的基礎屬性。然而,它們的定義仍然相當抽象。單細胞分析的下一個步驟是識別數據集中的細胞結構。
在scRNA-seq數據分析中,我們通過查找與已知細胞狀態或細胞周期階段相關的細胞身份來描述數據集中的細胞結構。這個過程通常稱為細胞身份注釋。為此,我們將細胞組織成簇,以推斷相似細胞的身份。聚類本身是一個常見的無監督機器學習問題。我們可以通過最小化表達空間中的簇內距離來導出簇。在這種情況下,表達空間決定了細胞相對于降維表示的基因表達相似性。例如,這種較低維度的表示是通過主成分分析確定的,然后基于歐幾里德距離進行相似性評分。
在k最近鄰(KNN)圖中,節點反映數據集中的細胞。我們首先在PC(主成分)縮減表達空間上計算所有細胞的歐幾里德距離矩陣,然后將每個細胞連接到其K個最相似的細胞。通常,K設置為5到100之間的值,具體取決于數據集的大小。KNN圖通過圖中的密集連接區域來反映表達數據的基礎拓撲結構。KNN圖中的密集區域是通過Leiden和Louvain等community檢測方法實現。
Leiden算法是Louvain算法的改進版本,在單細胞RNA-seq數據分析方面優于其他聚類方法。由于Louvain算法不再維護,因此首選使用Leiden。
因此,我們建議在單細胞k最近鄰(KNN)圖上使用Leiden算法來對單細胞數據集進行聚類。
Leiden通過考慮簇中細胞之間的鏈接數量與數據集中的總體預期鏈接數量來創建簇。


Leiden算法在從PC簡化表達空間獲得的KNN圖上計算聚類。它從一個初始分區開始,其中每個節點都來自自己的分區。接下來,算法將單個節點從一個社區移動到另一個社區以找到分區,然后對其進行細化。基于細化的分區生成聚合網絡,再次細化直至無法獲得進一步的改進,從而達到最終的分區。

起點是一個單例分區,其中每個節點都充當自己的社區(a)。下一步,該算法通過將單個節點從一個社區移動到另一個社區來創建分區(b),隨后進行細化以增強分區(c)。然后將細化的分區聚合到網絡(d)。隨后,算法再次移動聚合網絡中的各個節點(e),直到細化不再改變分區(f)。 重復所有步驟,直到創建最終的聚類并且分區不再發生變化。
Leiden模塊具有分辨率參數,可以確定分區簇的規模,從而確定聚類的粗糙度。更高分辨率的參數會導致更多的簇。該算法還允許通過對KNN圖進行子設置來對數據集中的特定聚類進行有效的子聚類。子聚類使用戶能夠識別聚類內的細胞類型特定狀態或更精細的細胞類型標記,但也可能導致僅由于數據中存在的噪聲而產生的結果。
前面提到,Leiden算法是在scanpy中實現的。

import scanpy as sc

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

8.1 聚類人類骨髓來源細胞

首先,我們加載數據集。 我們對來自我們已經預處理的NeurIPS人類骨髓數據集的預處理樣本site4-donor8進行聚類。
該數據集使用log1pPF、scran和scTransform 進行標準化。我們將按照預處理章節中的建議重點關注本筆記本中數據集的scran標準化版本,以更好地識別單個細胞的狀態。

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

我們可以使用scanpy函數sc.pp.neighbors計算低維基因表達表示的KNN圖。我們在前30個主成分上調用此函數,因為它們捕獲了數據集中的大部分方差。
可視化聚類可以幫助我們理解結果,因此我們將細胞嵌入到UMAP中。有關UMAP可視化的更多信息可以在可視化部分找到。

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

輸出結果:

/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.

我們現在可以調用Leiden算法。

sc.tl.leiden(adata)

scanpy中默認的分辨率參數是1.0。然而,在許多情況下,分析人員可能希望嘗試不同的分辨率參數來控制聚類的粗糙度。因此,我們建議將聚類結果保存。

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)

我們現在可視化在不同分辨率下使用萊頓算法獲得的不同聚類結果。正如我們所看到的,分辨率很大程度上影響了我們的聚類的粗略程度。較高的分辨率參數會導致更多的社區,即更多的識別簇,而較低的分辨率參數會導致更少的社區。因此,分辨率參數控制算法將KNN嵌入中的聚類區域分組在一起的密度。這對于注釋集群變得尤其重要。

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

我們現在可以清楚地檢查不同分辨率對聚類結果的影響。對于0.25的分辨率,聚類更加粗糙,算法檢測到的社區也更少。此外,與分辨率為1.0 時獲得的聚類相比,聚類區域的密度較低。
我們想再次強調,必須謹慎解釋顯示的簇之間的距離。由于UMAP嵌入是二維的,因此不一定能很好地捕獲所有點之間的距離。我們建議不要解釋UMAP嵌入上可視化的簇之間的距離。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容