欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

解读单个细胞RunPCA分析结果与DimHeatmap应用指南

最编程 2024-07-23 16:38:39
...

单细胞绘图系列:

  • Seurat绘图函数总结
  • 使用ggplot2优化Seurat绘图
  • scRNAseq灵活的点图绘制:FlexDotPlot
  • 富集分析结果雷达图
  • DoHeatmap的优化+ComplexHeatmap绘制带特定基因的单细胞热图
  • 不同单细胞群之间的相关性分析

在读文献Single-cell RNA sequencing reveals distinct tumor microenvironmental patterns in lung adenocarcinoma的时候,看到这样的热图

Supplemental Figure 3G: Heatmap of the top 30 genes positively or negatively correlated with principal component 1 which were defined as the “alveolar/club-like” and “undifferentiated” gene signature, respectively, shown for the top 500 cells with the highest or lowest PCA scores, respectively.
# 代码:
DimHeatmap(epi_pca, dims = 1, cells = 1000, balanced = T, fast = F, nfeatures = 60) +
  scale_fill_viridis()

这个热图的行是top 30 genes positively or negatively correlated with principal component 1,列是 top 500 cells with the highest or lowest PCA scores。那行的这些基因和列的这些细胞是怎么得到的呢?

1. RunPCA()结果解读

我们在做单细胞数据分析,进行RunPCA()的时候,会返回如下消息:

pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))
# PC_ 1 
# Positive:  CST3, TYROBP, LST1, AIF1, FTL, FTH1, LYZ, FCN1, S100A9, TYMP 
#      FCER1G, CFD, LGALS1, S100A8, CTSS, LGALS2, SERPINA1, IFITM3, SPI1, CFP 
#      PSAP, IFI30, SAT1, COTL1, S100A11, NPC2, GRN, LGALS3, GSTP1, PYCARD 
# Negative:  MALAT1, LTB, IL32, IL7R, CD2, B2M, ACAP1, CD27, STK17A, CTSW 
#      CD247, GIMAP5, AQP3, CCL5, SELL, TRAF3IP3, GZMA, MAL, CST7, ITM2A 
#      MYC, GIMAP7, HOPX, BEX2, LDLRAP1, GZMK, ETS1, ZAP70, TNFAIP8, RIC3 
# PC_ 2 
# Positive:  CD79A, MS4A1, TCL1A, HLA-DQA1, HLA-DQB1, HLA-DRA, LINC00926, CD79B, HLA-DRB1, CD74 
#      HLA-DMA, HLA-DPB1, HLA-DQA2, CD37, HLA-DRB5, HLA-DMB, HLA-DPA1, FCRLA, HVCN1, LTB 
#      BLNK, P2RX5, IGLL5, IRF8, SWAP70, ARHGAP24, FCGR2B, SMIM14, PPP1R14A, C16orf74 
# Negative:  NKG7, PRF1, CST7, GZMB, GZMA, FGFBP2, CTSW, GNLY, B2M, SPON2 
#      CCL4, GZMH, FCGR3A, CCL5, CD247, XCL2, CLIC3, AKR1C3, SRGN, HOPX 
#      TTC38, APMAP, CTSC, S100A4, IGFBP7, ANXA1, ID2, IL32, XCL1, RHOC 
# PC_ 3 
# Positive:  HLA-DQA1, CD79A, CD79B, HLA-DQB1, HLA-DPB1, HLA-DPA1, CD74, MS4A1, HLA-DRB1, HLA-DRA 
#      HLA-DRB5, HLA-DQA2, TCL1A, LINC00926, HLA-DMB, HLA-DMA, CD37, HVCN1, FCRLA, IRF8 
#      PLAC8, BLNK, MALAT1, SMIM14, PLD4, LAT2, IGLL5, P2RX5, SWAP70, FCGR2B 
# Negative:  PPBP, PF4, SDPR, SPARC, GNG11, NRGN, GP9, RGS18, TUBB1, CLU 
#      HIST1H2AC, AP001189.4, ITGA2B, CD9, TMEM40, PTCRA, CA2, ACRBP, MMD, TREML1 
#      NGFRAP1, F13A1, SEPT5, RUFY1, TSC22D1, MPP1, CMTM5, RP11-367G6.3, MYL9, GP1BA 
# PC_ 4 
# Positive:  HLA-DQA1, CD79B, CD79A, MS4A1, HLA-DQB1, CD74, HLA-DPB1, HIST1H2AC, PF4, TCL1A 
#      SDPR, HLA-DPA1, HLA-DRB1, HLA-DQA2, HLA-DRA, PPBP, LINC00926, GNG11, HLA-DRB5, SPARC 
#      GP9, AP001189.4, CA2, PTCRA, CD9, NRGN, RGS18, GZMB, CLU, TUBB1 
# Negative:  VIM, IL7R, S100A6, IL32, S100A8, S100A4, GIMAP7, S100A10, S100A9, MAL 
#      AQP3, CD2, CD14, FYB, LGALS2, GIMAP4, ANXA1, CD27, FCN1, RBP7 
#      LYZ, S100A11, GIMAP5, MS4A6A, S100A12, FOLR3, TRABD2A, AIF1, IL8, IFI6 
# PC_ 5 
# Positive:  GZMB, NKG7, S100A8, FGFBP2, GNLY, CCL4, CST7, PRF1, GZMA, SPON2 
#      GZMH, S100A9, LGALS2, CCL3, CTSW, XCL2, CD14, CLIC3, S100A12, CCL5 
#      RBP7, MS4A6A, GSTP1, FOLR3, IGFBP7, TYROBP, TTC38, AKR1C3, XCL1, HOPX 
# Negative:  LTB, IL7R, CKB, VIM, MS4A7, AQP3, CYTIP, RP11-290F20.3, SIGLEC10, HMOX1 
#      PTGES3, LILRB2, MAL, CD27, HN1, CD2, GDI2, ANXA5, CORO1B, TUBA1B 
#      FAM110A, ATP1A1, TRADD, PPA1, CCDC109B, ABRACL, CTD-2006K23.1, WARS, VMO1, FYB 

Positive和Negative就是PC轴的正负映射关系,正值为Positive,负值为Negative。返回的是正值和负值绝对值最大的top30。可以理解为对所有细胞区分度最大的基因。

上面那张热图用的60个基因就是PC_ 1 Positive和Negative的30个基因。

在运行完RunPCA()之后,得到2个分解矩阵。以2000个细胞*20000个基因的矩阵为例,会得到一个2000 X 50 的权重矩阵,另一个是50 X 20000 的系数矩阵
刚刚返回的信息可以采用如下方法调取:

View(pbmc@reductions[["pca"]]@feature.loadings)
系数矩阵

这部分结果行是高变基因,列是50个PC,展示的是每个基因对应在PC轴上的映射。运行RunPCA()时返回的基因就是每个PC(列)上数值最大(Positive)和最小(Negative)的top30基因。

值得注意的是,每一个PC 轴所对应的基因具有强相关性,代表了独特的生物学功能,所以在很多研究中,将每个PC 轴对应强相关的基因作为一个factor,研究细胞在生物学功能上的动态变化。也就是开头那张图。

除了上面那个矩阵以外,PCA的结果还包含如下矩阵

View(pbmc@reductions[["pca"]]@cell.embeddings)
权重矩阵

这部分结果行是所有的细胞,列是50个PC。矩阵中的值是每个细胞在低维PCA轴上的映射坐标。(也就是我们使用PC_1和PC_2画PCA图时候的细胞坐标)细胞在PC 轴上的分布代表主要的变化方向(所以有的软件借助PCA 降维
来进行轨迹推断)。

DimPlot(pbmc,reduction = 'pca')

上图的列的1000个细胞,就是取了PC_1这个轴上,所有基因投射值最大的500个最小的500个细胞

这部分的结果是可以直接使用FeaturePlot()进行可视化的

p1=FeaturePlot(pbmc,features = "PC_1", order = T)
p2=FeaturePlot(pbmc,features = "PC_2", order = T)
p1|p2

结合每个PC 轴对应的生物学功能,还可以得到类似下面的图谱

2. DimHeatmap的用法

最前面那张图是使用DimHeatmap()函数画的,使用pbmc数据集来画一下。

library(Seurat)
library(viridis)
pbmc <- readRDS("pbmc.rds")
DimHeatmap(object = pbmc,dims = 1,cells = 1000,balanced = T, fast = F,nfeatures = 30)+scale_fill_viridis()
不设置cells = 1000,热图会不对称性,不设置fast = F,无法使用scale_fill_viridis()更改颜色

PCA原理解读和绘制方法
10X单细胞10X空间转录组降维分析之PCA轴的秘密