首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >百万细胞的Seurat对象依据第一层次降维聚类分群拆分成为子集

百万细胞的Seurat对象依据第一层次降维聚类分群拆分成为子集

作者头像
生信菜鸟团
发布2024-12-30 12:35:33
发布2024-12-30 12:35:33
2840
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

前面在百万细胞舍我其谁(一晚上解决战斗) ,我们得到了张泽民老师的2024的文章:《Spatiotemporal single-cell analysis decodes cellular dynamics underlying different responses to immunotherapy in colorectal cancer》的百万单细胞数据集的第一层次降维聚类分群,并且保存完了r对象文件:

代码语言:javascript
复制
7.3G 12月 26 06:11 sce.all_int.rds

但其实完全没有必要,因为作者已经是给出来了每个单细胞的身份,我们为什么做降维聚类分群并且umap可视化,就是为了辅助我们给细胞一个身份。既然结果都给出来了,那么过程就不重要了。接下来就应该是每个单细胞亚群进行细致的探索。仍然是写一个r脚本,内容如下所示:

代码语言:javascript
复制
library(Seurat)
sce.all.int = readRDS('2-harmony/sce.all_int.rds')
sp='human'
tmp=sce.all.int@meta.data
colnames(sce.all.int@meta.data) 
table(sce.all.int$RNA_snn_res.0.8) 
Sys.time() 
id = unique(sce.all.int$MajorCellType)
lapply(id, function(x){
  sce=sce.all.int[,sce.all.int$MajorCellType %in% x]
  sce.all=CreateSeuratObject(
    counts = sce@assays$RNA$counts,
    meta.data = sce@meta.data
  )
  save(sce.all,file = paste0(x,'.sce.all.Rdata'))
  Sys.time()
})

假如这个脚本文件名字是(tmp.R ), 接下来就可以在shell里面提交它到后台运行:

代码语言:javascript
复制
nohup Rscript tmp.R & 

这个Seurat对象本来就是接近100万个细胞,但是我进行了简单的质量控制,过滤后剩下90万左右,前面的降维聚类分群过程就省略了,参考在百万细胞舍我其谁(一晚上解决战斗) ,现在我们直接看作者的结果 :

代码语言:javascript
复制
[1]  36027 975275
[1]  36027 895488

      B     Epi     ILC     Mye Stromal       T 
 161935   96179   48537   68250   40433  480154 

可以看到,一多半是t细胞然后四分之一左右是b细胞,其它的都占比很少很少。

代码语言:javascript
复制
 484M 12月 26 11:58 B.sce.all.Rdata
 296M 12月 26 11:47 Epi.sce.all.Rdata
 133M 12月 26 12:01 ILC.sce.all.Rdata
 236M 12月 26 12:00 Mye.sce.all.Rdata
 157M 12月 26 11:48 Stromal.sce.all.Rdata
 1.3G 12月 26 11:55 T.sce.all.Rdata

可以看到,因为t细胞数量最多,所以导出它这个子集耗时最长:

代码语言:javascript
复制
[1] "2024-12-26 11:48:34 CST"
[1] "2024-12-26 11:55:43 CST"
[1] "2024-12-26 11:58:40 CST"
[1] "2024-12-26 12:00:11 CST"
[1] "2024-12-26 12:01:11 CST"

接下来 同样的流程降维聚类分群

百万细胞舍我其谁(一晚上解决战斗) ,我们举例了,所有的r代码写完了,就提交到后台后等半天就ok了,全程都是代码自动化处理而已,不需要自己干啥子就可以拿到海量的结果!一切的难点,就在于不同的单细胞公共数据集的读取,只需要成为了r编程语言里面的Seurat对象,就可以全流程自动化处理~

那么,我们这个时候把前面的百万单细胞转录组数据集拆分成为了 第一层次是6个大的亚群:six major cell types: T cells, B cells, innate lymphoid cells (ILCs), myeloid cells, stromal cells, and epithelial:

每个具体的亚群,都可以是当做是一个独立的单细胞转录组项目,很简单的load进去就是一个r编程语言里面的Seurat对象,就可以全流程自动化处理~

代码语言:javascript
复制
load('../Stromal.sce.all.Rdata')

sce.all.int$celltype=sce.all.int$SubCellType
table(sce.all.int$celltype)   
Sys.time()

if("SubCellType" %in% colnames(sce.all.int@meta.data ) ){
  
  sel.clust = "SubCellType"
  sce.all.int <- SetIdent(sce.all.int, value = sel.clust)
  table(sce.all.int@active.ident) 
  
  dir.create('check-by-SubCellType')
  setwd('check-by-SubCellType')
  source('../scRNA_scripts/check-all-markers.R')
  setwd('../') 
  getwd()
  phe=sce.all.int@meta.data
  save(phe,file = 'phe.Rdata')
  pdf('SubCellType-vs-orig.ident.pdf',width = 10)
  gplots::balloonplot(table(sce.all.int$SubCellType,sce.all.int$orig.ident))
  dev.off()
}

Sys.time()

上面的r代码是需要自己保证准确无误的,然后写入到文件:step1-load-by-Seurat-v5.R,接下来就可以nohup的在后台运行它啦~

在我们的服务器的Linux的诊断运行:nohup Rscript step1-load-by-Seurat-v5.R &

可以看到,stromal确实是非常复杂,但是张泽民课题组处理的非常好!平滑肌细胞(Smooth Muscle Cells, SMCs)和周细胞(Pericytes),这个混合的单细胞亚群可以被称为“混合间充质细胞群”(Mixed Mesenchymal Cell Cluster)或“血管相关间充质细胞群”(Vascular-Associated Mesenchymal Cell Cluster),具体命名取决于细胞的来源和所处的组织微环境。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接下来 同样的流程降维聚类分群
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档