如何手动做GO分析(包含p值,p.adj的计算)

您所在的位置:网站首页 r语言p值计算 如何手动做GO分析(包含p值,p.adj的计算)

如何手动做GO分析(包含p值,p.adj的计算)

2024-02-23 03:42| 来源: 网络整理| 查看: 265

引言   

       不论你是主攻基因的上下游关系,还是想鉴定在外界刺激下生物体的响应基因,亦或是仅仅想凑一个文章毕业,只要是涉及到活细胞,大都会涉及到RNA-seq。

       RNA-seq的测序技术本身已经很成熟,同样一批处理过的样品,在不发生意外事故的前提下,不论送哪个公司,测序结果都大同小异。在这个前提成立的基础上,文章的层次主要由分析手法的高低决定。在一些高手手中,除了一些生物公司就会给做的QC之外,还要进行GO 分析,KEGG分析,PPI网络和代谢网络分析,因果推理,还会结合实验设计的目的和已有的文献,进行合理的推论,等等。在下面的内容中,我们就以R语言为工具,来看一看如何一步一步地做GO分析。

        GO分析的网站有很多,笔者见过并且使用过的就不下十个。动物植物通用的有:DAVID,PATHER;植物特有:(AgriGo ,PlantGSEA)。然而,理想很美好,现实却不一定。莎翁说过:1000个人眼中的1000个哈姆雷特。同一批差异基因提交到不同的网站后生成的结果差别巨大,有些甚至彼此冲突。到底哪一种才是对的呢?

       在回答这个问题之前,我们先看看GO分析的原理:在基因组中,每一个基因往往参与了1到多个GO(biological process, molecular function, cellular component)中,以人类P53基因为例(该基因至少参与到34个molecular function和125个biological process中);而每个GO又被1到多个基因所参与,以ATP binding(GO:0005524)为例,有上百个基因参与其中,包括:Acute AML1、Protein translocase subunit SecA 、ATPase、RNA-directed RNA polymerase等等。我们假设我们的RNA-seq结果找到了k个上调差异表达基因,正确GO的方法应该是这样:

对于每一个GO,先后统计出

①统计全基因组上每个GOterm出现的频数,定义为m;

②统计全基因组上基因数量,定义为n;

③统计本次GO分析中提交差异基因的数量,定义为k,这里就是上面的k;

④统计在k个上调差异基因中的GO频数,定义为o。

在R语言中,可以用以下代码来实现p值的计算:

p[i,1]=phyper(o-1, k, n-k, m, lower.tail=FALSE)

 

p值计算出来之后,还要计算p-adjusted,即校正后的p值(qvalue=padj=FDR=Corrected p-Value=p-adjusted),是对p值进行了多重假设检验,能更好地控制假阳性率。

在R语言中,可以用

padj=p.adjust(p, method = "BH", n = length(p))

来实现。

对于这个GO,倘若p.adj



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3