刷到了最近(Adv. Sci. 2023,)发表的一个单细胞转录组数据挖掘文章《 IL-1𝜷 Is an Androgen-Responsive Target in Macrophages for Immunotherapy of Prostate Cancer 》,文章是重新分析了公共数据集 GSE137829,该数据集给出来了表达量矩阵如下所示:
GSM4089151_P1_gene_cell_exprs_table.txt.gz
GSM4089152_P2_gene_cell_exprs_table.txt.gz
GSM4089153_P3_gene_cell_exprs_table.txt.gz
GSM4089154_P4_gene_cell_exprs_table.txt.gz
GSM4711414_P5_gene_cell_exprs_table.txt.gz
GSM4711415_P6_gene_cell_exprs_table.txt.gz
所以很容易读取它们,后进行降维聚类分群,但是文章里面的分群让我第一眼看起来很诧异:
文章里面的分群
这个分群其实并没有什么逻辑层面的硬伤,我在自己的电脑里面公共数据集 GSE137829,因为它是癌症单细胞转录组,我组织学徒分析目前全部的700多个癌症单细胞数据集了,所以很容易就看到了学徒的结果:
学徒的结果
学徒的结果里面蛮奇怪的地方是SMC不应该是两个群距离那么远,而且没有b淋巴细胞了,不符合实际情况。
所以我打开看了看代码,原来是因为第一层次降维聚类分群的时候选择了0.1的分辨率然后去命名,而不是我们常规的0.8,因为选择0.1这样的低分辨率得到的亚群少一点,这样的话手动命名并不会那么累。。。
如果我们提高分辨率,很容易看到,b淋巴细胞和浆细胞就都出来了。。。
提高分辨率
当然了, 这样的话代码就稍微复杂一点,但也可以简化,因为绝大部分细胞亚群都是上皮细胞。
celltype=data.frame(ClusterID=0:23 ,
celltype= 'epi')
#定义细胞亚群
celltype[celltype$ClusterID %in% c( 1,23),2]='Tcells'
celltype[celltype$ClusterID %in% c( 19 ),2]='plasma'
celltype[celltype$ClusterID %in% c( 17 ),2]='Bcells'
celltype[celltype$ClusterID %in% c( 12,15 ),2]='Myeloids'
celltype[celltype$ClusterID %in% c( 7 ),2]='endo'
celltype[celltype$ClusterID %in% c( 4 ),2]='fibro'
celltype[celltype$ClusterID %in% c( 6 ),2]='SMC'
celltype[celltype$ClusterID %in% c( 10 ),2]='mast'
虽然说,根据生物学背景,很容易去给定这些单细胞亚群名字,但是我还是没办法解释为什么上皮细胞这么散乱,需要再次检测是否是具有病人异质性。
我首先看了看,两个分辨率情况下, 我们的单细胞亚群命名的一致性,基本上就是前面提到的淋巴细胞和浆细胞问题,然后就没有什么更多的冲突了。
单细胞亚群命名的一致性
我也检测了这些上皮细胞看看它们是否具有病人异质性,因为我前面使用了harmony进行多个样品整合,所以才能造成多个病人的正常细胞(成纤维,内皮细胞,免疫细胞)能很好的混合在一起,但是副作用就是多个病人的本来就应该是千差万别的肿瘤上皮细胞也被迫糅合在一起啦。
是否具有病人异质性
我的实战经验是,第一层次降维聚类分群最好是分辨率调大一点,然后根据我们给大家的基因列表背后的生物学意义去给它们亚群进行生物学命名。
然后针对不同的单细胞亚群进行细分即可,这样的单细胞转录组数据分析的标准降维聚类分群,并且进行生物学注释后的结果。可以参考前面的例子:人人都能学会的单细胞聚类分群注释 ,我们演示了第一层次的分群。如果你对单细胞数据分析还没有基础认知,可以看基础10讲: