专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物制品圈  ·  超10亿美元!信达生物与罗氏达成新一代DLL ... ·  昨天  
BioArt  ·  Cell | 胶质样味觉细胞介导甜味适应的机制 ·  13 小时前  
BioArt  ·  Nat Chem Biol | ... ·  昨天  
BioArt  ·  Nat Metab | ... ·  昨天  
51好读  ›  专栏  ›  生信菜鸟团

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

生信菜鸟团  · 公众号  · 生物  · 2024-12-29 15:33

正文

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

7.3G 12月 26 06:11 sce.all_int.rds

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

library(Seurat)
sce.all.int = readRDS('2-harmony/sce.all_int.rds')
sp='human'
[email protected]
colnames([email protected]
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 = [email protected]
  )
  save(sce.all,file = paste0(x,'.sce.all.Rdata'))
  Sys.time()
})

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

nohup Rscript tmp.R & 

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

[1]  36027 975275
[1]  36027 895488

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

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

 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细胞数量最多,所以导出它这个子集耗时最长:

[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对象,就可以全流程自动化处理~

load('../Stromal.sce.all.Rdata')

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

if("SubCellType" %in% colnames([email protected] ) ){
  
  sel.clust = "SubCellType"
  sce.all.int   table([email protected]
  
  dir.create('check-by-SubCellType')
  setwd('check-by-SubCellType')
  source('../scRNA_scripts/check-all-markers.R')
  setwd('../'
  getwd()
  [email protected]
  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),具体命名取决于细胞的来源和所处的组织微环境。

 

这些知识点可以看:

你距离cns文章就差一个服务器账号啦

还等什么呢, 赶快扫码吧!