Introduction

Here we are comparing non-malignant vs malignant phyllodes samples.

Data provided by Prof Ruth Pidsley’s team.

Source code: https://github.com/markziemann/phyllodes_pathways

Gene set information provided by Reactome, Gene Ontology, and transcription factor targets from MsigDB.

Requirements

Load packages.

Important: ensure that the mitch version used is 1.15.0 (patched), 1.15.1 or higher.

devtools::install_github("markziemann/mitch") #get devel mitch

suppressPackageStartupMessages({
  library("limma")
  library("eulerr")
  library("IlluminaHumanMethylation450kanno.ilmn12.hg19")
  library("IlluminaHumanMethylationEPICanno.ilm10b4.hg19")
  library("HGNChelper")
  library("tictoc")
  library("mitch")
  library("kableExtra")
  library("beeswarm")
  library("missMethyl")
  library("gridExtra")
  library("png")
})

Load methylation data

The limma results are read in. Results from Meyer et al (PMID:38300122).

dm <- read.csv("Phyllodes_topTable.csv.gz",header=TRUE,row.names=1)

dim(dm)
## [1] 722950      9
head(dm)
##                  logFC    AveExpr          t    P.Value adj.P.Val         B
## cg00000103 -0.15742152 -1.0974082 -0.3747647 0.71024055 0.9918339 -5.238335
## cg00000109  0.04093016  1.1093811  0.1202041 0.90507542 0.9977811 -5.264622
## cg00000155  0.11957601  2.4638979  0.5842297 0.56305076 0.9865123 -5.161199
## cg00000158 -0.28276800  2.3744478 -0.9616803 0.34322562 0.9815375 -4.940397
## cg00000165 -1.10536550  0.5984195 -2.2890880 0.02862825 0.9087206 -3.443783
## cg00000221 -0.20409047  0.8348021 -0.7099382 0.48274450 0.9833988 -5.099152
##            meth_base  meth_alt   meth_delta
## cg00000103 0.3491598 0.3193451  0.029814658
## cg00000109 0.6703594 0.6737406 -0.003381181
## cg00000155 0.8387686 0.8492984 -0.010529792
## cg00000158 0.8365238 0.8110297  0.025494072
## cg00000165 0.6584762 0.4925376  0.165938636
## cg00000221 0.6448128 0.6137003  0.031112513

Note that this object has probes with their own column, not simply as row names.

Load pathways

reactome <- gmt_import("ReactomePathways_2024-03-10.gmt")

gobp <- gmt_import("c5.go.v2023.2.Hs.symbols.gmt")
gobp <- gobp[grep("GOBP_",names(gobp))]
names(gobp) <- gsub("_"," ",gsub("GOBP_","",names(gobp)))

tft <- gmt_import("c3.tft.gtrd.v2023.2.Hs.symbols.gmt")
names(tft) <- gsub("_"," ",names(tft))

Curate the annotation

Curate the table which matches probes to gene names.

It is important to update defunct gene symbols.

tic()
anno <- getAnnotation(IlluminaHumanMethylationEPICanno.ilm10b4.hg19)
myann <- data.frame(anno[,c("UCSC_RefGene_Name","UCSC_RefGene_Group","Islands_Name","Relation_to_Island")])
gp <- myann[,"UCSC_RefGene_Name",drop=FALSE]
gp2 <- strsplit(gp$UCSC_RefGene_Name,";")
names(gp2) <- rownames(gp)
gp2 <- lapply(gp2,unique)
gt <- stack(gp2)
colnames(gt) <- c("gene","probe")
gt$probe <- as.character(gt$probe)
dim(gt)
## [1] 684970      2
str(gt)
## 'data.frame':    684970 obs. of  2 variables:
##  $ gene : chr  "YTHDF1" "EIF2S3" "PKN3" "CCDC57" ...
##  $ probe: chr  "cg18478105" "cg09835024" "cg14361672" "cg01763666" ...
toc() #9.0s
## 16.899 sec elapsed
tic()
#new.hgnc.table <- getCurrentHumanMap()
new.hgnc.table <- readRDS("new.hgnc.table.rds")
fix <- checkGeneSymbols(gt$gene,map=new.hgnc.table)
## Warning in checkGeneSymbols(gt$gene, map = new.hgnc.table): Human gene symbols
## should be all upper-case except for the 'orf' in open reading frames. The case
## of some letters was corrected.
## Warning in checkGeneSymbols(gt$gene, map = new.hgnc.table): x contains
## non-approved gene symbols
fix2 <- fix[which(fix$x != fix$Suggested.Symbol),]
length(unique(fix2$x))
## [1] 3253
gt$gene <- fix$Suggested.Symbol
toc()
## 237.559 sec elapsed
head(gt)
##     gene      probe
## 1 YTHDF1 cg18478105
## 2 EIF2S3 cg09835024
## 3   PKN3 cg14361672
## 4 CCDC57 cg01763666
## 5   INF2 cg12950382
## 6  CDC16 cg02115394
str(gt)
## 'data.frame':    684970 obs. of  2 variables:
##  $ gene : chr  "YTHDF1" "EIF2S3" "PKN3" "CCDC57" ...
##  $ probe: chr  "cg18478105" "cg09835024" "cg14361672" "cg01763666" ...

Mitch pipeline

The first part is to import the data into mitch.

m <- mitch_import(x=dm,DEtype="limma",geneTable=gt)
## The input is a single dataframe; one contrast only. Converting
##         it to a list for you.
## Note: Mean no. genes in input = 722950
## Note: no. genes in output = 23030
## Warning in mitch_import(x = dm, DEtype = "limma", geneTable = gt): Warning: less than half of the input genes are also in the
##         output
head(m) %>%
  kbl(caption = "Differential gene methylation scores used for pathway analysis") %>%
  kable_paper("hover", full_width = F)
Differential gene methylation scores used for pathway analysis
x
A1BG -0.2987185
A1BG-AS1 -0.4355672
A1CF -0.0075548
A2M 0.2520922
A2M-AS1 -0.8309598
A2ML1 0.0785158

Now run the enrichment analysis.

Note that the results are not sorted by p-value, rather S.distance, an enrichment score. I think this works better for interpretation.

Reactome

Reactome is the first analysis.

The S distance is the enrichment score, which 0 means no chance and has a maximum of +1 and minimum of -1.

mres1 <- mitch_calc(x=m,genesets=reactome,minsetsize=5, priority="effect",cores=8)
## Note: Enrichments with large effect sizes may not be
##             statistically significant.
mtable1 <- mres1$enrichment_result
up <- subset(mtable1,s.dist>0 & p.adjustANOVA<0.05)
dn <- subset(mtable1,s.dist<0 & p.adjustANOVA<0.05)
nrow(up)
## [1] 10
nrow(dn)
## [1] 15
head(up,10) %>%
  kbl(caption = "Top significant pathways with higher methylation") %>%
  kable_paper("hover", full_width = F)
Top significant pathways with higher methylation
set setSize pANOVA s.dist p.adjustANOVA
573 Fatty acids 15 0.0000013 0.7223086 0.0005098
499 Eicosanoids 12 0.0000525 0.6741101 0.0070416
528 Expression and translocation of olfactory receptors 334 0.0000000 0.4984898 0.0000000
1124 Olfactory Signaling Pathway 342 0.0000000 0.4857232 0.0000000
159 Beta defensins 27 0.0000203 0.4736564 0.0048811
405 Defensins 35 0.0000057 0.4428876 0.0019255
118 Antimicrobial peptides 79 0.0000000 0.4209601 0.0000000
1585 Sensory Perception 558 0.0000000 0.2868942 0.0000000
332 Cytochrome P450 - arranged by substrate type 65 0.0002817 0.2604050 0.0288458
770 Immunoregulatory interactions between a Lymphoid and a non-Lymphoid cell 128 0.0000304 0.2134045 0.0050871
head(dn,10) %>%
  kbl(caption = "Top significant pathways with lower methylation") %>%
  kable_paper("hover", full_width = F)
Top significant pathways with lower methylation
set setSize pANOVA s.dist p.adjustANOVA
1047 NR1H3 & NR1H2 regulate gene expression linked to cholesterol transport and efflux 44 0.0003545 -0.3111598 0.0339462
1046 NR1H2 and NR1H3-mediated signaling 54 0.0001371 -0.2999281 0.0162158
247 Cell junction organization 117 0.0002357 -0.1967636 0.0263317
363 Death Receptor Signaling 154 0.0001134 -0.1801684 0.0142503
195 CDC42 GTPase cycle 153 0.0004602 -0.1640361 0.0402335
273 Chromatin modifying enzymes 229 0.0005931 -0.1316908 0.0477082
274 Chromatin organization 229 0.0005931 -0.1316908 0.0477082
1667 Signaling by Nuclear Receptors 267 0.0003746 -0.1264188 0.0342378
945 Metabolism of carbohydrates 298 0.0002869 -0.1220823 0.0288458
1299 RHO GTPase cycle 444 0.0000422 -0.1132904 0.0060593

Now make a barplot of these top findings.

top <- rbind(up[1:10,],dn[1:10,])
top <- top[order(top$s.dist),]

barnames <- gsub("_"," ",top$set)
cols <- as.character(((sign(top$s.dist)+1)/2)+1)
cols <- gsub("1","blue",gsub("2","red",cols))

par(mar = c(5.1, 29.1, 4.1, 2.1))
barplot(abs(top$s.dist),horiz=TRUE,las=1,names.arg=barnames, cex.names=0.8,
  cex.axis=0.8,col=cols, xlab="Enrichment score",main="Reactomes")
grid()

par( mar = c(5.1, 4.1, 4.1, 2.1) )

GO Biological Process

GOBP is a larger annotation set.

It looks like defensins are increased in methylation, while some lipid processes are reduced.

mres2 <- mitch_calc(x=m,genesets=gobp,minsetsize=5, priority="effect",cores=8)
## Note: Enrichments with large effect sizes may not be
##             statistically significant.
mtable2 <- mres2$enrichment_result
up <- subset(mtable2,s.dist>0 & p.adjustANOVA<0.05)
dn <- subset(mtable2,s.dist<0 & p.adjustANOVA<0.05)
nrow(up)
## [1] 22
nrow(dn)
## [1] 87
head(up,10) %>%
  kbl(caption = "Top significant GO BPs with higher methylation") %>%
  kable_paper("hover", full_width = F)
Top significant GO BPs with higher methylation
set setSize pANOVA s.dist p.adjustANOVA
1165 DISRUPTION OF PLASMA MEMBRANE INTEGRITY IN ANOTHER ORGANISM 6 0.0001008 0.9165943 0.0137146
1164 DISRUPTION OF CELLULAR ANATOMICAL STRUCTURE IN ANOTHER ORGANISM 10 0.0000037 0.8452997 0.0010075
4594 POSITIVE REGULATION OF PEPTIDYL SERINE PHOSPHORYLATION OF STAT PROTEIN 14 0.0001611 0.5823402 0.0180179
6974 SERINE PHOSPHORYLATION OF STAT PROTEIN 18 0.0000980 0.5302644 0.0135837
6956 SENSORY PERCEPTION OF SMELL 360 0.0000000 0.4645606 0.0000000
6952 SENSORY PERCEPTION OF CHEMICAL STIMULUS 435 0.0000000 0.4051028 0.0000000
1104 DETECTION OF STIMULUS INVOLVED IN SENSORY PERCEPTION 451 0.0000000 0.3994080 0.0000000
1039 DEFENSE RESPONSE TO FUNGUS 53 0.0000031 0.3702792 0.0009435
6182 REGULATION OF PRESYNAPTIC MEMBRANE POTENTIAL 29 0.0005621 0.3700064 0.0412113
1103 DETECTION OF STIMULUS 574 0.0000000 0.3025920 0.0000000
head(dn,10) %>%
  kbl(caption = "Top significant GO BPs with lower methylation") %>%
  kable_paper("hover", full_width = F)
Top significant GO BPs with lower methylation
set setSize pANOVA s.dist p.adjustANOVA
5024 PROTEIN LIPID COMPLEX ASSEMBLY 30 0.0001258 -0.4044174 0.0158901
3895 PHOSPHATIDYLCHOLINE BIOSYNTHETIC PROCESS 29 0.0001765 -0.4023108 0.0188955
6141 REGULATION OF PHOSPHOLIPID METABOLIC PROCESS 34 0.0006470 -0.3379744 0.0461074
1866 HISTONE METHYLATION 38 0.0004448 -0.3291694 0.0385442
3202 NEGATIVE REGULATION OF MUSCLE CELL APOPTOTIC PROCESS 50 0.0002914 -0.2960957 0.0277772
2539 MIRNA MEDIATED GENE SILENCING BY MRNA DESTABILIZATION 64 0.0000593 -0.2901783 0.0098236
1551 FIBROBLAST MIGRATION 53 0.0005164 -0.2756514 0.0394998
6467 REGULATION OF TUMOR NECROSIS FACTOR MEDIATED SIGNALING PATHWAY 58 0.0004917 -0.2645289 0.0390603
4008 POSITIVE REGULATION OF ACTIN FILAMENT BUNDLE ASSEMBLY 61 0.0005818 -0.2546090 0.0422470
3897 PHOSPHATIDYLCHOLINE METABOLIC PROCESS 76 0.0001901 -0.2475317 0.0198552

These results are more interesting than the reactome ones.

Now make a barplot of these top findings.

top <- rbind(up[1:10,],dn[1:10,])
top <- top[order(top$s.dist),]

barnames <- gsub("_"," ",top$set)
cols <- as.character(((sign(top$s.dist)+1)/2)+1)
cols <- gsub("1","blue",gsub("2","red",cols))

par(mar = c(5.1, 29.1, 4.1, 2.1))
barplot(abs(top$s.dist),horiz=TRUE,las=1,names.arg=barnames, cex.names=0.8,
  cex.axis=0.8,col=cols, xlab="Enrichment score",main="GO Biological Processes")
grid()

par( mar = c(5.1, 4.1, 4.1, 2.1) )

Transcription factor targets

Might give some clues about potential mechanisms.

RBMX and NEUROD are interesting, but they are relatively small sets, however NFKBIA is more interesting.

mres3 <- mitch_calc(x=m,genesets=tft,minsetsize=5, priority="effect",cores=8)
## Note: Enrichments with large effect sizes may not be
##             statistically significant.
mtable3 <- mres3$enrichment_result
up <- subset(mtable3,s.dist>0 & p.adjustANOVA<0.05)
dn <- subset(mtable3,s.dist<0 & p.adjustANOVA<0.05)
nrow(up)
## [1] 12
nrow(dn)
## [1] 119
head(up,10) %>%
  kbl(caption = "Top significant transcription factor target sets with higher methylation") %>%
  kable_paper("hover", full_width = F)
Top significant transcription factor target sets with higher methylation
set setSize pANOVA s.dist p.adjustANOVA
245 RBMX TARGET GENES 5 0.0074898 0.6905451 0.0303397
260 SIGMAR1 TARGET GENES 13 0.0123605 0.4006971 0.0464946
13 ASXL2 TARGET GENES 44 0.0001762 0.3267562 0.0011966
309 TRIP13 TARGET GENES 89 0.0044128 0.1745675 0.0187642
46 CHAMP1 TARGET GENES 185 0.0002944 0.1542766 0.0017993
131 HSD17B8 TARGET GENES 607 0.0000008 0.1174574 0.0000097
404 ZNF486 TARGET GENES 187 0.0062200 0.1159807 0.0257761
282 SRSF9 TARGET GENES 709 0.0000055 0.1001168 0.0000556
117 HMGA1 TARGET GENES 840 0.0000011 0.0990078 0.0000133
236 PSMB5 TARGET GENES 289 0.0122206 0.0856362 0.0463245
head(dn,10) %>%
  kbl(caption = "Top significant transcription factor target sets with lower methylation") %>%
  kable_paper("hover", full_width = F)
Top significant transcription factor target sets with lower methylation
set setSize pANOVA s.dist p.adjustANOVA
187 NEUROD2 TARGET GENES 5 0.0023905 -0.7841650 0.0110279
422 ZNF544 TARGET GENES 6 0.0033997 -0.6904534 0.0147119
180 MYF6 TARGET GENES 13 0.0124732 -0.4001825 0.0465602
352 ZNF16 TARGET GENES 73 0.0000290 -0.2829286 0.0002536
264 SIX4 TARGET GENES 41 0.0021885 -0.2764493 0.0105957
191 NFKBIA TARGET GENES 1109 0.0000000 -0.2698367 0.0000000
17 ATOH8 TARGET GENES 44 0.0023254 -0.2652899 0.0108299
161 MCM2 TARGET GENES 81 0.0000444 -0.2623891 0.0003555
401 ZNF436 TARGET GENES 465 0.0000000 -0.2525475 0.0000000
234 PRMT5 TARGET GENES 84 0.0000904 -0.2470542 0.0006694

Now make a barplot of these top findings.

top <- rbind(up[1:10,],dn[1:10,])
top <- top[order(top$s.dist),]

barnames <- gsub("_"," ",top$set)
cols <- as.character(((sign(top$s.dist)+1)/2)+1)
cols <- gsub("1","blue",gsub("2","red",cols))

par(mar = c(5.1, 29.1, 4.1, 2.1))
barplot(abs(top$s.dist),horiz=TRUE,las=1,names.arg=barnames, cex.names=0.8,
  cex.axis=0.8,col=cols, xlab="Enrichment score",main="Transcription factor target sets")
grid()

par( mar = c(5.1, 4.1, 4.1, 2.1) )

Output reports and charts

Make a html report and some charts.

mitch_report(res=mres1,outfile="reactome_mitchreport.html",overwrite=TRUE)
## Note: overwriting existing report
## Dataset saved as " /tmp/Rtmp9nQ3Ri/reactome_mitchreport.rds ".
## 
## 
## processing file: mitch.Rmd
## 1/34                             
## 2/34 [checklibraries]            
## 3/34                             
## 4/34 [peek]                      
## 5/34                             
## 6/34 [metrics]                   
## 7/34                             
## 8/34 [scatterplot]
## 9/34                             
## 10/34 [contourplot]               
## 11/34                             
## 12/34 [input_geneset_metrics1]    
## 13/34                             
## 14/34 [input_geneset_metrics2]
## 15/34                             
## 16/34 [input_geneset_metrics3]
## 17/34                             
## 18/34 [echart1d]                  
## 19/34 [echart2d]                  
## 20/34                             
## 21/34 [heatmap]                   
## 22/34                             
## 23/34 [effectsize]                
## 24/34                             
## 25/34 [results_table]             
## 26/34                             
## 27/34 [results_table_complete]    
## 28/34                             
## 29/34 [detailed_geneset_reports1d]
## 30/34                             
## 31/34 [detailed_geneset_reports2d]
## 32/34                             
## 33/34 [session_info]              
## 34/34
## output file: /mnt/mitch.knit.md
## /usr/local/bin/pandoc +RTS -K512m -RTS /mnt/mitch.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output /tmp/Rtmp9nQ3Ri/mitch_report.html --lua-filter /usr/local/lib/R/site-library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /usr/local/lib/R/site-library/rmarkdown/rmarkdown/lua/latex-div.lua --embed-resources --standalone --variable bs3=TRUE --section-divs --template /usr/local/lib/R/site-library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --variable theme=bootstrap --mathjax --variable 'mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --include-in-header /tmp/Rtmp9nQ3Ri/rmarkdown-str5d17ce740ad.html
## 
## Output created: /tmp/Rtmp9nQ3Ri/mitch_report.html
## [1] TRUE
mitch_plots(res=mres1,outfile="reactome_mitchcharts.pdf")
## png 
##   2
mitch_report(res=mres2,outfile="gobp_mitchreport.html",overwrite=TRUE)
## Note: overwriting existing report
## Dataset saved as " /tmp/Rtmp9nQ3Ri/gobp_mitchreport.rds ".
## 
## 
## processing file: mitch.Rmd
## 1/34                             
## 2/34 [checklibraries]            
## 3/34                             
## 4/34 [peek]                      
## 5/34                             
## 6/34 [metrics]                   
## 7/34                             
## 8/34 [scatterplot]
## 9/34                             
## 10/34 [contourplot]               
## 11/34                             
## 12/34 [input_geneset_metrics1]    
## 13/34                             
## 14/34 [input_geneset_metrics2]
## 15/34                             
## 16/34 [input_geneset_metrics3]
## 17/34                             
## 18/34 [echart1d]                  
## 19/34 [echart2d]                  
## 20/34                             
## 21/34 [heatmap]                   
## 22/34                             
## 23/34 [effectsize]                
## 24/34                             
## 25/34 [results_table]             
## 26/34                             
## 27/34 [results_table_complete]    
## 28/34                             
## 29/34 [detailed_geneset_reports1d]
## 30/34                             
## 31/34 [detailed_geneset_reports2d]
## 32/34                             
## 33/34 [session_info]              
## 34/34
## output file: /mnt/mitch.knit.md
## /usr/local/bin/pandoc +RTS -K512m -RTS /mnt/mitch.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output /tmp/Rtmp9nQ3Ri/mitch_report.html --lua-filter /usr/local/lib/R/site-library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /usr/local/lib/R/site-library/rmarkdown/rmarkdown/lua/latex-div.lua --embed-resources --standalone --variable bs3=TRUE --section-divs --template /usr/local/lib/R/site-library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --variable theme=bootstrap --mathjax --variable 'mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --include-in-header /tmp/Rtmp9nQ3Ri/rmarkdown-str5d1543430e8.html
## 
## Output created: /tmp/Rtmp9nQ3Ri/mitch_report.html
## [1] TRUE
mitch_plots(res=mres2,outfile="gobp_mitchcharts.pdf")
## png 
##   2
mitch_report(res=mres3,outfile="tft_mitchreport.html",overwrite=TRUE)
## Note: overwriting existing report
## Dataset saved as " /tmp/Rtmp9nQ3Ri/tft_mitchreport.rds ".
## 
## 
## processing file: mitch.Rmd
## 1/34                             
## 2/34 [checklibraries]            
## 3/34                             
## 4/34 [peek]                      
## 5/34                             
## 6/34 [metrics]                   
## 7/34                             
## 8/34 [scatterplot]
## 9/34                             
## 10/34 [contourplot]               
## 11/34                             
## 12/34 [input_geneset_metrics1]    
## 13/34                             
## 14/34 [input_geneset_metrics2]
## 15/34                             
## 16/34 [input_geneset_metrics3]
## 17/34                             
## 18/34 [echart1d]                  
## 19/34 [echart2d]                  
## 20/34                             
## 21/34 [heatmap]                   
## 22/34                             
## 23/34 [effectsize]                
## 24/34                             
## 25/34 [results_table]             
## 26/34                             
## 27/34 [results_table_complete]    
## 28/34                             
## 29/34 [detailed_geneset_reports1d]
## 30/34                             
## 31/34 [detailed_geneset_reports2d]
## 32/34                             
## 33/34 [session_info]              
## 34/34
## output file: /mnt/mitch.knit.md
## /usr/local/bin/pandoc +RTS -K512m -RTS /mnt/mitch.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output /tmp/Rtmp9nQ3Ri/mitch_report.html --lua-filter /usr/local/lib/R/site-library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /usr/local/lib/R/site-library/rmarkdown/rmarkdown/lua/latex-div.lua --embed-resources --standalone --variable bs3=TRUE --section-divs --template /usr/local/lib/R/site-library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --variable theme=bootstrap --mathjax --variable 'mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --include-in-header /tmp/Rtmp9nQ3Ri/rmarkdown-str5d1158b7ea3.html
## 
## Output created: /tmp/Rtmp9nQ3Ri/mitch_report.html
## [1] TRUE
mitch_plots(res=mres3,outfile="tft_mitchcharts.pdf")
## png 
##   2

Session information

sessionInfo()
## R version 4.3.2 (2023-10-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Etc/UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] pkgload_1.3.3                                      
##  [2] GGally_2.2.0                                       
##  [3] ggplot2_3.4.4                                      
##  [4] reshape2_1.4.4                                     
##  [5] gplots_3.1.3                                       
##  [6] gtools_3.9.5                                       
##  [7] tibble_3.2.1                                       
##  [8] dplyr_1.1.4                                        
##  [9] echarts4r_0.4.5                                    
## [10] png_0.1-8                                          
## [11] gridExtra_2.3                                      
## [12] missMethyl_1.36.0                                  
## [13] beeswarm_0.4.0                                     
## [14] kableExtra_1.3.4                                   
## [15] tictoc_1.2                                         
## [16] HGNChelper_0.8.1                                   
## [17] IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0
## [18] IlluminaHumanMethylation450kanno.ilmn12.hg19_0.6.1 
## [19] minfi_1.48.0                                       
## [20] bumphunter_1.44.0                                  
## [21] locfit_1.5-9.8                                     
## [22] iterators_1.0.14                                   
## [23] foreach_1.5.2                                      
## [24] Biostrings_2.70.1                                  
## [25] XVector_0.42.0                                     
## [26] SummarizedExperiment_1.32.0                        
## [27] Biobase_2.62.0                                     
## [28] MatrixGenerics_1.14.0                              
## [29] matrixStats_1.2.0                                  
## [30] GenomicRanges_1.54.1                               
## [31] GenomeInfoDb_1.38.2                                
## [32] IRanges_2.36.0                                     
## [33] S4Vectors_0.40.2                                   
## [34] BiocGenerics_0.48.1                                
## [35] eulerr_7.0.0                                       
## [36] limma_3.58.1                                       
## [37] mitch_1.15.2                                       
## 
## loaded via a namespace (and not attached):
##   [1] splines_4.3.2             later_1.3.2              
##   [3] BiocIO_1.12.0             bitops_1.0-7             
##   [5] filelock_1.0.3            preprocessCore_1.64.0    
##   [7] XML_3.99-0.16             lifecycle_1.0.4          
##   [9] lattice_0.22-5            MASS_7.3-60              
##  [11] base64_2.0.1              scrime_1.3.5             
##  [13] magrittr_2.0.3            sass_0.4.8               
##  [15] rmarkdown_2.25            jquerylib_0.1.4          
##  [17] yaml_2.3.8                httpuv_1.6.13            
##  [19] askpass_1.2.0             doRNG_1.8.6              
##  [21] DBI_1.1.3                 RColorBrewer_1.1-3       
##  [23] abind_1.4-5               zlibbioc_1.48.0          
##  [25] quadprog_1.5-8            rvest_1.0.3              
##  [27] purrr_1.0.2               RCurl_1.98-1.13          
##  [29] rappdirs_0.3.3            GenomeInfoDbData_1.2.11  
##  [31] genefilter_1.84.0         annotate_1.80.0          
##  [33] svglite_2.1.3             DelayedMatrixStats_1.24.0
##  [35] codetools_0.2-19          DelayedArray_0.28.0      
##  [37] xml2_1.3.6                tidyselect_1.2.0         
##  [39] beanplot_1.3.1            BiocFileCache_2.10.1     
##  [41] illuminaio_0.44.0         webshot_0.5.5            
##  [43] GenomicAlignments_1.38.0  jsonlite_1.8.8           
##  [45] multtest_2.58.0           ellipsis_0.3.2           
##  [47] survival_3.5-7            systemfonts_1.0.5        
##  [49] tools_4.3.2               progress_1.2.3           
##  [51] Rcpp_1.0.11               glue_1.6.2               
##  [53] SparseArray_1.2.2         xfun_0.41                
##  [55] HDF5Array_1.30.0          withr_2.5.2              
##  [57] fastmap_1.1.1             rhdf5filters_1.14.1      
##  [59] fansi_1.0.6               openssl_2.1.1            
##  [61] caTools_1.18.2            digest_0.6.33            
##  [63] R6_2.5.1                  mime_0.12                
##  [65] colorspace_2.1-0          biomaRt_2.58.0           
##  [67] RSQLite_2.3.4             utf8_1.2.4               
##  [69] tidyr_1.3.0               generics_0.1.3           
##  [71] data.table_1.14.10        rtracklayer_1.62.0       
##  [73] prettyunits_1.2.0         httr_1.4.7               
##  [75] htmlwidgets_1.6.4         S4Arrays_1.2.0           
##  [77] ggstats_0.5.1             pkgconfig_2.0.3          
##  [79] gtable_0.3.4              blob_1.2.4               
##  [81] siggenes_1.76.0           htmltools_0.5.7          
##  [83] scales_1.3.0              knitr_1.45               
##  [85] rstudioapi_0.15.0         tzdb_0.4.0               
##  [87] rjson_0.2.21              nlme_3.1-163             
##  [89] curl_5.2.0                org.Hs.eg.db_3.18.0      
##  [91] cachem_1.0.8              rhdf5_2.46.1             
##  [93] stringr_1.5.1             KernSmooth_2.23-22       
##  [95] AnnotationDbi_1.64.1      restfulr_0.0.15          
##  [97] GEOquery_2.70.0           pillar_1.9.0             
##  [99] grid_4.3.2                reshape_0.8.9            
## [101] vctrs_0.6.5               promises_1.2.1           
## [103] dbplyr_2.4.0              xtable_1.8-4             
## [105] evaluate_0.23             readr_2.1.4              
## [107] GenomicFeatures_1.54.1    cli_3.6.2                
## [109] compiler_4.3.2            Rsamtools_2.18.0         
## [111] rlang_1.1.2               crayon_1.5.2             
## [113] rngtools_1.5.2            nor1mix_1.3-2            
## [115] mclust_6.0.1              plyr_1.8.9               
## [117] stringi_1.8.3             viridisLite_0.4.2        
## [119] BiocParallel_1.36.0       munsell_0.5.0            
## [121] Matrix_1.6-1.1            hms_1.1.3                
## [123] sparseMatrixStats_1.14.0  bit64_4.0.5              
## [125] Rhdf5lib_1.24.1           KEGGREST_1.42.0          
## [127] statmod_1.5.0             shiny_1.8.0              
## [129] highr_0.10                memoise_2.0.1            
## [131] bslib_0.6.1               bit_4.0.5