作者,Evil Genius
生态位差异表达(niche-DE)分析,用于识别细胞类型特异性生态位相关基因,这些基因在特定空间生态位背景下在特定细胞类型中差异表达。
细胞中的特定基因表达程序可能是由其生态位中其他细胞的活动驱动的。
空间转录组学数据分析方法侧重于描述整个组织中细胞类型的整体基因表达变化,而不是由细胞-细胞相互作用驱动的局部基因表达变化。
没有一种可用的空间转录组学技术可以单独建立一个器官的全面分子图谱。虽然空间转录组学分析的数据输出具有稳定性,但如果没有正交转录组学、蛋白质组学或表观基因组学分析数据的多模式整合,是不完整的。需要多种模态来定义细胞的身份和功能。与目前的空间转录组学技术相比,scRNA-seq具有更高的灵敏度和特异性。对于非单细胞空间转录组学技术,如Visium、Slide-seq和GeoMx,与scRNA-seq数据的集成允许对数据进行反卷积,以确定细胞类型的组成以及它们在响应spot、head或ROI部分的病理生理或环境扰动时可能采取的不同状态。相比之下,单细胞空间转录组方法,如Xenium、MERFISH和CosMx,还不能提供全转录组特征。
细胞之间的局部相互作用,如基于信号通路或细胞外基质的化学和生物力学重塑的相互作用,是高度细胞类型特异性的。
细胞的生态位为其局部邻域的细胞类型组成
Niche-DE鉴定细胞类型特异性生态位相关基因,定义为与细胞类型特异性平均表达相比,在特定空间生态位背景下,特定细胞类型中的表达显著上调或下调的基因。
空间高变基因分析寻找与某些空间模式相关的表达模式的基因,而细胞-细胞相互作用分析寻找共定位的细胞类型。虽然前者没有明确考虑组织中存在的细胞类型的共定位,但后者是细胞类型及其位置的功能,而不考虑基因表达。相比之下,niche差异表达分析发现,在一种细胞类型(如巨噬细胞)中,基因的表达模式与其与另一种细胞类型(如肿瘤细胞)的共定位相关。这为两种细胞类型的共定位如何影响它们的基因表达状态提供了见解。
我们要读取自己的数据,进行nicheDE和nicheLR分析,需要准备的文件包括单细胞基础分析的rds、空间基础分析的rds,单细胞空间联合分析的矩阵。
完整示例脚本如下,有能力的话大家参考官网即可。
代码语言:javascript
复制library(nicheDE)
library(Seurat)
library(enrichR)
###scrna
sc = readRDS('/home/samples/DB/Spatial/data/FT/sc.rds')
sc_avg = CreateLibraryMatrixFromSeurat(liver_met_ref,assay = 'RNA')
sp = readRDS('/home/samples/DB/Spatial/data/FT/sp.rds')
sp = sp[colnames(sc_avg),]
###单细胞空间联合分析的结果
decon = as.matrix(read.csv('/home/samples/DB/Spatial/data/FT/deconv_mat.csv',header = T,row.names = 1,check.names = F))
NDE_obj = CreateNicheDEObjectFromSeurat(sp,'Spatial',sc_avg,decon,sigma = c(1,100,250))
####
NDE_obj = CalculateEffectiveNiche(NDE_obj)
NDE_obj = niche_DE(NDE_obj,num_cores = 4,outfile = "",C = 150, M = 10, gamma = 0.8,print = T, Int = T, batch = T,self_EN = F,G = 1)
DE_genes = get_niche_DE_genes(NDE_obj,'I',index='stromal',niche = 'tumor_epithelial',positive = T,alpha = 0.05)
###head(DE_genes)
###富集
fibro_tum_pos = get_niche_DE_genes(NDE_obj,'I',index='stromal',niche = 'tumor_epithelial',positive = T,alpha = 0.05)
#run pathway enrichment analysis
fibro_tum_processes = enrichr(fibro_tum_pos[,1],databases = 'Reactome_2016')
#get marker genes
fibro_tum_markers = niche_DE_markers(NDE_obj,index = 'stromal',niche1='tumor_epithelial',niche2='B_plasma',0.05)
data("niche_net_ligand_target_matrix")
data("ramilowski_ligand_receptor_list")
fibro_tumor_LR = niche_LR_spot(NDE_obj,ligand_cell = 'tumor_epithelial',receptor_cell = 'stromal',ligand_target_matrix = niche_net_ligand_target_matrix,lr_mat = ramilowski_ligand_receptor_list,K = 25,M = 50,alpha = 0.05,truncation_value = 3)
####head(fibro_tumor_LR)
生活很好,有你更好