十多万个细胞数量就顶不住了吗

最近有小伙伴使用我们的共享服务器(2024的共享服务器交个朋友福利价仍然是800)后“抱怨”到居然读取一个单细胞转录组公共数据集,就十多万个细胞数量而已,就顶不住了,如下所示的文件 :

 2.1M 8 6 21:15 GSE222318_Cell_metadata.csv.gz
 246M 8 6 21:16 GSE222318_Raw_gene_counts_matrix.csv.gz

我看了看他的代码,是很简单的读取表达量矩阵文件和细胞的表型信息,然后成为一个数据框(行列式 ):

# 参考:https://mp.weixin.qq.com/s/tw7lygmGDAbpzMTx57VvFw
ct=data.table::fread('GSE222318_Raw_gene_counts_matrix.csv.gz',
 data.table = F) 
ct[1:4,1:4]
rownames(ct)=ct$V1
ct=ct[,-1]
phe=data.table::fread('GSE222318_Cell_metadata.csv.gz',data.table = F) 
rownames(phe)=phe[,1]
phe=phe[,-1]
identical(colnames(ct),rownames(phe))
sce.all=CreateSeuratObject(counts = ct,meta.data = phe)

大家可以试试看,在自己的电脑复现这个流程,同样的代码复制粘贴即可。然后就发现确实是会报错,但是这个问题其实是因为数据框(行列式 )本身的问题,只需要做下面的修改即可,适用于单细胞转录组这样的特殊性数据格式,稀疏矩阵 :

ct <- as.matrix(ct, type="dgCMatrix")

构建好Seurat这样的单细胞对象后,在R里面然后就可以愉快的降维聚类分群啦!如下所示的初步结果:

降维聚类分群

值得注意的是上面的结果仅仅是练习而已哈,并不是最终的分群和命名,比如上面的SMC其实应该是包含了成纤维的,以文献为准:《The activator protein-1 complex governs a vascular degenerative transcriptional programme in smooth muscle cells to trigger aortic dissection and rupture》

最终的分群和命名

学徒作业

读取上面的 246M 的 GSE222318_Raw_gene_counts_matrix.csv.gz 表达量矩阵文件做第一层次降维聚类分群后,去除里面的免疫细胞后,然后模仿文献里面的降维聚类分群,如下所示:

去除里面的免疫细胞

这些就是我们传统说的基质细胞,主要包括以下几种类型:

  1. 成纤维细胞(Fibroblasts):在肿瘤微环境中,成纤维细胞可以分化为癌症相关成纤维细胞(Cancer-Associated Fibroblasts, CAFs),它们通过分泌多种细胞因子和细胞外基质(ECM)成分,促进肿瘤的发展和转移。
  2. 内皮细胞(Endothelial Cells):内皮细胞在肿瘤血管生成中起到关键作用,它们可以形成新的血管,为肿瘤提供氧气和营养。
  3. 平滑肌细胞(Smooth Muscle Cells, SMCs):在某些情况下,平滑肌细胞也存在于肿瘤微环境中,尤其是在血管结构中。
  4. 周细胞(Pericytes):周细胞是血管壁的一部分,它们与内皮细胞相互作用,参与血管的稳定和成熟。

其中内皮细胞主要是区分成为了淋巴内皮和血管内皮, 其中血管可以细分为动脉静脉和毛细血管:

  • lymphatic ECs (LECs; CCL21, PROX1).
  • arteries (HEY1, IGFBP3), capillaries (CD36, CA4), veins (ACKR1)

可以看到文章里面确实是区分了两个内皮细胞,就是淋巴内皮和血管内皮。

然后文章里面的SMC和成纤维的异质性有点太高了,每个都可以细分很多群,大家试试看能不能复现。

最后,文章里面有一个特殊的Mesenchymal 亚群,大家看看能不能复现出来,另外还需要解释一下周细胞(Pericytes)的缺失问题!

Comments are closed.