前言
这一块涉及到细胞通讯的内容,那么目前定义细胞通讯利用的是细胞配体,受体蛋白互作来定义的,这里盗取一张示意图(图片来自百度)
联想到单细胞数据来看,单细胞转录组数据衡量的是每一个细胞中各个基因的表达量,那么如何衡量两种 cell type 之间有细胞通讯呢?那么主要是看两种 cell type 之间编码配受体蛋白的基因表达量,即 A 类型的细胞编码配体蛋白的基因表达量高,B 类型的细胞编码受体蛋白的基因表达量高,那么A,B类型的细胞存在着细胞通讯(cellphoneDB的基本原理)
文章
那么今年发表在cell上的一篇文章用了另外一种方法:
《Single-Cell Analysis of Crohn’s Disease Lesions Identifies a Pathogenic Cellular Module Associated with Resistance to Anti-TNF Therapy》
首先,作者计算某种细胞类型中编码受体蛋白的基因UMI(相当于表达量),然后在该细胞类型中做一个标准化:
其中:
- T 代表细胞亚型
- URj 代表该细胞亚型中,第 j 个细胞受体蛋白的 UMI
- i 代表第 i 个基因
接着在配体蛋白中也做一个类似的标准化:
其中:
- S 代表细胞亚型
- ULj 代表该细胞亚型中,第 j 个细胞受体蛋白的 UMI
- i 代表第 i 个基因
接下来利用它们之间的乘积来衡量细胞通讯之间的强弱:
本文的源代码公布在Github上,有兴趣的童靴可以一起来学习:https://github.com/effiken/martin_et_al_cell_2019
在传送门
obs_s_ligands=pmax(rowSums(u_ligands_clusters[,c(mask_pat2_clusters_ligands,mask_pat1_clusters_ligands)]),0)
obs_s_pat2_ligands=pmax(rowSums(u_ligands_clusters[,mask_pat2_clusters_ligands,drop=F]),0)
obs_s_pat1_ligands=pmax(obs_s_ligands-obs_s_pat2_ligands,0)
obs_m_pat2_ligands=obs_s_pat2_ligands/sum(ntot_umis_ligands[mask_pat2_ligands])
obs_m_pat1_ligands=obs_s_pat1_ligands/sum(ntot_umis_ligands[mask_pat1_ligands])
obs_s_receptors=pmax(rowSums(u_receptors),0)
obs_s_pat2_receptors=pmax(rowSums(u_receptors[,mask_pat2_clusters_receptors,drop=F]),0)
obs_s_pat1_receptors=pmax(obs_s_receptors-obs_s_pat2_receptors,0)
obs_m_pat2_receptors=obs_s_pat2_receptors/sum(obs_s_pat2_receptors)
obs_m_pat1_receptors=obs_s_pat1_receptors/sum(obs_s_pat1_receptors)
obs_interaction_intensity_pat1=matrix(obs_m_pat1_ligands,length(obs_m_pat1_ligands),length(obs_m_pat1_receptors))*matrix(obs_m_pat1_receptors,length(obs_m_pat1_ligands),length(obs_m_pat1_receptors),byrow = T,dimnames=list(names(obs_m_pat1_ligands),names(obs_m_pat1_receptors)))
obs_interaction_intensity_pat2=matrix(obs_m_pat2_ligands,length(obs_m_pat2_ligands),length(obs_m_pat2_receptors))*matrix(obs_m_pat2_receptors,length(obs_m_pat2_ligands),length(obs_m_pat2_receptors),byrow = T,dimnames=list(names(obs_m_pat2_ligands),names(obs_m_pat2_receptors)))
我们可以看到受配体细胞通讯之间的计算方式,其中pmax(x,0)代表选出该vector里面大于0的数
网友评论