具体数据Rdata数据可通过下方网盘链接获取:
链接: https://pan.baidu.com/s/1a1X-AsA1aVUvZIL0orD-rQ?pwd=vw63 提取码: vw63
1. PCA降维代码
merged_rna <- RunPCA(merged_rna,
npcs = 50, #纬度选择
seed.use = 42,
verbose = FALSE)
注意我们的输入数据是scale.data,因为使用scale.data才能避免某个原始高表达基因在后续降维聚类中占据主导,具体原理可以看往期推送“单细胞必须理解的三步走”。
之前运行完毕RunPCA以及IntegrateLayers后的降维结果储存在reductions中。
2. 选择纬度策略
生物信息学实践中需要平衡:
推荐采用以下方法确定最佳PC数:方法一:ElbowPlot (最常用)
ElbowPlot(demo_obj, ndims = 30)
结果解读:
方法二:JackStrawPlot()
# 执行JackStraw分析
merged_rna <- JackStraw(merged_rna, num.replicate = 100,dims = 1:20) #可以更多,只是示例;这一步运行时间较长
merged_rna <- ScoreJackStraw(merged_rna, dims = 1:20)
# 可视化分析结果
JackStrawPlot(
merged_rna,
dims = 1:20, # 检验前20个主成分
reduction = "pca", # 指定降维方法
xmax = 1, # p值上限
ymax = 1 # 统计量上限
)
DimHeatmap(merged_rna,
dims = 15:20, # 查看PC15-20
cells = 500, # 显示500个细胞
balanced = TRUE) # 平衡正负负荷基因
可以看到,PC1的正向调节基因与免疫明显相关,在后面UMAP图可视化的时候应该可以看出PC1区分出了免疫相关细胞和其他细胞。merged_rna <- merged_rna %>%
FindNeighbors(reduction = "integrated.cca", dims = 1:20) %>%
RunUMAP(reduction = "integrated.cca", dims = 1:20) %>%
RunTSNE(reduction = "integrated.cca", dims = 1:20) %>%
identity() #这里的dims 的意思是从 reduction 参数指定的降维结果(如 "integrated.cca")中选择哪些维度(这里是1:20)作为 RunUMAP 的输入。
运行之前可以看到reduction中只有pca和integrated.cca两个。
运行完毕之后可以看到多了刚刚使用“integrated.cca”跑出来的umap和tsne两个reduction。
RunUMAP重要参数(一般默认即可):
- 小值(如5-15):强调局部结构,可能导致簇内细节更清晰,但全局结构(如簇之间的相对位置)可能丢失。
- 大值(如50-200):强调全局结构,簇之间的分隔更明显,但可能牺牲局部细节。
- 控制嵌入点压缩的紧密程度。较小的值使嵌入更关注局部结构(更紧密),较大的值使点分布更均匀、分散,更凸显全局结构。
- 范围: 通常在 0.001 到0.5 之间。默认值: 0.3,一般这个大小即可。