9  Disease enrichment analysis

We developed DOSE (Yu et al. 2015) package to promote the investigation of diseases. DOSE provides five methods for measuring semantic similarities among DO terms and gene products, hypergeometric model and gene set enrichment analysis (GSEA) for associating disease with gene list and extracting disease association insight from genome wide expression profiles.

9.1 Disease over-representation analysis

DOSE supports enrichment analysis of Disease Ontology (DO) (Schriml et al. 2011) and Network of Cancer Gene (A. et al. 2016). In addition, several visualization methods were provided by enrichplot to help interpreting semantic and enrichment results.

9.1.1 Over-representation analysis for disease ontology

In the following example, we selected genes with fold change above 1.5 as the differential genes and analyzed their disease association.

library(DOSE)
data(geneList)
gene <- names(geneList)[abs(geneList) > 1.5]
head(gene)
[1] "4312"  "8318"  "10874" "55143" "55388" "991"  
x <- enrichDO(gene          = gene,
              ont           = "HDO",
              pvalueCutoff  = 0.05,
              pAdjustMethod = "BH",
              universe      = names(geneList),
              minGSSize     = 5,
              maxGSSize     = 500,
              qvalueCutoff  = 0.05,
              readable      = FALSE)
head(x)
                       ID              Description GeneRatio  BgRatio
DOID:0060306 DOID:0060306    Meier-Gorlin syndrome     6/279  10/6288
DOID:10534     DOID:10534           stomach cancer    25/279 210/6288
DOID:5041       DOID:5041        esophageal cancer    18/279 132/6288
DOID:820         DOID:820              myocarditis     8/279  31/6288
DOID:1107       DOID:1107     esophageal carcinoma    16/279 117/6288
DOID:2799       DOID:2799 bronchiolitis obliterans     7/279  25/6288
             RichFactor FoldEnrichment oddsRatio   zScore       pvalue
DOID:0060306  0.6000000      13.522581 32.994505 8.538978 1.307449e-06
DOID:10534    0.1190476       2.683052  3.098532 5.345022 5.198449e-06
DOID:5041     0.1363636       3.073314  3.566243 5.187110 1.810709e-05
DOID:820      0.2580645       5.816164  7.682978 5.791909 4.392110e-05
DOID:1107     0.1367521       3.082070  3.558634 4.898162 5.136435e-05
DOID:2799     0.2800000       6.310538  8.565564 5.732447 7.575017e-05
                p.adjust       qvalue
DOID:0060306 0.001215927 0.0001893585
DOID:10534   0.002417279 0.0003764472
DOID:5041    0.005613199 0.0008741535
DOID:820     0.009553770 0.0014878256
DOID:1107    0.009553770 0.0014878256
DOID:2799    0.010484098 0.0016327073
                                                                                                                                       geneID
DOID:0060306                                                                                                   8318/81620/4174/990/4998/23594
DOID:10534   3572/4312/8140/2018/3169/10403/2305/6352/3117/3576/8792/563/8061/2146/4288/7031/347902/4318/259266/3131/2952/2066/6926/81930/332
DOID:5041                                            4312/8140/2018/3169/6890/3576/3868/563/7850/2146/4321/7373/4318/11122/2952/771/2066/2921
DOID:820                                                                                             3627/29851/8792/6279/2697/6280/1493/4982
DOID:1107                                                      4312/8140/2018/3169/6890/3576/3868/563/2146/4321/7373/4318/11122/2952/771/2066
DOID:2799                                                                                                  4283/3627/6352/4582/3002/4318/6373
             Count
DOID:0060306     6
DOID:10534      25
DOID:5041       18
DOID:820         8
DOID:1107       16
DOID:2799        7

The enrichDO() function requires an entrezgene ID vector as input, which is mostly the differential gene list from gene expression profile studies. Please refer to Section 19.1 if you need to convert other gene ID types to entrezgene ID.

The ont parameter can be “HDO” (Human Disease Ontology), “HPO” (Human Phenotype Ontology) or “MPO” (Mouse Phenotype Ontology). pvalueCutoff setting the cutoff value of p value and adjusted p value; pAdjustMethod setting the p value correction methods, include the Bonferroni correction (“bonferroni”), Holm (“holm”), Hochberg (“hochberg”), Hommel (“hommel”), Benjamini & Hochberg (“BH”) and Benjamini & Yekutieli (“BY”) while qvalueCutoff is used to control q-values.

The universe sets the background gene universe for testing. If users do not explicitly set this parameter, enrichDO() will set the universe to all human genes that have DO annotation.

The minGSSize (and maxGSSize) indicates that only those DO terms that have more than minGSSize (and less than maxGSSize) annotated genes will be tested.

The readable is a logical parameter that indicates whether the entrezgene IDs will be mapped to gene symbols or not, see also Section 19.2.

9.1.2 Over-representation analysis for the network of cancer gene

Network of Cancer Gene (NCG) (A. et al. 2016) is a manually curated repository of cancer genes. NCG release 5.0 (Aug. 2015) collects 1,571 cancer genes from 175 published studies. DOSE supports analyzing gene list and determine whether they are enriched in genes known to be mutated in a given cancer type.

gene2 <- names(geneList)[abs(geneList) > 3]
ncg <- enrichNCG(gene2) 
head(ncg)
 [1] ID             Description    GeneRatio      BgRatio        RichFactor    
 [6] FoldEnrichment oddsRatio      zScore         pvalue         p.adjust      
[11] qvalue         geneID         Count         
<0 rows> (or 0-length row.names)

9.1.3 DisGeNET support has been removed

enrichDGN(), enrichDGNv() and gseDGN() no longer exist. DOSE used to provide over-representation and GSEA against DisGeNET (Janet et al. 2015), an integrative resource of gene-disease associations. DisGeNET changed its licence from CC BY-NC-SA to a proprietary one, so the data can no longer be redistributed with the package, and the functions and their bundled datasets were removed in DOSE 4.7.0 (June 2026).

If you have code calling them, use the Disease Ontology route instead:

## over-representation
x <- enrichDO(gene, ont = "HDO")

## GSEA
y <- gseDO(geneList, ont = "HDO")

ont = "HDO" is the human Disease Ontology and is the default. This is a genuine change of data source: DO annotates genes to disease terms, whereas DisGeNET aggregated gene-disease associations from several sources, so the results are not interchangeable. DisGeNET itself is still available for direct download from its own website under its current terms.

9.2 Disease gene set enrichment analysis

9.2.1 gseDO function

In the following example, in order to speed up the compilation of this document, only gene sets with size above 120 were tested and only 100 permutations were performed.

library(DOSE)
data(geneList)
y <- gseDO(geneList,
           minGSSize     = 120,
           pvalueCutoff  = 0.2,
           pAdjustMethod = "BH",
           verbose       = FALSE)
head(y, 3)
                       ID                          Description setSize
DOID:612         DOID:612     primary immunodeficiency disease     236
DOID:0050338 DOID:0050338 primary bacterial infectious disease     125
DOID:0080599 DOID:0080599       Coronavirus infectious disease     137
             enrichmentScore      NES       pvalue     p.adjust       qvalue
DOID:612           0.4516799 2.057861 2.304744e-10 3.733685e-08 2.207702e-08
DOID:0050338       0.4377124 1.850632 1.974705e-05 6.398044e-04 3.783119e-04
DOID:0080599       0.4190428 1.800984 4.159755e-05 9.626862e-04 5.692296e-04
             rank                   leading_edge
DOID:612     2521 tags=43%, list=20%, signal=35%
DOID:0050338 1864 tags=38%, list=15%, signal=32%
DOID:0080599 1146  tags=24%, list=9%, signal=22%
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            core_enrichment
DOID:612     55388/7153/9837/29851/9636/1503/1493/7037/4173/3932/3559/6772/51311/3507/3561/917/3654/3574/3575/919/4860/915/22806/5693/4938/1535/3458/959/5336/11151/3702/925/4688/64135/28755/50615/974/1794/3689/5788/5424/916/7096/4068/3937/30009/5695/3394/10525/100/7374/3659/940/939/4689/5880/7128/6891/4210/6789/5699/930/6573/11322/204/6850/10095/7124/3569/7097/7852/8772/5692/64170/3119/1956/28985/1053/5971/1536/10125/8456/8625/3071/7293/4478/1380/958/5054/5591/9437/10379/54440/3570/3978/3593/10625/29927/3558/51371/735
DOID:0050338                                                                                                                                                                                                                                                                                     8685/3627/4283/3620/6364/4318/3576/6890/6352/54210/80380/6772/51311/6347/9332/3654/1535/3458/959/1594/942/1557/9235/1234/467/7096/6367/100/3600/6696/3549/6891/929/26191/4282/7124/912/5329/3569/4049/7097/56244/50506/5133/1118/3119/1956
DOID:0080599                                                                                                                                                                                                                                                                                                                                                            4312/6279/3627/4283/3002/6355/2921/3576/6352/3934/59272/713/3559/1230/6772/51311/6347/3561/6351/6590/3574/6354/3458/1520/4783/925/1991/1234/916/6374/1514/1088/2919
               log2err
DOID:612     0.8266573
DOID:0050338 0.5756103
DOID:0080599 0.5573322

9.2.2 gseNCG function

ncg <- gseNCG(geneList,
              pvalueCutoff  = 0.5,
              pAdjustMethod = "BH",
              verbose       = FALSE)
ncg <- setReadable(ncg, 'org.Hs.eg.db')
head(ncg, 3) 
                                                           ID
breast_fibroepithelial_tumours breast_fibroepithelial_tumours
pan-gynecological and breast     pan-gynecological and breast
pan-gastric                                       pan-gastric
                                                  Description setSize
breast_fibroepithelial_tumours breast_fibroepithelial_tumours      17
pan-gynecological and breast     pan-gynecological and breast      43
pan-gastric                                       pan-gastric      49
                               enrichmentScore       NES      pvalue  p.adjust
breast_fibroepithelial_tumours      -0.6421578 -1.706444 0.011340497 0.2296451
pan-gynecological and breast        -0.5263429 -1.696113 0.005250418 0.1809026
pan-gastric                         -0.4993799 -1.654372 0.006700095 0.1809026
                                   qvalue rank                   leading_edge
breast_fibroepithelial_tumours 0.12292893 2700 tags=53%, list=22%, signal=42%
pan-gynecological and breast   0.09683708 2464 tags=40%, list=20%, signal=32%
pan-gastric                    0.09683708 3280 tags=49%, list=26%, signal=36%
                                                                                                                                                              core_enrichment
breast_fibroepithelial_tumours                                                                                               SETD2/RB1/PCNX4/NF1/TP53/RARA/SYNE1/MAP3K1/ERBB4
pan-gynecological and breast                                            NIPBL/SPOP/ARID1A/RASA1/RB1/RNF43/MAP2K4/NF1/CTNNB1/TP53/PIK3R1/CDKN1B/CCND1/ARID5B/MAP3K1/TBX3/GATA3
pan-gastric                    BCOR/SOX9/TCF7L2/ATM/CALD1/SEMG2/HTR7/ARID1A/RASA1/RB1/TTBK2/RNF43/CTNNB1/TP53/BCL9/SMAD3/APC/ZFP36L2/TGFBR2/MUC6/MAP3K1/CACNA1C/ATP8B1/CYP4B1
                                 log2err
breast_fibroepithelial_tumours 0.3807304
pan-gynecological and breast   0.4070179
pan-gastric                    0.4070179

References

A., Omer, Giovanni M. D., Thanos P. M., and Francesca D. C. 2016. “NCG 5.0: Updates of a Manually Curated Repository of Cancer Genes and Associated Properties from Cancer Mutational Screenings.” Nucleic Acids Research 44 (D1): D992–99. https://doi.org/10.1093/nar/gkv1123.
Janet, P., Núria Q. R., Àlex B., et al. 2015. “DisGeNET: A Discovery Platform for the Dynamical Exploration of Human Diseases and Their Genes.” Database 2015 (March): bav028. https://doi.org/10.1093/database/bav028.
Schriml, L. M., C. Arze, S. Nadendla, et al. 2011. “Disease Ontology: A Backbone for Disease Semantic Integration.” Nucleic Acids Research 40 (D1): D940–46. https://doi.org/10.1093/nar/gkr972.
Yu, Guangchuang, Li-Gen Wang, Guang-Rong Yan, and Qing-Yu He. 2015. “DOSE: An r/Bioconductor Package for Disease Ontology Semantic and Enrichment Analysis.” Bioinformatics 31 (4): 608–9. https://doi.org/10.1093/bioinformatics/btu684.