专栏名称: 生信技能树
生物信息学学习资料分析,常见数据格式及公共数据库资料分享。常见分析软件及流程,基因检测及癌症相关动态。
目录
相关文章推荐
四川日报  ·  孙颖莎,冠军! ·  14 小时前  
四川日报  ·  张兰名下公司均已吊销或注销 ·  昨天  
四川发布  ·  全国首个!涉高速公路管理 ·  昨天  
四川日报  ·  突发!美国一架飞机失联 ·  2 天前  
掌上春城  ·  云南9家公司拟上市 ·  3 天前  
51好读  ›  专栏  ›  生信技能树

上皮细胞里面混入了淋巴系和髓系免疫细胞呢

生信技能树  · 公众号  ·  · 2024-09-11 11:02

主要观点总结

本文介绍了对胃癌单细胞数据集GSE163558的分析过程,包括降维聚类分群、过滤基因和过滤细胞的区别,以及识别单细胞亚群的方法。作者通过对上皮细胞进行细分亚群,并区分了髓系免疫细胞(包括巨噬细胞和中性粒细胞)以及B细胞和NK细胞等。文章还提到了使用harmony算法去除个体差异的注意事项,以及如何确定单细胞亚群的命名和功能。

关键观点总结

关键观点1: 单细胞数据集GSE163558的分析

介绍了对胃癌单细胞数据集GSE163558的解读,包括降维聚类分群的结果和对应的文献中的单细胞亚群及其基因和细胞数量。

关键观点2: 单细胞亚群的区分

作者通过代码演示了如何提取上皮细胞,进行新的降维聚类分群,并观察到某些亚群如淋巴系和髓系免疫细胞的干扰。

关键观点3: 单细胞亚群的命名和确定

通过查看每个细分亚群的top基因和功能,确定了这些单细胞亚群的名字。作者还提供了手动命名单细胞亚群的代码。

关键观点4: 功能注释和图表生成

作者通过一系列代码进行了功能注释,包括GO和KEGG注释,并生成了很多图表来展示结果。


正文

针对这个这个胃癌单细胞数据集GSE163558,我做了解读,详见 : 单细胞转录组降维聚类分群过滤基因和过滤细胞的区别 。而且前面已经是完成了降维聚类分群,在 学习单细胞亚群命名的层次结构 演示了一个降维聚类分群结果,就有了  2-harmony/sce.all_int.rds 文件,以及对应的 phe.Rdata 注释信息。

在文献里面的单细胞亚群以及其对应的基因和细胞数量分别是:

print(cell_groups)
          Group Count               Genes
1    Epithelial  1743 EPCAM, KRT19, CLDN4
2       Stromal  1288 PECAM1, CLO1A2, VWF
3 Proliferative  1089  MKI67, STMN1, PCNA
4             T 24448     CD3D, CD3E, CD2
5             B  7708 CD79A, IGHG1, MS4A1
6            NK  1173  KLRD1, GNLY, KLRF1
7       Myeloid  5519  CSF1R, CSF3R, CD68

也就是说, 我把髓系免疫细胞区分成为巨噬细胞和中性粒细胞,还有mast细胞,而且把b细胞是可以区分成为浆细胞和普通b细胞。跟文章不一样的哦,所以我得到如下所示的亚群:

可以看到每个单细胞亚群都是泾渭分明的,而且有一个独立的细胞增殖状态的亚群它是多种不同单细胞亚群的混合物。

提取上皮细胞进行细分亚群

我在第一层次降维聚类分群的工作文件夹里面新建了  sub-cluster/sub-epi-inferCNV 这样的文件夹结构,然后重新开始新的r项目,所以需要如下所示的代码提取上皮细胞:

sce.all.int = readRDS('../../2-harmony/sce.all_int.rds')
colnames([email protected]
load('../../phe.Rdata')
table(phe$celltype)  
sce.all=sce.all.int[,phe$celltype %in% c('epi' ) ]
sce.all=CreateSeuratObject(
  counts = sce.all@assays$RNA$counts,
  meta.data = [email protected]
)

就读取上面的两层的文件夹里面的   2-harmony/sce.all_int.rds 文件,以及对应的 phe.Rdata 注释信息。然后仍然是默认的降维聚类分群而已:

sp='human'
###### step2:QC质控 ######
dir.create("./1-QC")
setwd("./1-QC")
# 如果过滤的太狠,就需要去修改这个过滤代码
source('../../../scRNA_scripts/qc.R')
sce.all.filt = basic_qc(sce.all)
print(dim(sce.all))
print(dim(sce.all.filt))
setwd('../')
getwd()
 
###### step3: harmony整合多个单细胞样品 ######

if(T){
  dir.create("2-harmony")
  getwd()
  setwd("2-harmony")
  source('../../../scRNA_scripts/harmony.R')
  # 默认 ScaleData 没有添加"nCount_RNA", "nFeature_RNA"
  # 默认的
  sce.all.int = run_harmony(sce.all.filt)
  setwd('../')
  
}

sce.all.tmp 1:15
                       reduction = "pca")
DimPlot(sce.all.int,group.by = 'orig.ident') + 
  DimPlot(sce.all.tmp,group.by = 'orig.ident')


###### step4:  看标记基因库 ######
# 原则上分辨率是需要自己肉眼判断,取决于个人经验
# 为了省力,我们直接看  0.1 
dir.create('check-by-0.1')
setwd('check-by-0.1')
sel.clust = "RNA_snn_res.0.1"
sce.all.int table([email protected]

source('../../../scRNA_scripts/check-all-markers.R')
setwd('../'
getwd()

这个时候很明显的可以看到上皮细胞的降维聚类分群居然是出现了淋巴系和髓系免疫细胞的干扰哦,如下所示:

可以看到,cluster4是t淋巴细胞,而cluster6应该是髓系免疫细胞(可能是巨噬细胞或者单核细胞,中性粒细胞)。

值得注意是,这个是上皮细胞的子集,我仍然是使用了harmony算法去除个体差异,如果是要考虑肿瘤病人间的异质性就不推荐使用harmony哦!

进一步确定这些是淋巴系和髓系免疫细胞而不是上皮细胞

如果是从上面的标记基因来看,确实是全部的细分亚群都是有上皮细胞特异性的基因的,但是如果看每个亚群的top基因和功能,就可以确定这些是淋巴系和髓系免疫细胞而不是上皮细胞啦。

首先看看每个细分亚群的top10的基因,如下所示:

cluster0:GABRP,RARRES3,TRIM29,CD55,ITGB4,AL121761.2
 cluster1:TOP2A,CCNB1,ROMO1,OLFM4,GSTP1,TPX2
 cluster2:HIST1H2BG,AL137077.2,CSKMT,PCK1,LINC00668,SOCS1
 cluster3:MT1F,MT1M,METTL7A,CHGA,CPE,PTPRN2
 cluster4:CD2,CD52,CD3D,CCL5,HCST,CD3E
 cluster5:NPPB,TNF,CYP2E1,C6orf222,AC092069.1,LY6K
 cluster6:FCGR3B,PLEK,G0S2,OSM,CSF3R,BCL2A1 

可以看到,cluster4是t淋巴细胞,而cluster6应该是中性粒细胞这样的髓系免疫细胞。基本上就可以手动给出来了这些单细胞亚群名字啦;

# 如果是手动给各个单细胞亚群命名
if(T){
  sce.all.int
  celltype=data.frame(ClusterID=0:6 ,
                      celltype= 0:6  ) 
  #定义细胞亚群        
  celltype[celltype$ClusterID %in% c( 4  ),2]='Tcells'      
  celltype[celltype$ClusterID %in% c( 6 ),2]='myeloids'  
  celltype[celltype$ClusterID %in% c( 3 ),2]='normal'  
  
  celltype[celltype$ClusterID %in% c( 0 ),2]='epi-1'
  celltype[celltype$ClusterID %in% c( 1 ),2]='epi-2' 
  celltype[celltype$ClusterID %in% c( 2 ),2]='epi-3'    
  celltype[celltype$ClusterID %in% c( 5 ),2]='epi-4'    
   
  head(celltype)
  celltype
  table(celltype$celltype)
  [email protected]$celltype = "NA"
  
  for(i in 1:nrow(celltype)){
    [email protected][which([email protected]$RNA_snn_res.0.1 == celltype$ClusterID[i]),'celltype'






请到「今天看啥」查看全文


推荐文章
四川日报  ·  孙颖莎,冠军!
14 小时前
四川日报  ·  张兰名下公司均已吊销或注销
昨天
四川发布  ·  全国首个!涉高速公路管理
昨天
四川日报  ·  突发!美国一架飞机失联
2 天前
掌上春城  ·  云南9家公司拟上市
3 天前