5Y叔的clusterProfiler-book阅读 Chapter 5 Gene Ontology Analysis

计划在年前回家前完成此资料的学习,前几日耽搁的多了些,这两日还是得抽空把这个看完,然后继续学习机器学习相关的内容。。。。。。

5.1 Supported organisms
GO分析(GroupGO()以及enrichGO()和gseGO())支持具有OrgDb对象的物种。Bioconductor 早已经提供了20种物种,用户可以在OrgDb官网上查找,也可以通过AnnotationForge自己构建,若用户自己有GO注释文件(数据框的格式,第一列是GeneID,第二列是GOID),可以使用enricher()和gseGO()进行过表达测试和基因富集分析。

如果基因是通过直接注释的,那么它们应该也可以通过祖先GO nodes进行间接的注释,如果用户仅有直接注释,可以将其传给buildGOmap()函数,该函数将推断一个间接注释,并生成一个适用于richer()和gseGO()的数据框。

5.2 GO classification
在clusterProfiler包中,groupGO()用于基于特定水平的GO分布的基因分类,接下来,我们使用由DOSE提供的geneList进行演示。

library(clusterProfiler)
library(org.Hs.eg.db)
data(geneList, package="DOSE")
gene <- names(geneList)[abs(geneList) > 2]
gene.df <- bitr(gene, fromType = "ENTREZID",
                toType = c("ENSEMBL", "SYMBOL"),
                OrgDb = org.Hs.eg.db)
head(gene.df)

在这里插入图片描述

ggo <- groupGO(gene     = gene,
               OrgDb    = org.Hs.eg.db,
               ont      = "CC",
               level    = 3,
               readable = TRUE)

head(ggo)

##                   ID                    Description Count GeneRatio
## GO:0005886 GO:0005886                plasma membrane    52    52/207
## GO:0005628 GO:0005628              prospore membrane     0     0/207
## GO:0005789 GO:0005789 endoplasmic reticulum membrane     8     8/207
## GO:0019867 GO:0019867                 outer membrane     2     2/207
## GO:0031090 GO:0031090             organelle membrane    13    13/207
## GO:0034357 GO:0034357        photosynthetic membrane     0     0/207
                                                                                                                                                                                                                                                                                                                                 ## geneID
## GO:0005886  S100A9/MELK/S100A8/MARCO/ASPM/CXCL10/LAMP3/CEP55/UGT8/UBE2C/SLC7A5/CXCL9/FADS2/MSLN/IL1R2/KIF18A/S100P/GZMB/TRAT1/GABRP/AQP9/GPR19/SLC2A6/KIF20A/LAG3/NUDT1/CACNA1D/VSTM4/CORIN/KCNK15/CA12/KCNE4/HLA-DQA1/ADH1B/PDZK1/C7/ACKR1/COL17A1/PSD3/EMCN/SLC44A4/LRP2/NLGN4X/MAPT/ERBB4/CX3CR1/LAMP5/ABCA8/STEAP4/PTPRT/TMC5/CYBRD1
## GO:0005628                                                                                                                                                                                                                                                                                                                             
## GO:0005789  FADS2/CDK1/CHODL/ITPR1/HLA-DQA1/CYP4F8/CYP4B1/FMO5
## GO:0019867  MAOB/PGR
## GO:0031090  MARCO/LAMP3/DUSP2/DTL/NUDT1/MAOB/ITPR1/GASK1B/HLA-DQA1/LRP2/LAMP5/STEAP4/PGR
## GO:0034357                                                                                                                                                    

输入数据是含有GeneID的基因向量(其可为由OrgDb支持的任意一种ID,如果设置的是可读的格式,输入的ID可以被转化成Gene Symbols。

5.3 GO over-representation test
over-representation test用于计算详情和解释参数,具体内容参照DOSE。

ego <- enrichGO(gene          = gene,
                universe      = names(geneList),
                OrgDb         = org.Hs.eg.db,
                ont           = "CC",
                pAdjustMethod = "BH",
                pvalueCutoff  = 0.01,
                qvalueCutoff  = 0.05,
        readable      = TRUE)
head(ego)


##ID                              Description GeneRatio   BgRatio       pvalue     p.adjust       qvalue
##GO:0000779 GO:0000779 condensed chromosome, centromeric region    14/197  85/11434 1.662431e-10 3.802012e-08 3.572360e-08
##GO:0000776 GO:0000776                              kinetochore    15/197 104/11434 2.551686e-10 3.802012e-08 3.572360e-08
##GO:0000775 GO:0000775           chromosome, centromeric region    17/197 147/11434 5.495085e-10 5.458451e-08 5.128746e-08
##GO:0000793 GO:0000793                     condensed chromosome    17/197 154/11434 1.141189e-09 8.501857e-08 7.988322e-08
##GO:0005819 GO:0005819                                  spindle    21/197 256/11434 2.923725e-09 1.742540e-07 1.637286e-07
##GO:0098687 GO:0098687                       chromosomal region    21/197 265/11434 5.435150e-09 2.699458e-07 2.536403e-07
                                                                                                                               geneID Count
##GO:0000779                                         CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/CDT1/BIRC5/NCAPG/AURKB/CCNB1    14
##GO:0000776                                    CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/TTK/AURKB/CCNB1    15
##GO:0000775                        CDCA8/CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/TTK/NCAPG/AURKB/CCNB1    17
##GO:0000793                       CENPE/NDC80/TOP2A/NCAPH/HJURP/SKA1/NEK2/CENPM/CENPN/ERCC6L/MAD2L1/CDT1/BIRC5/NCAPG/AURKB/CHEK1/CCNB1    17
##GO:0005819 CDC20/KIF23/CENPE/ASPM/DLGAP5/SKA1/TPX2/TACC3/NEK2/CDK1/MAD2L1/KIF18A/KIF11/TTK/AURKB/PRC1/KIF18B/KIF20A/AURKA/CCNB1/KIF4A    21
##GO:0098687   CDCA8/CENPE/NDC80/HJURP/SKA1/NEK2/CENPM/CENPN/CDK1/ERCC6L/MAD2L1/KIF18A/CDT1/BIRC5/EZH2/TTK/NCAPG/AURKB/CHEK1/CCNB1/MCM5    21

正如5.1所提到的,任何gene ID支持OrgDb类型的Gene ID,都可以直接用于GO分析,用户可以通过特异的keyType参数进行特异的Gene ID类型的输入。

ego2 <- enrichGO(gene         = gene.df$ENSEMBL,
                OrgDb         = org.Hs.eg.db,
                keyType       = 'ENSEMBL',
                ont           = "CC",
                pAdjustMethod = "BH",
                pvalueCutoff  = 0.01,
                qvalueCutoff  = 0.05)

ego2 <- setReadable(ego2, OrgDb = org.Hs.eg.db)
##使用setReadable()函数进行Gene ID的转换

5.3.1 drop specific GO terms or level
enrichGO 可以测试整个语料库,并且丰富的结果可能包含非常笼统地术语,使用dropGO()函数,用户可以从richGO和compareCluster的结果中删除特定的GO属于和GO水平。

5.3.2 test GO at sepcific level
enrichGO不包含将测试限制在特定的GO级别的参数,相反,我们提供函数gofilter来限制特异GO水平的结果。它使用的是来自enrichGO和compareCluster函数的结果。

5.3.3 reduce redundancy of enriched GO terms
GO是按照父子结构进行组织的,因此父项可以与他的子项有很大一部分的重叠,这将会导致冗余的出现,为解决此问题,clusterProfiler采用了简化的方法,以减少来自richGO和gseGO输出的冗余的问题,该函数内部为GOSemSim,用于计算GO术语之间的语义相似度,并通过保留一个代表性术语来删除那些高度相似的术语。

5.4 GO Gene Set Enrichment Analysis
分析基因表达谱的常用方法是寻找差异表达的基因,先前提出的基因富集分析是基于差异表达基因上的这种方法将会找到差异较大的基因,但检测不到差异较小的基因(而这些基因,在某种情况下可能通过协调的方式参与某一些生物学过程。 Gene Set Enrichment Analysis (GSEA)直接解决了这一问题。在进行GSEA分析的时候,是将所有的Gene进行分析,GSEA汇聚了一个基因集中的所有基因的统计学信息。因此可以用于检测预定义的基因集中的所有基因以较小变化组成的协同功能,由于许多相关的表型差异由一组基因中微小但一致的变化趋势所体现。

ego3 <- gseGO(geneList     = geneList,
              OrgDb        = org.Hs.eg.db,
              ont          = "CC",
              nPerm        = 1000,
              minGSSize    = 100,
              maxGSSize    = 500,
              pvalueCutoff = 0.05,
              verbose      = FALSE)


GSEA采用排列数量设置nPerm只有gene Set size在皿GSSize和maxGSSize中的基因集将会被检测到。

5.5 GO Semantic Similarity Analysis

GO语义相似度可以用GOSemSim来计算,我们可以根据功能相似性使用它们来将基因和蛋白质聚为不同的簇,也可以使用它俩测量GO术语之间的相似性来减少GO富集结果的冗余。

5.5.1 GO analysis for non-model organisms
非模式生物的分析

richGO和gseGO函数都需要OrdDb对象作为背景注释,对于没有Bioconductor提供的OrgDb的生物,用户可以通过AnnoationHub在线查询一个,如果没有,则用户可以从其他来源获得GO注释,例如来自BiomaRt或者Blast2GO,然后进行GSEA或者enricher来进行分析,类似于使用wikiPathways和MSigDB,另一种解决方法是使用AnnoationForge包来自创一个OrgDb.

好的,今天这个到这算是学完了,先把书看完了,然后再进行实操。。。。

发布了57 篇原创文章 · 获赞 6 · 访问量 8797

猜你喜欢

转载自blog.csdn.net/leianuo123/article/details/104013712
今日推荐