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

学习交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值