探索生信之美,解构每一段代码的故事
大家好呀,上一周我们一起学习的mixOmics的多组学监督聚类分析以及特征筛选。这一周我们继续来学习一些多组学相关知识。首先我们先思考一下多组学分析的意义在哪儿?首先由于技术手段的不断革新,技术瓶颈被打破、技术门槛不断降低,同一个样本既可以送去做转录组测序、蛋白组学分析、脂质组学分析、甲基化、拷贝数分析等等,明确不同数据集之间的通路的相关性、分子的特征能够提升对疾病的诊断、治疗的认知,目前研究方法主要集中在利用多组学数据进行聚类分析以及特征筛选方面,这也确实是多组学整合需要面临的挑战。但是今天呢,跟大家介绍的是如何利用多组学数据(或者是多平台数据)对样本进行gnstanalysis,之前我们还介绍过如何利用甲基化数据进行gnstanalsis,忘了吗?这时候也可串联起来复习一下喔(甲基化最常用的分析!没有之一!)。
本次我们介绍的R包是MOGSA,参考文献“MOGSA:IntgrativSinglSamplGn-stAnalysisofMultiplOmicsData.”于年发表在《molcularcllularprotomics》杂志上,是在生化研究方法领域中比较权威的杂志。
MOGSA提供了了基于多组学数据的Gnstanalysis。其算法通过三个步骤进行计算:
1.通过multiplfactorialanalysis(MFA)等降维方式将将多组学数据整合(MFA能够将每个数据集的观测与变量(基因)映射为更低维的数据,生成样本分数(比如PCs));2.将基因集注释的注释映射到同样低维的数据,并计算每个样本的基因集分数(gnstscor,GSS);
3.MOGSA生成GSS矩阵,通过构建样本分数(PCs)与基因集分数(gnstscor)。
最后的分析中,获得高的GSS的基因集提示该基因集在多个数据集中具有高相关性,举个例子,如果一个基因集具有高的GSS,情况可能是基因集中的一些基因的转录水平高表达,另外一些基因的蛋白水平高表达,还有一些基因的拷贝数明显扩增,从而具有较高的GSS。我们就直接开始吧~
一、包和数据准备
##下载包if(!rquirNamspac(BiocManagr,quitly=TRUE))#install.packags(BiocManagr)BiocManagr::install(mogsa)加载包library(mogsa)library(gplots)#用于热图可视化
数据准备,我们这里使用的数据是,NCI-60(即美国国立癌症研究规定抗癌新药必须筛查的60中不同肿瘤的癌细胞细胞)在不同平台的芯片数据。其中NCI60_4array是一个由数据框(datafram)组成的列表(list),每个数据框中,列是60种不同的癌细胞,行则是基因名,在这里只提取一部分子集进行计算。NCI60_4array_supdata是一个由矩阵(matrix)构成的列表,代表了基因注释文件,在每一个matrix中,行是基因,列是基因集。数值1代表该基因在基因集内,0代表不在基因集内。这两个文献是进行多组学分析的必备文件。我们在运行之前必须保证两个文件的下不同类型的数据集排序相同,基因名的顺序相同。
#加载数据data(NCI60_4array_supdata)data(NCI60_4arrays)#查看数据的维度sapply(NCI60_4arrays,dim)##agilnthguhgup2hgu95##[1,]##[2,]sapply(NCI60_4array_supdata,dim)##agilnthguhgup2hgu95##[1,]##[2,]#查看我们的不同平台顺序是否在同一顺序idntical(nams(NCI60_4arrays),nams(NCI60_4array_supdata))##[1]TRUEhad(rownams(NCI60_4arrays$agilnt))##[1]"ST8SIA1""YWHAQ""EPHA4""GTPBP5""PVR""ATP6V1H"#查看两个列表基因名是否在同一顺序dataColNams-lapply(NCI60_4arrays,colnams)supColNams-lapply(NCI60_4arrays,colnams)idntical(dataColNams,supColNams)##[1]TRUE
二、MOGSA分析
MOGSA分析很简单,只需要运行一个命令,但是在这之前我们需要根据不同肿瘤将细胞系进行分类,并对每个肿瘤类型进行颜色赋值。
#NCI-60的细胞系分为不同的肿瘤类型cancrTyp-as.factor(substr(colnams(NCI60_4arrays$agilnt),1,2))#定义不同肿瘤类型的颜色colcod-cancrTyplvls(colcod)-c("black","rd","grn","blu","cyan","brown","pink","gray","orang")colcod-as.charactr(colcod)
接下来一行命令搞定。
mgsa1-mogsa(x=NCI60_4arrays,sup=NCI60_4array_supdata,nf=3,proc.row="cntr_ssq1",w.data="inrtia",statis=TRUE)
其中pro.row代表对行的预处理,w.data提示对数据集的权重调整,statis使用那种方法进行降维,一种是STATIS,另一种就是MFA(statis=FALS),nf则是代表我们选择前多少个PC进行分析。但这里有一个问题就是由于需要纳入多少PC并不是一下就能敲定的,所以一般来说我们做MOGSA一般要分为两步。
#第一步、moa功能进行多因素分析,绘制碎石图,明确需要纳入多少PCsana-moa(NCI60_4arrays,proc.row="cntr_ssq1",w.data="inrtia",statis=TRUE)slot(ana,"partial.ig")[,1:6]##PC1PC2PC3PC4PC5##agilnt0.....##hgu0.....##hgup20.....##hgu.....##PC6##agilnt0.##hgu0.##hgup20.##hgu.layout(matrix(1:2,1,2))plot(ana,valu="ig",typ=2,n=20,main="variancofPCs")#us?moa-classtochckthhlpmanuplot(ana,valu="tau",typ=2,n=20,main="ScaldvariancofPCs")
#第二步、根据碎石图的结果选自PC数mgsa2-mogsa(x=ana,sup=NCI60_4array_supdata,nf=3)##xisanobjctof"moa",statisisnotusd
三、结果分析
使用gtmgsa功能能够提取mogsa中的数据,我们可以详细看一下。
#每个PC解释的varianc,多维度的碎石图igs-gtmgsa(mgsa1,"partial.ig")barplot(as.matrix(igs),lgnd.txt=rownams(igs))
#获得样本U+gnstscor(GSS)矩阵scors-gtmgsa(mgsa1,"scor")#展示不同细胞的gnstanalysis结果hatmap.2(scors,trac="n",scal="r",Colv=NULL,dndrogram="row",margins=c(6,10),ColSidColors=colcod)
#还可以获得mgsa的Pvalu结果,明确哪些富集是具有统计学意义的p.mat-gtmgsa(mgsa1,"p.val")#获得Pvalu矩阵#挑选前20个最具有显著性的基因集top.gs-sort(rowSums(p.mat0.01),dcrasing=TRUE)[1:20]#看一下名字top.gs.nam-nams(top.gs)top.gs.nam##[1]"PASINI_SUZ12_TARGETS_DN"##[2]"CHARAFE_BREAST_CANCER_LUMINAL_VS_BASAL_DN"##[3]"CHARAFE_BREAST_CANCER_LUMINAL_VS_MESENCHYMAL_DN"##[4]"KOINUMA_TARGETS_OF_SMAD2_OR_SMAD3"##[5]"DUTERTRE_ESTRADIOL_RESPONSE_24HR_DN"##[6]"REN_ALVEOLAR_RHABDOMYOSARCOMA_DN"##[7]"LIM_MAMMARY_STEM_CELL_UP"##[8]"LIU_PROSTATE_CANCER_DN"##[9]"CHICAS_RB1_TARGETS_CONFLUENT"##[10]"NUYTTEN_EZH2_TARGETS_UP"##[11]"DACOSTA_UV_RESPONSE_VIA_ERCC3_DN"##[12]"PUJANA_ATM_PCC_NETWORK"##[13]"KRIGE_RESPONSE_TO_TOSEDOSTAT_24HR_DN"##[14]"WONG_ADULT_TISSUE_STEM_MODULE"##[15]"KRIEG_HYPOXIA_NOT_VIA_KDM3A"##[16]"MULTICELLULAR_ORGANISMAL_DEVELOPMENT"##[17]"ANATOMICAL_STRUCTURE_DEVELOPMENT"##[18]"FORTSCHEGGER_PHF8_TARGETS_DN"##[19]"ZWANG_CLASS_1_TRANSIENTLY_INDUCED_BY_EGF"##[20]"PLASMA_MEMBRANE_PART"#绘制这20个基因集的热图hatmap.2(scors[top.gs.nam,],trac="n",scal="r",Colv=NULL,dndrogram="row",margins=c(6,10),ColSidColors=colcod)
我们可以看到白血病的基因富集结果和其他肿瘤明显不同。同时我们能够对一个基因集进行更详细的分析,比如那个数据集对该基因集得分最大?在这个基因集中哪些基因更重要?我们选择最具有显著性意义的基因集“PASINI_SUZ12_TARGETS_DN”为例。
#获得显著基因集gs1-top.gs.nam[1]gs1##[1]"PASINI_SUZ12_TARGETS_DN"#根据不同数据集分解在不同肿瘤细胞系中的基因集得分d