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()

学习交流

相关推荐
有梦想的Frank博士20 小时前
R语言*号标识显著性差异判断组间差异是否具有统计意义
开发语言·信息可视化·r语言
逆风远航4 天前
R语言贝叶斯:INLA下的贝叶斯回归、生存分析、随机游走、广义可加模型、极端数据的贝叶斯分析
开发语言·r语言·贝叶斯·生态学·结构方程·环境科学·混合效应
Faxxtty4 天前
【R语言】解决package ‘qvalue’ is not available (for R version 3.6.1)
开发语言·r语言
Cachel wood5 天前
Vue前端框架:Vue前端项目文件目录
java·前端·vue.js·python·算法·r语言·前端框架
邢博士谈科教5 天前
OmicsTools软件和R语言分析环境安装配置答疑汇总最新版
r语言
纪伊路上盛名在6 天前
vscode中提升效率的插件扩展——待更新
linux·服务器·ide·vscode·python·r语言·编辑器
拓端研究室TRL6 天前
银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等...
python·决策树·机器学习·数据挖掘·r语言
在在进步6 天前
R数据结构&向量基础
数据结构·r语言
亚图跨际7 天前
MATLAB生物细胞瞬态滞后随机建模定量分析
单细胞·定量分析·随机动态行为·化学主方程·确定性常微分方程·随机性偏微分方程·收敛速度
琼火hu8 天前
R语言笔记(五):Apply函数
开发语言·笔记·r语言·apply