哈佛大学单细胞课程|笔记汇总 (七)
哈佛大學(xué)單細(xì)胞課程|筆記匯總 (六)
哈佛大學(xué)單細(xì)胞課程|筆記匯總 (五)
(七)Single-cell RNA-seq clustering analysis—— graph-based cluster
識別重要的PCs (主成分)
確定PC及細(xì)胞聚類的PC數(shù)量對于細(xì)胞分類至關(guān)重要。
一種方法是Seurat自帶的熱圖可視化,利用heatmap(獲取pheatmap聚類后和標(biāo)準(zhǔn)化后的結(jié)果)以PCA分?jǐn)?shù)排序的基因和細(xì)胞可視化選定PC的最變異基因。觀察不同PC的重要性,查看基因差異是否明顯,確定驅(qū)動PC的基因?qū)τ趨^(qū)分不同細(xì)胞類型是否有意義。
其中cells參數(shù)指定帶有繪圖所用最正或最負(fù)PCA分?jǐn)?shù)的細(xì)胞數(shù),目的是找到熱圖開始區(qū)分不明顯的PC數(shù)。
# Explore heatmap of PCs DimHeatmap(seurat_integrated, dims = 1:9, cells = 500, balanced = TRUE)也可以查看對各個PC貢獻(xiàn)最多的基因:
# Printing out the most variable genes driving PCs print(x = seurat_integrated[["pca"]], dims = 1:10, nfeatures = 5)滾石圖(elbow plot,類似于胳膊肘)是另外一種確定PC個數(shù)的方法。
滾石圖顯示了每個PC貢獻(xiàn)的標(biāo)準(zhǔn)差,我們的目標(biāo)是尋找標(biāo)準(zhǔn)差開始趨于平穩(wěn)的拐點。本質(zhì)上,elbow出現(xiàn)的點之后的PC貢獻(xiàn)整體就減少了。但是,此方法可能非常主觀。
我們用前40個PCs繪制一份elbow plot:
# Plot the elbow plot ElbowPlot(object = seurat_integrated, ndims = 40)PC8-10時出現(xiàn)拐點,在PC30時基本與x軸平行。
盡管以上兩種方法與來自Seurat的一起用于標(biāo)準(zhǔn)化和鑒定可變基因的舊方法使用更多,但它們也不再像以前那樣重要了。因為相對來說SCTransform方法比舊方法更準(zhǔn)確。
為什么PC選擇對于較舊的方法更重要?
較舊的方法可能會將數(shù)據(jù)中存在的技術(shù)差異整合到一些高級PC中,因此PC的選擇更為重要。而SCTransform可以更好地估計方差、移除技術(shù)差異,后續(xù)鑒定的PC中就不會包含這些技術(shù)變化的來源。
從理論上講,使用SCTransform聚類時,選擇的PC越多,解釋的差異就越大,但是聚類所需的時間也會更長。因此在此分析中,我們使用top40 PCs進(jìn)行聚類。
細(xì)胞聚類
Seurat使用基于圖的方法進(jìn)行聚類,該方法默認(rèn)情況下使用K最近鄰(K-nearest neighbor,KNN)圖將細(xì)胞嵌入圖結(jié)構(gòu)中,并在具有相似基因表達(dá)模式的細(xì)胞之間繪制邊緣。
我們將使用FindClusters()函數(shù)執(zhí)行基于圖的聚類。分辨率 (resolution)是設(shè)置下游聚類的重要參數(shù),需要針對每個單獨的實驗進(jìn)行優(yōu)化。對于3,000-5,000個細(xì)胞的數(shù)據(jù)集,分辨率設(shè)置在0.4-1.4之間通常會產(chǎn)生良好的聚類。增加的分辨率值會導(dǎo)致更多的聚類,這對于較大的數(shù)據(jù)集通常是必需的。
FindClusters()函數(shù)允許我們輸入一系列分辨率,并將計算聚類的“顆粒度”。
# Determine the K-nearest neighbor graph seurat_integrated <- FindNeighbors(object = seurat_integrated, dims = 1:40)# Determine the clusters for various resolutions seurat_integrated <- FindClusters(object = seurat_integrated,resolution = c(0.4, 0.6, 0.8, 1.0, 1.4))如果我們查看Seurat對象中的metadata(seurat_integrated@metadata),其中包含有不同分辨率計算出的分群結(jié)果。
# Explore resolutions seurat_integrated@meta.data %>% View()我們通常情況下會一個中間范圍的分辨率,比如0.6-0.8,這里使用Idents()函數(shù)來識別簇并將resolution設(shè)置為0.8。
# Assign identity of clusters Idents(object = seurat_integrated) <- "integrated_snn_res.0.8"為了可視化不同的細(xì)胞亞群,最受歡迎的兩種方法分別為t-distributed stochastic neighbor embedding (t-SNE)(https://kb.10xgenomics.com/hc/en-us/articles/217265066-What-is-t-Distributed-Stochastic-Neighbor-Embedding-t-SNE-) 和 Uniform Manifold Approximation and Projection (UMAP)(https://umap-learn.readthedocs.io/en/latest/index.html) 。兩種方法的目的都是通過計算使得在高維空間中具有相似局部鄰域的細(xì)胞在低維空間中也聚類到一起(Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(十二)- Scater單細(xì)胞表達(dá)譜tSNE可視化)。這些方法都是基于PCA的結(jié)果,需要求輸入用于分析的PC數(shù),建議使用與上面FindClusters分析時相同的PC數(shù)。
## Calculation of UMAP ## DO NOT RUN (calculated in the last lesson)# seurat_integrated <- RunUMAP(seurat_integrated, # reduction = "pca", # dims = 1:40)# Plot the UMAP DimPlot(seurat_integrated,reduction = "umap",label = TRUE,label.size = 6)多嘗試分辨率的設(shè)置也是有用的,這里當(dāng)我們把resolution更換為0.4時,
# Assign identity of clusters Idents(object = seurat_integrated) <- "integrated_snn_res.0.4"# Plot the UMAP DimPlot(seurat_integrated,reduction = "umap",label = TRUE,label.size = 6)UMAP的結(jié)果是穩(wěn)定的,但分群是有變化的。(之前是不是會有一個疑問在UMAP圖中比較臨近的細(xì)胞是怎么分開的呢?這是因為分群時用到的信息更多,會區(qū)分更明顯;可視化投影時信息做了降維,只展示最主要的變化)
往期精品(點擊圖片直達(dá)文字對應(yīng)教程)
后臺回復(fù)“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
?
總結(jié)
以上是生活随笔為你收集整理的哈佛大学单细胞课程|笔记汇总 (七)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【重磅综述】长序列数据分析相关资源哪里找
- 下一篇: 三大高通量测序平台芯片通量对比图(请把手