胖白系列 热图到底是横向基因层面归一化还是依据纵向的样品呢?

发布日期:2024-08-03 17:02    点击次数:79

胖白系列 热图到底是横向基因层面归一化还是依据纵向的样品呢?

纯情学生妹

看到了一个2022的著作胖白系列,标题是:《Bromodomain Inhibitors Modulate FcgR-Mediated Mononuclear Phagocyte Activation and Chemotaxis》。这个考虑里面的转录组数据是通过RNA测序(RNA-seq)手艺赢得的,这些数据来自两个不同的细胞类型:树突细胞(Dendritic Cells, DCs)和巨噬细胞(Macrophages),以及它们在不同践诺条款下的响应。

不同的细胞类型即是不同的数据集,每个数据集里面齐是4个分组:

IC(Immune Complexes)刺激:树突细胞被免疫复合物刺激,这是模拟体内免疫响应的一种践诺条款。Ova(Ovalbumin)刺激:树突细胞被卵清卵白刺激,这是一种常用的模子抗原,用于考虑免疫细胞的激活。DMSO对照组:细胞未罗致任何惩处,DMSO是iBET药物的溶剂,这里当作阴性对照。iBET惩处组:细胞被BET卵白扼制剂iBET惩处,用于考虑iBET对树突细胞转录组的影响。

在(Gene Expression Omnibus, GEO)中,不错通过提供的打听号码GSE200033和GSE200226获取这两个数据集的抒发量矩阵。

咱们很容易读取树突细胞(BMDCs)的抒发量矩阵,代码如下所示:

rm(list = ls())#清空现时的使命环境options(stringsAsFactors = F)#不以因子变量读取options(scipen = 20)#不以科学计数法流露library(data.table) data<-data.table::fread("GSE200226_CountTable_BMDC.csv.gz",                        header = T,                        data.table = F) data=data[!duplicated(data$V1),]mat<-floor(data[,c( 2:ncol(data))])rownames(mat)= data[,1] keep_feature <- rowSums (mat > 1) > 1 symbol_matrix <- mat[keep_feature, ]  rownames(symbol_matrix)=rownames(mat)[keep_feature] dat=log(edgeR::cpm(symbol_matrix)+1)

然后浅近的左证这个抒发量矩阵的基因的SD值排序后挑选里面的排行靠前的1000个基因后画图如下所示的热图:

图片胖白系列

SD值排序后挑选里面的排行靠前的1000个基因

很昭彰的不错看到这个抒发量矩阵里面BET卵白扼制剂iBET惩处变成的抒发量变化是最大的,然后是卵清卵白刺激和IC的略略小少许的互异,然后每个组里面的5个重叠其实也略微有少许点分组,可能是先作念了3个重叠然后补了2个样品。

上头的热图代码是:

dat[1:4,1:4] cg=names(tail(sort(apply(dat,1,sd)),1000))#apply按行('1'是按行取,'2'是按列取)取每一排的方差,从小到大排序,取最大的1000个library(pheatmap)pheatmap(dat[cg,],show_colnames =F,show_rownames = F) #对那些索求出来的1000个基因场合的每一排取出,组合起来为一个新的抒发矩阵n=t(scale(t(dat[cg,]))) # 'scale'不错对log-ratio数值进行归一化n[n>2]=2 n[n< -2]= -2n[1:4,1:4]pheatmap(n,show_colnames =F,show_rownames = F)ac=data.frame(group=group_list)rownames(ac)=colnames(n)pheatmap(n,show_colnames =F,show_rownames = F,         annotation_col=ac)
咱们该何如判断这个矩阵如实是来自于树突细胞呢

前边咱们提到了不同的细胞类型:树突细胞(Dendritic Cells, DCs)和巨噬细胞(Macrophages),是不同的数据集,有不同的抒发量矩阵文献。然则咱们何如肯定作家给出来的文献是否准确无误呢?

其实很浅近,需要靠生物学配景,比如恣意单细胞转录组数据集里面齐不错看到不同细胞亚群的特异性基因,暗网人兽如下所示:

SCP1661_meyloids_markers_list =list(  macrophages=c('Adgre1', 'Cd14',  'Fcgr3'),  cDCs=c('Xcr1', 'Flt3',  'Ccr7'),  pDCs=c('Siglech', 'Clec10a',  'Clec12a')  ,  monocytes=c('Ly6c2' , 'Spn'),  neutrophils=c('Csf3r', 'S100a8',  'Cxcl3') ) df = data.frame(  celltype=rep(names(SCP1661_meyloids_markers_list),               times=unlist(lapply(SCP1661_meyloids_markers_list, length))),  gene=unlist(SCP1661_meyloids_markers_list)) library(stringr) df=df[df$gene %in% rownames(dat),]cg=df$gene

这个时辰,最初检讨树突细胞数据集里面的各个髓系免疫细胞单细胞亚群的特异性基因的热图,这个时辰咱们不会遴荐横向基因层面归一化,而是径直可视化log的CPM值,如下所示 :

library(pheatmap)#tmp=dat[cg,]n=t(scale(t(dat[cg,]))) # 'scale'不错对log-ratio数值进行归一化n[n>2]=2 n[n< -2]= -2n[1:4,1:4]pheatmap(n,show_colnames =F,show_rownames = F)ac=data.frame(group=group_list)ar=data.frame(gene=df$celltype)rownames(ac)=colnames(n)rownames(ar)=rownames(n) pheatmap(tmp,show_colnames =F,show_rownames = T,          display_numbers = T,         annotation_row =ar,         annotation_col=ac)  

如下所示的遵循:

图片

 

那么,为什么这个时辰咱们不会遴荐横向基因层面归一化呢,因为我思看的巨噬细胞和树突细胞特异性基因是否在每个数据集里面高抒发,而不是在数据集里靠近比那4个分组的抒发量互异。

不错看到,在树突细胞数据集里面的Clec10a基因如实是抒发量很高,这个基因在巨噬细胞数据集里面是抒发量略低的。

学徒功课

平日情况下,应该是把上头的这两个矩阵归拢后可视化,这个时辰就不错陆续横向基因层面归一化,不错看到具体的每个基因在两个数据集的互异来分离巨噬细胞和树突细胞数据集。

那,什么时辰需要依据纵向的样品进行归一化呢?归正我基本上莫得遭受过这么的需求,上头的热图即是莫得遴荐横向基因层面归一化,而是径直可视化log的CPM值,其实也不错作念依据纵向的样品的归一化,然则因为巨噬细胞和树突细胞特异性基因并未几,而况抒发量互异悬殊胖白系列,是依据纵向的样品的否归一化就不那么贫窭了。

本站仅提供存储干事,统统本色均由用户发布,如发现存害或侵权本色,请点击举报。