R语言:单细胞:挑选PC分群聚类

复制代码
> library(dplyr)
> library(patchwork)
> library(ggplot2)
> library(SingleR)
> library(randomcoloR)
> library(clustree)

#生成随机颜色

> randomColor <- function() {

paste0("#",paste0(sample(c(0:9, letters[1:6]), 6, replace = TRUE),collapse = ""))

}

生成100个随机颜色

> randomColors <- replicate(100,randomColor())

> seurat=readRDS("去批次后seurat.rds")#读取数据

> collist=c(ggsci::pal_nejm()(8))

> names(collist)=names(table(seurat$Type))

#热图可视化前20个PC

> pdf(file = "前20个PC热图.pdf",width =7.5,height = 9)

> DimHeatmap(seurat, dims = 1:20, cells = 1000, balanced = TRUE)

> dev.off()

##确定使用PC个数

> seurat <- JackStraw(seurat, num.replicate = 100)

> seurat <- ScoreJackStraw(seurat, dims = 1:20)

> pdf(file = "jackstrawplot.pdf",width =7.5,height = 5.5)

> JackStrawPlot(seurat, dims = 1:20)

> dev.off()

> pdf(file = "ElbowPlot.pdf",width =5,height = 4)

> ElbowPlot(seurat,ndims = 30)

> dev.off()

#选择PC数

> seuratPC=9

##对细胞聚类

> seurat=FindNeighbors(seurat, dims = 1:seuratPC, reduction = "harmony")

#挑选分辨率

> for (res in c(0.01,0.05,0.1,1,1.5,2,2.5,3,3.5,4)) {

seurat=FindClusters(seurat, graph.name = "RNA_snn", resolution = res, algorithm = 1)}

apply(seurat@meta.data[,grep("RNA_snn_res",colnames(seurat@meta.data))],2,table)

> p2_tree=clustree(seurat@meta.data, prefix = "RNA_snn_res.")

> pdf(file = "挑选分辨率.pdf",width =12,height =10)

> p2_tree

> dev.off()

> seurat=FindNeighbors(seurat, dims = 1:seuratPC, reduction = "harmony")

#选择分辨率进行降维

> px=1

> seurat <- FindClusters(seurat, resolution = px)

only.pos:只保留上调差异表达的基因

> seurat.markers <- FindAllMarkers(seurat, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)

> write.csv(seurat.markers,file = "每个聚类的marker基因.csv")

> head(seurat.markers)

#选择每个聚类前5各基因绘制热图

> top5seurat.markers <- seurat.markers %>%

group_by(cluster) %>%

top_n(n = 5, wt = avg_log2FC)

> col <- c(ggsci::pal_npg()(9),ggsci::pal_jco()(9),ggsci::pal_jama()(7),ggsci::pal_nejm()(8))

> pdf(file = "聚类热图.pdf",width =22,height = 16)

> DoHeatmap(seurat,features = top5seurat.markers$gene,

group.colors = col) +

ggsci::scale_colour_npg() +

scale_fill_gradient2(low = '#0099CC',mid = 'white',high = '#CC0033',

name = 'Z-score')

> dev.off()

将细胞在低维空间可视化UMAP/tSNE

> seurat <- RunUMAP(seurat, dims = 1:seuratPC, reduction = "harmony")

> seurat <- RunTSNE(seurat, dims = 1:seuratPC, reduction = "harmony")

可视化UMAP/tSNE3

> pdf(file = "聚类后UMAP.pdf",width =6.5,height = 5.5)

> DimPlot(seurat, reduction = "umap", label = T, label.size = 3.5,pt.size = 2)+theme_classic()+theme(panel.border = element_rect(fill=NA,color="black", size=0.5, linetype="solid"),legend.position = "right")

> dev.off()

> pdf(file = "聚类后TSEN.pdf",width =6.5,height = 5.5)

> DimPlot(seurat, reduction = "tsne", label = T, label.size = 3.5,pt.size = 2)+theme_classic()+theme(panel.border = element_rect(fill=NA,color="black", size=0.5, linetype="solid"),legend.position = "right")

> dev.off()

学习交流

相关推荐
jiang_changsheng2 天前
环境管理工具全景图与深度对比
java·c语言·开发语言·c++·python·r语言
JicasdC123asd2 天前
使用Faster R-CNN模型训练汽车品牌与型号检测数据集 改进C4结构 优化汽车识别系统 多类别检测 VOC格式
r语言·cnn·汽车
请你喝好果汁6412 天前
## 学习笔记:R 语言中比例字符串的数值转换,如GeneRatio中5/100的处理
笔记·学习·r语言
怦怦蓝2 天前
DB2深度解析:从架构原理到与R语言的集成实践
开发语言·架构·r语言·db2
新新学长搞科研2 天前
【CCF主办 | 高认可度会议】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)
大数据·开发语言·网络·人工智能·算法·r语言·中国计算机学会
Piar1231sdafa3 天前
战斗车辆状态识别与分类 --- 基于Mask R-CNN和RegNet的模型实现
r语言·cnn
陳土3 天前
R语言Offier包源码—1:read_docx()
r语言
善木科研喵3 天前
IF5.9分,α-硫辛酸如何缓解化疗神经毒性?网络毒理学结合网络药理学双重锁定关键通路!
数据库·数据分析·r语言·sci·生信分析·医学科研
Piar1231sdafa4 天前
椅子目标检测新突破:Cascade R-CNN模型详解与性能优化_1
目标检测·r语言·cnn
Loacnasfhia94 天前
基于Mask R-CNN与RegNetX的钢水罐及未定义物体目标检测系统研究_1
目标检测·r语言·cnn