本文參考Satija Lab的seurat 包,網(wǎng)址?https://satijalab.org/seurat
設(shè)置Seurat對(duì)象
在本教程中,我們將分析10X Genomics免費(fèi)提供的外周血單核細(xì)胞(PBMC)數(shù)據(jù)集。在Illumina NextSeq 500上對(duì)2,700個(gè)單細(xì)胞進(jìn)行了測(cè)序。原始數(shù)據(jù)可以在這里找到。
我們首先閱讀數(shù)據(jù)。該Read10X函數(shù)從10X?讀取cellranger管道的輸出,返回唯一分子識(shí)別(UMI)計(jì)數(shù)矩陣。該矩陣中的值表示在每個(gè)細(xì)胞(列)中檢測(cè)到的每個(gè)特征(即基因;行)的分子數(shù)。
接下來我們使用計(jì)數(shù)矩陣來創(chuàng)建一個(gè)Seurat對(duì)象。該對(duì)象充當(dāng)容器,其包含單細(xì)胞數(shù)據(jù)集的數(shù)據(jù)(如計(jì)數(shù)矩陣)和分析(如PCA或聚類結(jié)果)。有關(guān)Seurat對(duì)象結(jié)構(gòu)的技術(shù)討論,請(qǐng)查看我們的GitHub Wiki。例如,計(jì)數(shù)矩陣存儲(chǔ)在pbmc[["RNA"]]@counts。
library(dplyr)library(Seurat)
# Load the PBMC dataset
pbmc.data <- Read10X(data.dir ="../data/pbmc3k/filtered_gene_bc_matrices/hg19/")(路徑為下載的矩陣數(shù)據(jù)所在的位置,視各自下載路徑而定)
# Initialize the Seurat object with the raw (non-normalized data).
pbmc <- CreateSeuratObject(counts = pbmc.data, project ="pbmc3k", min.cells =3, min.features =200)
pbmc
## An object of class Seurat
## 13714 features across 2700 samples within 1 assay
## Active assay: RNA (13714 features)
計(jì)數(shù)矩陣中的數(shù)據(jù)是什么樣的?
# 讓我們檢查前30個(gè)細(xì)胞中的一些基因
pbmc.data[c("CD3D","TCL1A","MS4A1"),1:30]
## 3 x 30 sparse Matrix of class "dgCMatrix"
#### CD3D? 4 . 10 . . 1 2 3 1 . . 2 7 1 . . 1 3 . 2? 3 . . . . . 3 4 1 5
## TCL1A . .? . . . . . . 1 . . . . . . . . . . .? . 1 . . . . . . . .
## MS4A1 . 6? . . . . . . 1 1 1 . . . . . . . . . 36 1 2 . . 2 . . . .
矩陣中的值表示0(未檢測(cè)到分子)。由于scRNA-seq矩陣中的大多數(shù)值都是0,因此Seurat盡可能使用稀疏矩陣表示。這為Drop-seq / inDrop / 10x數(shù)據(jù)帶來了顯著的內(nèi)存和速度節(jié)省。
dense.size <- object.size(as.matrix(pbmc.data))dense.size
## 709548272 bytes
sparse.size <- object.size(pbmc.data)sparse.size
## 29861992 bytes
dense.size/sparse.size
## 23.8 bytes
標(biāo)準(zhǔn)的預(yù)處理工作流程
以下步驟包括Seurat中scRNA-seq數(shù)據(jù)的標(biāo)準(zhǔn)預(yù)處理工作流程。這些代表了基于QC指標(biāo),數(shù)據(jù)標(biāo)準(zhǔn)化和縮放以及高度可變特征的檢測(cè)的細(xì)胞選擇和過濾。
QC并選擇細(xì)胞進(jìn)行進(jìn)一步分析
Seurat允許您根據(jù)任何用戶定義的標(biāo)準(zhǔn)輕松探索QC指標(biāo)和過濾單元格。社區(qū)常用的一些QC指標(biāo)包括
在每個(gè)細(xì)胞中檢測(cè)到的獨(dú)特基因的數(shù)量。
低質(zhì)量細(xì)胞或空液滴通常只有很少的基因
細(xì)胞雙峰或多重峰可能表現(xiàn)出異常高的基因計(jì)數(shù)
同樣,細(xì)胞內(nèi)檢測(cè)到的分子總數(shù)(與獨(dú)特基因強(qiáng)烈相關(guān))
映射到線粒體基因組的讀數(shù)百分比
低質(zhì)量/垂死細(xì)胞通常表現(xiàn)出廣泛的線粒體污染
我們使用PercentageFeatureSet函數(shù)計(jì)算線粒體QC指標(biāo),該函數(shù)計(jì)算源自一組特征的計(jì)數(shù)百分比
我們使用所有基因MT-集作為一組線粒體基因
# The [[ operator can add columns to object metadata. This is a great place to stash QC stats
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern ="^MT-"
在下面的示例中,我們可視化QC指標(biāo),并使用它們來過濾單元格。
我們過濾具有超過2,500或小于200的獨(dú)特特征計(jì)數(shù)的細(xì)胞
我們過濾線粒體計(jì)數(shù)> 5%的細(xì)胞
# Visualize QC metrics as a violin plot
VlnPlot(pbmc, features =c("nFeature_RNA","nCount_RNA","percent.mt"), ncol =3)

# FeatureScatter is typically used to visualize feature-feature relationships, but can be used# for anything calculated by the object, i.e. columns in object metadata, PC scores etc.
plot1 <- FeatureScatter(pbmc, feature1 ="nCount_RNA", feature2 ="percent.mt")
plot2 <- FeatureScatter(pbmc, feature1 ="nCount_RNA", feature2 ="nFeature_RNA")
CombinePlots(plots = list(plot1, plot2))

pbmc <- subset(pbmc, subset = nFeature_RNA >200& nFeature_RNA <2500& percent.mt <5)
規(guī)范化數(shù)據(jù)
從數(shù)據(jù)集中刪除不需要的單元格后,下一步是規(guī)范化數(shù)據(jù)。默認(rèn)情況下,我們采用全局縮放規(guī)范化方法“LogNormalize”,通過總表達(dá)式對(duì)每個(gè)單元格的要素表達(dá)式度量進(jìn)行標(biāo)準(zhǔn)化,將其乘以比例因子(默認(rèn)為10,000),并對(duì)結(jié)果進(jìn)行對(duì)數(shù)轉(zhuǎn)換。歸一化值存儲(chǔ)在pbmc[["RNA"]]@data。
pbmc <- NormalizeData(pbmc, normalization.method ="LogNormalize", scale.factor =10000)
為清楚起見,在前一行代碼(以及將來的命令)中,我們?yōu)楹瘮?shù)調(diào)用中的某些參數(shù)提供默認(rèn)值。但是,這不是必需的,可以通過以下方式實(shí)現(xiàn)相同的行為:
pbmc <- NormalizeData(pbmc)
識(shí)別高度可變的 features ( FindVariableFeatures )
接下來,我們計(jì)算在數(shù)據(jù)集中表現(xiàn)出高細(xì)胞間差異的特征子集(即,它們?cè)谝恍┘?xì)胞中高度表達(dá),而在其他細(xì)胞中低表達(dá))。我們和其他人已經(jīng)發(fā)現(xiàn),在下游分析中關(guān)注這些基因有助于突出單細(xì)胞數(shù)據(jù)集中的生物信號(hào)。
我們?cè)?a target="_blank">這里詳細(xì)描述了Seurat3中的程序,并通過直接建模單細(xì)胞數(shù)據(jù)中固有的均值 - 方差關(guān)系對(duì)先前版本進(jìn)行了改進(jìn),并在FindVariableFeatures函數(shù)中實(shí)現(xiàn)。默認(rèn)情況下,我們?yōu)槊總€(gè)數(shù)據(jù)集返回2,000個(gè)要素。這些將用于下游分析,如PCA。
pbmc <- FindVariableFeatures(pbmc, selection.method ="vst", nfeatures =2000)
# Identify the 10 most highly variable genestop10 <- head(VariableFeatures(pbmc),10)
# plot variable features with and without labels
plot1 <- VariableFeaturePlot(pbmc)
plot2 <- LabelPoints(plot = plot1, points = top10, repel =TRUE)
CombinePlots(plots = list(plot1, plot2))

縮放數(shù)據(jù)
接下來,我們應(yīng)用線性變換('縮放'),這是在PCA等降維技術(shù)之前的標(biāo)準(zhǔn)預(yù)處理步驟。該ScaleData函數(shù)可以:
1.改變每個(gè)基因的表達(dá),使得跨細(xì)胞的平均表達(dá)為0
2.縮放每個(gè)基因的表達(dá),以便跨細(xì)胞的方差為1
3.該步驟在下游分析中給予相同的權(quán)重,因此高表達(dá)的基因不占優(yōu)勢(shì)
4.結(jié)果存儲(chǔ)在?pbmc[["RNA"]]@scale.data
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes)
這個(gè)步驟需要太長(zhǎng)時(shí)間!我可以加快速度嗎?
縮放是Seurat工作流程中必不可少的一步,但僅限于將用作PCA輸入的基因。因此,默認(rèn)值ScaleData僅為對(duì)先前標(biāo)識(shí)的變量要素執(zhí)行縮放(默認(rèn)為2,000)。為此,省略features上一個(gè)函數(shù)調(diào)用中的參數(shù),即
pbmc <- ScaleData(pbmc)
您的PCA和群集結(jié)果將不受影響。然而,Seurat熱圖(如下圖所示產(chǎn)生DoHeatmap)需要對(duì)熱圖中的基因進(jìn)行縮放,以確保高表達(dá)的基因不會(huì)影響熱圖。為了確保我們以后不將任何基因遺留在熱圖之外,我們正在擴(kuò)展本教程中的所有基因。
?如何在Seurat v2中刪除不需要的變化來源?
在Seurat v2我們還利用ScaleData函數(shù)從單細(xì)胞集刪除變化的干擾源。例如,我們可以“消退”與(例如)細(xì)胞周期階段或線粒體污染相關(guān)的異質(zhì)性。這些功能仍然支持ScaleData中Seurat v3,即:
pbmc <- ScaleData(pbmc, vars.to.regress ="percent.mt")
但是,特別是對(duì)于想要使用此功能的高級(jí)用戶,我們強(qiáng)烈建議使用新的規(guī)范化工作流程sctransform。該方法在我們最近的預(yù)印本中進(jìn)行了描述,這里使用Seurat v3單獨(dú)設(shè)置了一個(gè)小插圖。與此同時(shí)ScaleData,該功能SCTransform還包括一個(gè)vars.to.regress參數(shù)。
執(zhí)行線性尺寸縮減
接下來,我們對(duì)縮放數(shù)據(jù)執(zhí)行PCA。默認(rèn)情況下,只有先前確定的變量要素用作輸入,但features如果要選擇其他子集,則可以使用參數(shù)定義。
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))
提供定義可視化細(xì)胞和功能的幾種有用的方式PCA,包括VizDimReduction,DimPlot,和DimHeatmap
# Examine and visualize PCA results a few different ways
print(pbmc[["pca"]], dims =1:5, nfeatures =5)
## PC_ 1
## Positive:? CST3, TYROBP, LST1, AIF1, FTL
## Negative:? MALAT1, LTB, IL32, IL7R, CD2
## PC_ 2
## Positive:? CD79A, MS4A1, TCL1A, HLA-DQA1, HLA-DQB1
## Negative:? NKG7, PRF1, CST7, GZMB, GZMA
## PC_ 3
## Positive:? HLA-DQA1, CD79A, CD79B, HLA-DQB1, HLA-DPB1## Negative:? PPBP, PF4, SDPR, SPARC, GNG11
## PC_ 4
## Positive:? HLA-DQA1, CD79B, CD79A, MS4A1, HLA-DQB1
## Negative:? VIM, IL7R, S100A6, IL32, S100A8
## PC_ 5
## Positive:? GZMB, NKG7, S100A8, FGFBP2, GNLY
## Negative:? LTB, IL7R, CKB, VIM, MS4A7
VizDimLoadings(pbmc, dims =1:2, reduction ="pca")

DimPlot(pbmc, reduction ="pca")

特別是DimHeatmap允許容易地探索數(shù)據(jù)集中的異質(zhì)性的主要來源,并且在試圖決定包括哪些PC以用于進(jìn)一步的下游分析時(shí)可以是有用的。細(xì)胞和特征都根據(jù)其PCA分?jǐn)?shù)排序。設(shè)置cells為數(shù)字可以繪制光譜兩端的“極端”單元格,從而大大加快了大型數(shù)據(jù)集的繪圖速度。雖然顯然是一種監(jiān)督分析,但我們發(fā)現(xiàn)這是探索相關(guān)特征集的有用工具。
DimHeatmap(pbmc, dims =1, cells =500, balanced =TRUE)

DimHeatmap(pbmc, dims =1:15, cells =500, balanced =TRUE)

確定數(shù)據(jù)集的“維度”
為了克服scRNA-seq數(shù)據(jù)的任何單一特征中的廣泛技術(shù)噪聲,Seurat基于其PCA分?jǐn)?shù)對(duì)細(xì)胞進(jìn)行聚類,每個(gè)PC基本上代表在相關(guān)特征集中組合信息的“元特征”。因此,頂部主要組件表示數(shù)據(jù)集的強(qiáng)大壓縮。但是,我們應(yīng)該選擇包含多少個(gè)組件?10?20?100?
在Macosko?等人中,我們實(shí)施了一項(xiàng)受JackStraw程序啟發(fā)的重采樣測(cè)試。我們隨機(jī)置換數(shù)據(jù)的子集(默認(rèn)為1%)并重新運(yùn)行PCA,構(gòu)建特征分?jǐn)?shù)的“空分布”,并重復(fù)此過程。我們將“重要”PC識(shí)別為具有低p值特征的強(qiáng)大豐富的PC。
#NOTE:This process can take a long time for big datasets, comment out for expediency. More approximate techniques such as those implemented in ElbowPlot() can be used to reduce computation time
pbmc <- JackStraw(pbmc, num.replicate =100)
pbmc <- ScoreJackStraw(pbmc, dims =1:20)
該JackStrawPlot功能提供了一種可視化工具,用于比較每個(gè)PC的p值分布和均勻分布(虛線)?!爸匾摹盤C將顯示具有低p值的特征的強(qiáng)烈豐富(虛線上方的實(shí)線)。在這種情況下,看起來在前10-12個(gè)PC之后,重要性急劇下降。
JackStrawPlot(pbmc, dims =1:15)

另一種啟發(fā)式方法生成“肘圖”:基于每個(gè)(ElbowPlot函數(shù))解釋的方差百分比對(duì)主成分進(jìn)行排序。在這個(gè)例子中,我們可以觀察PC9-10周圍的“肘部”,這表明大多數(shù)真實(shí)信號(hào)都是在前10PC中捕獲的。
ElbowPlot(pbmc)

識(shí)別數(shù)據(jù)集的真實(shí)維度 - 對(duì)用戶來說可能具有挑戰(zhàn)性/不確定性。因此,我們建議考慮這三種方法。第一個(gè)是更多的監(jiān)督,探索PC以確定異質(zhì)性的相關(guān)來源,并且可以與GSEA一起使用。第二個(gè)實(shí)現(xiàn)基于隨機(jī)空模型的統(tǒng)計(jì)測(cè)試,但對(duì)于大型數(shù)據(jù)集來說是耗時(shí)的,并且可能不會(huì)返回明確的PC截止。第三種是常用的啟發(fā)式算法,可以立即計(jì)算。在這個(gè)例子中,所有三種方法產(chǎn)生了類似的結(jié)果,但我們可能有理由在PC 7-12之間選擇任何作為截止值的東西。
我們?cè)谶@里選擇了10,但鼓勵(lì)用戶考慮以下內(nèi)容:
1.樹突細(xì)胞和NK研究者可以認(rèn)識(shí)到與PC12和13強(qiáng)烈相關(guān)的基因定義了罕見的免疫亞群(即MZB1是漿細(xì)胞樣DC的標(biāo)記)。然而,這些組是如此罕見,如果沒有先驗(yàn)知識(shí),很難將這種大小的數(shù)據(jù)集與背景噪聲區(qū)分開來。
2.我們鼓勵(lì)用戶使用不同數(shù)量的PC(10,15甚至50?。┲貜?fù)下游分析。正如您將觀察到的,結(jié)果通常沒有顯著差異。
3.在選擇此參數(shù)時(shí),我們建議用戶在較高的一側(cè)犯錯(cuò)。例如,僅使用5臺(tái)PC進(jìn)行下游分析確實(shí)會(huì)對(duì)結(jié)果造成嚴(yán)重影響。
聚類細(xì)胞
Seurat v3采用基于圖形的聚類方法,建立在(Macosko?等人)的初始策略之上。重要的是,驅(qū)動(dòng)聚類分析的距離度量(基于先前識(shí)別的PC)保持不變。然而,我們將細(xì)胞距離矩陣分成簇的方法已經(jīng)大大改進(jìn)。我們的方法受到最近手稿的啟發(fā),這些手稿將基于圖形的聚類方法應(yīng)用于scRNA-seq數(shù)據(jù)[SNN-Cliq,Xu和Su,Bioinformatics,2015]和CyTOF數(shù)據(jù)[PhenoGraph,Levine?等,Cell,2015]。簡(jiǎn)而言之,這些方法將單元格嵌入圖形結(jié)構(gòu)中 - 例如K-最近鄰(KNN)圖形,在具有相似特征表達(dá)模式的單元格之間繪制邊緣,然后嘗試將此圖形劃分為高度互連的“準(zhǔn)集團(tuán)”或“社區(qū)”。
與PhenoGraph一樣,我們首先根據(jù)PCA空間中的歐氏距離構(gòu)建KNN圖,并根據(jù)其局部鄰域中的共享重疊(Jaccard相似性)細(xì)化任意兩個(gè)單元之間的邊權(quán)重。使用該FindNeighbors函數(shù)執(zhí)行該步驟,并將先前定義的數(shù)據(jù)集維度(前10個(gè)PC)作為輸入。
為了聚類細(xì)胞,我們接下來應(yīng)用模塊化優(yōu)化技術(shù),例如Louvain算法(默認(rèn))或SLM?[SLM,Blondel?等,Journal of Statistical Mechanics],將細(xì)胞迭代分組在一起,目的是優(yōu)化標(biāo)準(zhǔn)模塊化功能。該FindClusters函數(shù)實(shí)現(xiàn)此過程,并包含一個(gè)分辨率參數(shù),用于設(shè)置下游群集的“粒度”,增加的值會(huì)導(dǎo)致更多的群集。我們發(fā)現(xiàn)將此參數(shù)設(shè)置在0.4-1.2之間通常會(huì)返回大約3K單元格的單細(xì)胞數(shù)據(jù)集的良好結(jié)果。較大的數(shù)據(jù)集通常會(huì)增加最佳分辨率??梢允褂迷揑dents功能找到群集。
pbmc <- FindNeighbors(pbmc, dims =1:10)
pbmc <- FindClusters(pbmc, resolution =0.5)
## Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
#### Number of nodes: 2638
## Number of edges: 96033
#### Running Louvain algorithm...
## Maximum modularity in 10 random starts: 0.8720
## Number of communities: 9
## Elapsed time: 0 seconds
# Look at cluster IDs of the first 5 cellshead(Idents(pbmc),5)
## AAACATACAACCAC AAACATTGAGCTAC AAACATTGATCAGC AAACCGTGCTTCCG AAACCGTGTATGCG
##? ? ? ? ? ? ? 1? ? ? ? ? ? ? 3? ? ? ? ? ? ? 1? ? ? ? ? ? ? 2? ? ? ? ? ? ? 6
## Levels: 0 1 2 3 4 5 6 7 8
運(yùn)行非線性降維(UMAP / tSNE)
Seurat提供了幾種非線性降維技術(shù),如tSNE和UMAP,可視化和探索這些數(shù)據(jù)集。這些算法的目標(biāo)是學(xué)習(xí)數(shù)據(jù)的基礎(chǔ)流形,以便在低維空間中將相似的單元放在一起。上面確定的基于圖的聚類內(nèi)的單元應(yīng)該共同定位這些降維圖。作為UMAP和tSNE的輸入,我們建議使用相同的PC作為聚類分析的輸入。
# If you haven't installed UMAP, you can do so via reticulate::py_install(packages =# 'umap-learn')
(V3 版本這里有一個(gè)bug,裝了umap-learn以后還是會(huì)報(bào)錯(cuò) cant find umap,解決方法為:
1.restart R
2.重新run一次或兩次下面的代碼)
pbmc <- RunUMAP(pbmc, dims =1:10)
# note that you can set `label = TRUE` or use the LabelClusters function to help label individual clusters
DimPlot(pbmc, reduction ="umap")

您可以在此時(shí)保存對(duì)象,以便可以輕松地將其加載回來,而無需重新運(yùn)行上面執(zhí)行的計(jì)算密集型步驟,或者可以輕松地與協(xié)作者共享。
saveRDS(pbmc, file ="../output/pbmc_tutorial.rds")
尋找差異表達(dá)的特征(聚類生物標(biāo)志物)
Seurat可以幫助您找到通過差異表達(dá)定義聚類的標(biāo)記。默認(rèn)情況下,它標(biāo)識(shí)單個(gè)群集(指定ident.1)的正負(fù)標(biāo)記,與所有其他單元格進(jìn)行比較。FindAllMarkers為所有群集自動(dòng)執(zhí)行此過程,但您也可以測(cè)試群集彼此之間或所有單元格。
該min.pct論證要求在兩組單元中的任一組中以最小百分比檢測(cè)特征,并且thresh.test參數(shù)要求在兩組之間以一定量差異地表示(平均)特征。您可以將這兩個(gè)設(shè)置為0,但時(shí)間會(huì)急劇增加 - 因?yàn)檫@將測(cè)試大量不太可能具有高度不同的功能。作為加速這些計(jì)算的另一種選擇,max.cells.per.ident可以設(shè)置。這將對(duì)每個(gè)標(biāo)識(shí)類進(jìn)行下采樣,使其不再具有比設(shè)置的更多的單元格。雖然通常會(huì)出現(xiàn)功率損失,但速度增加可能是顯著的,并且最高度差異表達(dá)的功能可能仍然會(huì)升至頂部。
# find all markers of cluster 1
cluster1.markers <- FindMarkers(pbmc, ident.1 =1, min.pct =0.25)
head(cluster1.markers, n =5)
# find all markers distinguishing cluster 5 from clusters 0 and 3
cluster5.markers <- FindMarkers(pbmc, ident.1 =5, ident.2 = c(0,3), min.pct =0.25)
head(cluster5.markers, n =5)
# find markers for every cluster compared to all remaining cells, report only the positive ones
pbmc.markers <- FindAllMarkers(pbmc, only.pos =TRUE, min.pct =0.25, logfc.threshold =0.25)
pbmc.markers %>% group_by(cluster) %>% top_n(n =2, wt = avg_logFC)
Seurat有幾個(gè)差分表達(dá)式測(cè)試,可以使用test.use參數(shù)設(shè)置(有關(guān)詳細(xì)信息,請(qǐng)參閱我們的DE插圖)。例如,ROC測(cè)試返回任何單個(gè)標(biāo)記的“分類能力”(范圍從0 - 隨機(jī),到1 - 完美)。
cluster1.markers <- FindMarkers(pbmc, ident.1 =0, logfc.threshold =0.25, test.use ="roc", only.pos =TRUE)
我們提供了幾種用于可視化標(biāo)記表達(dá)的工具。VlnPlot(顯示跨群集的表達(dá)概率分布),以及FeaturePlot(在tSNE或PCA圖上可視化特征表達(dá))是我們最常用的可視化。我們還建議您探索RidgePlot,CellScatter以及DotPlot查看數(shù)據(jù)集的其他方法。
VlnPlot(pbmc, features = c("MS4A1","CD79A"))

# you can plot raw counts as well
VlnPlot(pbmc, features = c("NKG7","PF4"), slot ="counts", log =TRUE)

FeaturePlot(pbmc, features = c("MS4A1","GNLY","CD3E","CD14","FCER1A","FCGR3A","LYZ","PPBP","CD8A"))

DoHeatmap為給定的單元格和要素生成表達(dá)式熱圖。在這種情況下,我們正在為每個(gè)群集繪制前20個(gè)標(biāo)記(或所有標(biāo)記,如果小于20)。
top10 <- pbmc.markers %>% group_by(cluster) %>% top_n(n =10, wt = avg_logFC)
DoHeatmap(pbmc, features = top10$gene) + NoLegend()

將單元類型標(biāo)識(shí)分配給集群
幸運(yùn)的是,在這個(gè)數(shù)據(jù)集的情況下,我們可以使用規(guī)范標(biāo)記輕松地將無偏的聚類與已知的細(xì)胞類型相匹配:

new.cluster.ids <- c("Naive CD4 T","Memory CD4 T","CD14+ Mono","B","CD8 T","FCGR3A+ Mono","NK","DC","Platelet")
names(new.cluster.ids) <- levels(pbmc)pbmc <- RenameIdents(pbmc, new.cluster.ids)
DimPlot(pbmc, reduction ="umap", label =TRUE, pt.size =0.5) + NoLegend()

saveRDS(pbmc, file ="../output/pbmc3k_final.rds")