本文首發(fā)于我的個人博客醇王, http://xuzhougeng.top/
往期回顧:
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第一章)
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第二章)
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第三章)
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第四章)
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第五章)
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第六章)
- 使用ArchR分析單細胞ATAC-seq數(shù)據(jù)(第七章)
第8章: 使用scRNA-seq定義cluster類型
除了使用基因得分定義細胞類群以外呢燥,ArchR還能整合scRNA-seq數(shù)據(jù)。通過將scATAC-seq數(shù)據(jù)里的基因得分矩陣和scRNA-seq數(shù)據(jù)的基因表達量矩陣進行對比寓娩,ArchR就能將scATAC-seq的細胞比對到scRNA-seq的細胞,實現(xiàn)兩種數(shù)據(jù)的整合。之后棘伴,我們借助scRNA-seq數(shù)據(jù)已經(jīng)定義的細胞類群寞埠,或者整合后的scRNA-seq的基因表達量來注釋細胞類群。在代碼內(nèi)部焊夸,我們調(diào)用了Seurat::FindTransferAnchors()
仁连,從而實現(xiàn)兩種數(shù)據(jù)集之間的比較。當然阱穗,ArchR不是簡單地對函數(shù)進行封裝饭冬,而是在此基礎上通過對數(shù)據(jù)的拆分,實現(xiàn)并行計算揪阶,從而能將該流程應用到更大規(guī)模的細胞中昌抠。
該整合過程實際上會尋找scATAC-seq和scRNA-seq兩者中最相似的細胞,然后將scRNA-seq中對應的細胞表達量賦值給scATAAC-seq細胞鲁僚。最后炊苫,scATAC-seq中每個細胞都會有基因表達量特征,能被用于下游分析冰沙。這一章會闡述如何利用該信息定義細胞類型侨艾,之后會介紹如何使用連接的scRNA-seq數(shù)據(jù)做更加復雜的分析,例如識別預測的順式調(diào)控元件拓挥。我們相信由于多組學單細胞譜的商業(yè)化唠梨,這類整合分析將會越來越多。同時侥啤,在ArchR中使用公共數(shù)據(jù)里匹配細胞類型的scRNA-seq數(shù)據(jù)或者自己使用目標樣本得到的scRNA-seq數(shù)據(jù)也能加強scATAC-seq分析当叭。
8.1 scATAC-seq細胞和scRNA-seq細胞跨平臺連接
為了能將我們教程中的scATAC-seq數(shù)據(jù)與其匹配的scRNA-seq數(shù)據(jù)進行整合,我們將使用 Granja* et al (2019) 里的造血細胞scRNA-seq數(shù)據(jù)愿棋。
scRNA-seq數(shù)據(jù)以 RangedSummarizedExperiment
對象保存科展,大小為111MB。此外糠雨,ArchR還接受未經(jīng)修改的Seurat
對象作為整合流程的輸入才睹。我們使用download.file
下載數(shù)據(jù)
if(!file.exists("scRNA-Hematopoiesis-Granja-2019.rds")){
download.file(
url = "https://jeffgranja.s3.amazonaws.com/ArchR/TestData/scRNA-Hematopoiesis-Granja-2019.rds",
destfile = "scRNA-Hematopoiesis-Granja-2019.rds"
)
}
下載之后,我們使用readRDS
進行讀取甘邀,并查看該對象
seRNA <- readRDS("scRNA-Hematopoiesis-Granja-2019.rds")
seRNA
## class: RangedSummarizedExperiment
## dim: 20287 35582
## metadata(0):
## assays(1): counts
## rownames(20287): FAM138A OR4F5 … S100B PRMT2
## rowData names(3): gene_name gene_id exonLength
## colnames(35582): CD34_32_R5:AAACCTGAGTATCGAA-1
## CD34_32_R5:AAACCTGAGTCGTTTG-1 …
## BMMC_10x_GREENLEAF_REP2:TTTGTTGCATGTGTCA-1
## BMMC_10x_GREENLEAF_REP2:TTTGTTGCATTGAAAG-1
## colData names(10): Group nUMI_pre … BioClassification Barcode
從輸出信息中琅攘,我們可以發(fā)現(xiàn)它里面有基因表達量的count矩陣和對應的元信息。
元信息列里的BioClassification
記錄著scRNA-seq數(shù)據(jù)中每個細胞對應的細胞類型分類
colnames(colData(seRNA))
# [1] "Group" "nUMI_pre" "nUMI"
# [4] "nGene" "initialClusters" "UMAP1"
# [7] "UMAP2" "Clusters" "BioClassification"
# [10] "Barcode"
使用table()
松邪,我們可以看到scRNA-seq細胞類型每一群的細胞數(shù)
table(colData(seRNA)$BioClassification)
# 01_HSC 02_Early.Eryth 03_Late.Eryth 04_Early.Baso 05_CMP.LMPP
# 1425 1653 446 111 2260
# 06_CLP.1 07_GMP 08_GMP.Neut 09_pDC 10_cDC
# 903 2097 1050 544 325
#11_CD14.Mono.1 12_CD14.Mono.2 13_CD16.Mono 14_Unk 15_CLP.2
# 1800 4222 292 520 377
# 16_Pre.B 17_B 18_Plasma 19_CD8.N 20_CD4.N1
# 710 1711 62 1521 2470
# 21_CD4.N2 22_CD4.M 23_CD8.EM 24_CD8.CM 25_NK
# 2364 3539 796 2080 2143
# 26_Unk
# 161
我們后續(xù)會用到兩種整合方法坞琴。第一種是無約束整合,我們對scATAC-seq實驗里的細胞不作任何假設逗抑,直接嘗試將這些細胞和scRNA-seq實驗里的任意細胞進行配對剧辐。這是一種初步可行方案寒亥,后續(xù)會根據(jù)這一步得到的結果,對整合步驟進行約束來提升跨平臺配對的質(zhì)量荧关。第二種方法是約束整合溉奕,即利用對細胞類型的先驗知識限制搜索范圍。舉個例子忍啤,如果我們知道scATAC-seq中的Cluster A,B,C對應著三種不同的T細胞加勤,scRNA-seq中的Cluster X,Y對應著兩種不同的T細胞,我們告訴ArchR只需要嘗試將scATAC-seq中的Cluster A,B,C跟scRNA-seq中的Cluster X,Y進行配對同波。下面鳄梅,我們將先以無約束整合初步地鑒定每一種聚類的類型,然后根據(jù)分析結果做更加細致的約束整合未檩。
8.1.1 無約束整合
我們使用addGeneIntegrationMatrix()
對scATAC-seq和scRNA-seq數(shù)據(jù)進行整合戴尸。正如之前所提到的,該函數(shù)的seRNA
參數(shù)接受Seurat
或RangedSummarizedExperiment
對象作為輸入讹挎。因為第一輪是探索性質(zhì)的無約束整合校赤,因此,我們不會將結果保存在Arrow文件中(addToArrow=FALSE
)筒溃。整合后的矩陣將會根據(jù)matrixName
進行命名马篮,存放在ArchRProject
中。該函數(shù)的其他參數(shù)對應cellColData
中列名用于存放額外的信息怜奖,nameCell
存放scRNA-seq中匹配的細胞ID浑测,nameGroup
存放scRNA-seq細胞中的分組ID,nameScore
存放跨平臺整合得分歪玲。
projHeme2 <- addGeneIntegrationMatrix(
ArchRProj = projHeme2,
useMatrix = "GeneScoreMatrix",
matrixName = "GeneIntegrationMatrix",
reducedDims = "IterativeLSI",
seRNA = seRNA,
addToArrow = FALSE,
groupRNA = "BioClassification",
nameCell = "predictedCell_Un",
nameGroup = "predictedGroup_Un",
nameScore = "predictedScore_Un"
)
無約束整合的結果可能并不準確迁央,但是為后續(xù)更加精細的約束分析奠定了基礎。
8.1.2 約束整合
現(xiàn)在我們已經(jīng)有了初步的無約束整合結果滥崩,我們就有了大致的細胞類型分布情況岖圈,接著就是優(yōu)化整合結果。
因為我們教程里的數(shù)據(jù)來自于造血細胞钙皮,我們將會在理想狀態(tài)下將類似的細胞整合在一起蜂科。首先,我們先確認scRNA-seq里細胞類型在我們的scATAC-seq聚類中分布情況短条。這一步的目標是使用無約束整合的方法找到scATAC-seq和scRNA-seq中和T細胞和NK細胞對應的聚類导匣,后續(xù)會用到該信息進行約束整合。具體操作為茸时,我們創(chuàng)建一個confusionMatrix
,并關注Cluster
和predictedGroup_Un
的交叉部分中scRNA-seq的細胞類型贡定。
cM <- as.matrix(confusionMatrix(projHeme2$Clusters, projHeme2$predictedGroup_Un))
preClust <- colnames(cM)[apply(cM, 1 , which.max)]
cbind(preClust, rownames(cM)) #Assignments
輸出信息如下,展示了12個scATAC-seq聚類中對應最優(yōu)可能的scRNA-seq細胞類型可都。
# preClust
# [1,] "03_Late.Eryth" "C10"
# [2,] "20_CD4.N1" "C8"
# [3,] "16_Pre.B" "C3"
# [4,] "08_GMP.Neut" "C11"
# [5,] "17_B" "C4"
# [6,] "11_CD14.Mono.1" "C1"
# [7,] "01_HSC" "C12"
# [8,] "22_CD4.M" "C9"
# [9,] "09_pDC" "C5"
# [10,] "25_NK" "C7"
# [11,] "12_CD14.Mono.2" "C2"
# [12,] "06_CLP.1" "C6"
首先缓待,我們檢查在無約束整合中用到的scRNA-seq數(shù)據(jù)里細胞類型標簽蚓耽。
unique(unique(projHeme2$predictedGroup_Un))
# [1] "08_GMP.Neut" "25_NK" "16_Pre.B" "06_CLP.1"
# [5] "07_GMP" "11_CD14.Mono.1" "04_Early.Baso" "22_CD4.M"
# [9] "03_Late.Eryth" "05_CMP.LMPP" "17_B" "19_CD8.N"
#[13] "09_pDC" "13_CD16.Mono" "23_CD8.EM" "12_CD14.Mono.2"
#[17] "20_CD4.N1" "02_Early.Eryth" "21_CD4.N2" "24_CD8.CM"
#[21] "01_HSC"
從上面的輸出中,我們發(fā)現(xiàn)scRNA-seq數(shù)據(jù)中與NK細胞和T細胞對應的聚類是Cluster 19 - 25命斧。
接著我們創(chuàng)建一個字符串模式用來表示這些聚類田晚,后續(xù)的約束整合會用到嘱兼,其中|
在正則表達式中表示"或"国葬,我們之后使用grep
根據(jù)這些字符串模式從scATAC-seq提取和scRNA-seq對應的聚類。芹壕。
#From scRNA
cTNK <- paste0(paste0(19:25), collapse="|")
cTNK
# [1] "19|20|21|22|23|24|25"
其余的聚類就稱之為"Non-T cell, Non-NK cell"(例如Cluster 1 - 18)汇四,也創(chuàng)建了對應的字符串模式
cNonTNK <- paste0(c(paste0("0", 1:9), 10:13, 15:18), collapse="|")
cNonTNK
#[1] "01|02|03|04|05|06|07|08|09|10|11|12|13|15|16|17|18"
接著再用字符串模式在preClust
找到對應的scATAC-seq列名,然后使用列名從混合矩陣提取對應的列踢涌。
對于T細胞和NK細胞通孽,scATAC-seq聚類ID就是C7, C8, C9
#Assign scATAC to these categories
clustTNK <- rownames(cM)[grep(cTNK, preClust)]
clustTNK
#[1] "C8" "C9" "C7"
對于" Non-T cells and Non-NK cells", ID就是scATAC-seq聚類余下的部分
clustNonTNK <- rownames(cM)[grep(cNonTNK, preClust)]
clustNonTNK
# [1] "C10" "C3" "C11" "C4" "C1" "C12" "C5" "C2" "C6"
接著在scRNA-seq中做相同的操作,篩選出相同的細胞類型睁壁。首先背苦,我們鑒定scRNA-seq數(shù)據(jù)中T細胞和NK細胞
#RNA get cells in these categories
rnaTNK <- colnames(seRNA)[grep(cTNK, colData(seRNA)$BioClassification)]
head(rnaTNK)
#[1] "PBMC_10x_GREENLEAF_REP1:AAACCCAGTCGTCATA-1"
#[2] "PBMC_10x_GREENLEAF_REP1:AAACCCATCCGATGTA-1"
#[3] "PBMC_10x_GREENLEAF_REP1:AAACCCATCTCAACGA-1"
#[4] "PBMC_10x_GREENLEAF_REP1:AAACCCATCTCTCGAC-1"
#[5] "PBMC_10x_GREENLEAF_REP1:AAACGAACAATCGTCA-1"
#[6] "PBMC_10x_GREENLEAF_REP1:AAACGAACACGATTCA-1"
然后,鑒定scRNA-seq數(shù)據(jù)中"Non-T cell Non-NK cell cells"
rnaNonTNK <- colnames(seRNA)[grep(cNonTNK, colData(seRNA)$BioClassification)]
head(rnaNonTNK)
#[1] "CD34_32_R5:AAACCTGAGTATCGAA-1" "CD34_32_R5:AAACCTGAGTCGTTTG-1"
#[3] "CD34_32_R5:AAACCTGGTTCCACAA-1" "CD34_32_R5:AAACGGGAGCTTCGCG-1"
#[5] "CD34_32_R5:AAACGGGAGGGAGTAA-1" "CD34_32_R5:AAACGGGAGTTACGGG-1"
約束整合需要我們提供一個嵌套list潘明。這是一個由多個SimpleList
對象組成的SimpleList
, 每一組對應一個約束情況行剂。在案例中,我們有兩個組钳降,一個組稱之為TNK
,包括兩個平臺的T和NK細胞厚宰,另一個組為NonTNK
,包括兩個平臺的"Non-T cell Non-NK cell"細胞遂填。每個SimpleList
對象都包含兩個細胞ID的向量铲觉,一個是ATAC,一個是RNA.
groupList <- SimpleList(
TNK = SimpleList(
ATAC = projHeme2$cellNames[projHeme2$Clusters %in% clustTNK],
RNA = rnaTNK
),
NonTNK = SimpleList(
ATAC = projHeme2$cellNames[projHeme2$Clusters %in% clustNonTNK],
RNA = rnaNonTNK
)
)
我們將該列表傳遞給addGeneIntegrationMatrix()
函數(shù)的groupList
參數(shù)吓坚。注意撵幽,我們依舊沒有將結果添加到Arrow文件中 (addToArrow = FALSE
)。我們強烈建議礁击,在保存到Arrow文件前先徹底的檢查結果盐杂,看結果是否符合預期。在教程的下一節(jié)會介紹該操作客税。
projHeme2 <- addGeneIntegrationMatrix(
ArchRProj = projHeme2,
useMatrix = "GeneScoreMatrix",
matrixName = "GeneIntegrationMatrix",
reducedDims = "IterativeLSI",
seRNA = seRNA,
addToArrow = FALSE,
groupList = groupList,
groupRNA = "BioClassification",
nameCell = "predictedCell_Co",
nameGroup = "predictedGroup_Co",
nameScore = "predictedScore_Co"
)
8.1.3 約束整合和無約束整合對比
正如之前所提到的况褪,我們的scATAC-seq數(shù)據(jù)可以根據(jù)整合的scRNA-seq數(shù)據(jù)進行定義,并且有約束和無約束這兩種方式更耻。為了對兩者進行對比测垛,我們分別根據(jù)這兩種整合結果對scATAC-seq的數(shù)據(jù)進行上色。
首先秧均,使用ArchR內(nèi)置的paletteDiscrete()
函數(shù)生成調(diào)色板
pal <- paletteDiscrete(values = colData(seRNA)$BioClassification)
在ArchR中食侮,調(diào)色板本質(zhì)上一個命名向量号涯,每個十六進制編碼的顏色對應著一個名字。
pal
# 01_HSC 02_Early.Eryth 03_Late.Eryth 04_Early.Baso 05_CMP.LMPP
# "#D51F26" "#502A59" "#235D55" "#3D6E57" "#8D2B8B"
# 06_CLP.1 07_GMP 08_GMP.Neut 09_pDC 10_cDC
# "#DE6C3E" "#F9B712" "#D8CE42" "#8E9ACD" "#B774B1"
#11_CD14.Mono.1 12_CD14.Mono.2 13_CD16.Mono 14_Unk 15_CLP.2
# "#D69FC8" "#C7C8DE" "#8FD3D4" "#89C86E" "#CC9672"
# 16_Pre.B 17_B 18_Plasma 19_CD8.N 20_CD4.N1
# "#CF7E96" "#A27AA4" "#CD4F32" "#6B977E" "#518AA3"
# 21_CD4.N2 22_CD4.M 23_CD8.EM 24_CD8.CM 25_NK
# "#5A5297" "#0F707D" "#5E2E32" "#A95A3C" "#B28D5C"
# 26_Unk
# "#3D3D3D"
我們在scATAC-seq數(shù)據(jù)根據(jù)無約束整合得到的scRNA-seq細胞類型進行可視化
p1 <- plotEmbedding(
projHeme2,
colorBy = "cellColData",
name = "predictedGroup_Un",
pal = pal
)
p1
同樣锯七,我們也可以根據(jù)約束整合得到scATAC-seq對應的scRNA-seq的細胞類型進行可視化
p2 <- plotEmbedding(
projHeme2,
colorBy = "cellColData",
name = "predictedGroup_Co",
pal = pal
)
p2
這兩者的結果差異其實非常細微链快,主要是我們感興趣的細胞類型原本就存在明顯的差異。當然眉尸,仔細觀察還能發(fā)現(xiàn)其中的不同之處域蜗,尤其是T細胞(Clusters 17-22)
我們用plotPDF()
函數(shù)保存該圖矢量版本。
plotPDF(p1,p2, name = "Plot-UMAP-RNA-Integration.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)
我們現(xiàn)在可以用saveArchRProject()
函數(shù)保存我們的projHeme2
對象噪猾。
saveArchRProject(ArchRProj = projHeme2, outputDirectory = "Save-ProjHeme2", load = FALSE)
8.2 為每個scATAC-seq細胞增加擬scRNA-seq譜
既然我們對scATAC-seq和scRNA-seq整合的結果感到滿意霉祸,我們就能用addToArrow=TRUE
重新運行,在Arrow文件中添加相關聯(lián)的表達量矩陣數(shù)據(jù)袱蜡。根據(jù)之前所提到的丝蹭,我們傳入groupList
約束整合,在nameCell
坪蚁,nameGroup
和nameScore
中加入列名奔穿。這些元信息列都會被添加到cellColData
中。
這里敏晤,我們新建了一個projHeme3
贱田,用于后續(xù)教程。
#~5 minutes
projHeme3 <- addGeneIntegrationMatrix(
ArchRProj = projHeme2,
useMatrix = "GeneScoreMatrix",
matrixName = "GeneIntegrationMatrix",
reducedDims = "IterativeLSI",
seRNA = seRNA,
addToArrow = TRUE,
force= TRUE,
groupList = groupList,
groupRNA = "BioClassification",
nameCell = "predictedCell",
nameGroup = "predictedGroup",
nameScore = "predictedScore"
)
現(xiàn)在茵典,當我們使用getAvailableMatrices()
檢查哪些矩陣可用時湘换,我們會發(fā)現(xiàn)GeneIntegrationMatrix
已經(jīng)被添加到Arrow文件中
getAvailableMatrices(projHeme3)
# [1] "GeneIntegrationMatrix" "GeneScoreMatrix" "TileMatrix"
在新的GeneIntegrationMatrix
中,我們可以比較連接的基因表達量和根據(jù)基因得分推斷的基因表達量
我們需要先確保在項目中加入了填充權重值(impute weights)
projHeme3 <- addImputeWeights(projHeme3)
現(xiàn)在统阿,我們來生成一些UMAP圖彩倚,里面的基因表達量值來自于GeneIntegrationMatrix
markerGenes <- c(
"CD34", #Early Progenitor
"GATA1", #Erythroid
"PAX5", "MS4A1", #B-Cell Trajectory
"CD14", #Monocytes
"CD3D", "CD8A", "TBX21", "IL7R" #TCells
)
p1 <- plotEmbedding(
ArchRProj = projHeme3,
colorBy = "GeneIntegrationMatrix",
name = markerGenes,
continuousSet = "horizonExtra",
embedding = "UMAP",
imputeWeights = getImputeWeights(projHeme3)
)
以及一些相同UMAP圖,但是使用GeneScoreMatrix
里的基因得分值
p2 <- plotEmbedding(
ArchRProj = projHeme3,
colorBy = "GeneScoreMatrix",
continuousSet = "horizonExtra",
name = markerGenes,
embedding = "UMAP",
imputeWeights = getImputeWeights(projHeme3)
)
最后用cowplot
將這些標記基因繪制在一起
p1c <- lapply(p1, function(x){
x + guides(color = FALSE, fill = FALSE) +
theme_ArchR(baseSize = 6.5) +
theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
theme(
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank()
)
})
p2c <- lapply(p2, function(x){
x + guides(color = FALSE, fill = FALSE) +
theme_ArchR(baseSize = 6.5) +
theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
theme(
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank()
)
})
do.call(cowplot::plot_grid, c(list(ncol = 3), p1c))
do.call(cowplot::plot_grid, c(list(ncol = 3), p2c))
和預期的一樣扶平,兩個方法推測的基因表達量存在相似性帆离,但并不相同。
使用plotPDF()
函數(shù)保存可編輯的矢量版结澄。
plotPDF(plotList = p1,
name = "Plot-UMAP-Marker-Genes-RNA-W-Imputation.pdf",
ArchRProj = projHeme3,
addDOC = FALSE, width = 5, height = 5)
8.3 使用scRNA-seq信息標記scATAC-seq聚類
現(xiàn)在哥谷,我們確定了scATAC-seq和scRNA-seq數(shù)據(jù)間的對應關系,我們就可以使用scRNA-seq數(shù)據(jù)中細胞類型對我們的scATAC-seq聚類進行定義麻献。
首先们妥,我們會在scATAC-seq和整合分析得到predictedGroup
之間構建一個混合矩陣
cM <- confusionMatrix(projHeme3$Clusters, projHeme3$predictedGroup)
labelOld <- rownames(cM)
labelOld
# [1] "Cluster11" "Cluster2" "Cluster12" "Cluster1" "Cluster8" "Cluster4"
# [7] "Cluster9" "Cluster5" "Cluster7" "Cluster14" "Cluster3" "Cluster10"
# [13] "Cluster6" "Cluster13"
接著,對于每一個scATAC-seq聚類勉吻,我們根據(jù)predictedGroup
確定最能定義聚類的細胞類型监婶。
labelNew <- colnames(cM)[apply(cM, 1, which.max)]
labelNew
接著,我們需要對新的聚類標簽進行重命名,簡化分類系統(tǒng)惑惶。對于每一個scRNA-seq的聚類煮盼,我們會重新定義標簽,以便更好解釋带污。
remapClust <- c(
"01_HSC" = "Progenitor",
"02_Early.Eryth" = "Erythroid",
"03_Late.Eryth" = "Erythroid",
"04_Early.Baso" = "Basophil",
"05_CMP.LMPP" = "Progenitor",
"06_CLP.1" = "CLP",
"07_GMP" = "GMP",
"08_GMP.Neut" = "GMP",
"09_pDC" = "pDC",
"10_cDC" = "cDC",
"11_CD14.Mono.1" = "Mono",
"12_CD14.Mono.2" = "Mono",
"13_CD16.Mono" = "Mono",
"15_CLP.2" = "CLP",
"16_Pre.B" = "PreB",
"17_B" = "B",
"18_Plasma" = "Plasma",
"19_CD8.N" = "CD8.N",
"20_CD4.N1" = "CD4.N",
"21_CD4.N2" = "CD4.N",
"22_CD4.M" = "CD4.M",
"23_CD8.EM" = "CD8.EM",
"24_CD8.CM" = "CD8.CM",
"25_NK" = "NK"
)
remapClust <- remapClust[names(remapClust) %in% labelNew]
接著僵控,使用mapLables()
函數(shù)進行標簽轉(zhuǎn)換,將舊的標簽映射到新的標簽上鱼冀。
labelNew2 <- mapLabels(labelNew, oldLabels = names(remapClust), newLabels = remapClust)
labelNew2
# [1] "GMP" "B" "PreB" "CD4.N" "Mono"
# [6] "Erythroid" "Progenitor" "CD4.M" "pDC" "NK"
# [11] "CLP" "Mono"
合并labelsOld
和labelsNew2
报破,我們現(xiàn)在可以用mapLables()
函數(shù)在cellColData
里新建聚類標簽。
projHeme3$Clusters2 <- mapLabels(projHeme3$Clusters, newLabels = labelNew2, oldLabels = labelOld)
得到新的標簽后雷绢,我們繪制最新的UMAP展示聚類結果泛烙。
p1 <- plotEmbedding(projHeme3, colorBy = "cellColData", name = "Clusters2")
p1
如果被分析scATAC-seq數(shù)據(jù)對應的細胞系統(tǒng)也有scRNA-seq數(shù)據(jù)存在,那么這種分析范式將會特別有用翘紊。正如之前所說,這種scRNA-seq和scATAC-seq整合分析也為后續(xù)更加復雜的基因調(diào)控分析提供了出色的框架藐唠。
用plotPDF()
函數(shù)保存該圖矢量版本帆疟。
plotPDF(p1, name = "Plot-UMAP-Remap-Clusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)
使用saveArchRProject
保存我們最初的projHeme3.
saveArchRProject(ArchRProj = projHeme3, outputDirectory = "Save-ProjHeme3", load = FALSE)