Introduction

Here we are looking at putting together the easiest possible workflow for the package.

Source code: https://github.com/markziemann/gmea/blob/main/figs/GSE158422_pkgdev.Rmd

Requirements

Load packages.

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

CORES=24

Load data

Reactome pathways were downloaded on the 14th Sept 2023 from MsigDB.

if (!file.exists("GSE158422_design.rds")) {
  download.file("https://ziemann-lab.net/public/gmea_prototype/GSE158422_design.rds", "GSE158422_design.rds")
}
design <- readRDS("GSE158422_design.rds")

if (!file.exists("GSE158422_design.rds")) {
 download.file("https://ziemann-lab.net/public/gmea_prototype/GSE158422_mx.rds","GSE158422_mx.rds")
}
mval <- readRDS("GSE158422_mx.rds")

gs_symbols <- gmt_import("c2.cp.reactome.v2023.1.Hs.symbols.gmt")

Curate the annotation

Use all probes on the chip.

Updating gene names using the HGNC package because a lot of them have been updated over time.

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.775 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()
## 101.017 sec elapsed

AL GMEA: all probes

Start with curating the sample info and design matrix.

sex <- as.data.frame(design)$sex
tumor <- as.data.frame(design)$tumor
patient <- as.character(unlist(lapply(1:ncol(mval),function(i) {c(i,i)})))
patient <- head(patient,ncol(mval))
design <- model.matrix(~ patient + tumor )

Prep limma

Here we conduct a differential analysis using limma.

tic()
fit.reduced <- lmFit(mval,design)
fit.reduced <- eBayes(fit.reduced)
dm <- topTable(fit.reduced,coef=ncol(design), number = Inf)
head(dm) %>%
  kbl(caption = "Top significant probes") %>%
  kable_paper("hover", full_width = F)
Top significant probes
logFC AveExpr t P.Value adj.P.Val B
cg09792881 2.665975 -2.378207 13.96817 0 0 28.32697
cg10512745 2.947029 -2.653537 13.82913 0 0 28.01071
cg16732616 3.038300 -2.276311 13.63501 0 0 27.56509
cg17094249 -1.689047 -1.559014 -13.45369 0 0 27.14446
cg02084219 -1.669232 -1.612728 -13.36646 0 0 26.94058
cg17627973 1.242911 1.462876 13.29508 0 0 26.77302
toc() #25.53, 25.50, 25.51
## 24.155 sec elapsed

Merge gene name and aggregate

This only works properly when mitch’s mapGeneIds function uses mean to aggregate (line 69 of mitch.R).

# mitch aggregate function needs to be changes to `mean`
tic()
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 = 839473
## Note: no. genes in output = 22633
## Warning in mitch_import(x = dm, DEtype = "limma", geneTable = gt): Warning: less than half of the input genes are also in the
##         output
toc() #9.58s, 9.71, 9.69
## 9.745 sec elapsed
head(m) %>%
  kbl(caption = "Example of differential gene methylation scores used for pathway analysis") %>%
  kable_paper("hover", full_width = F)
Example of differential gene methylation scores used for pathway analysis
x
A1BG 2.247889
A1BG-AS1 1.535073
A1CF -5.216983
A2M -1.420111
A2M-AS1 -2.201265
A2ML1 -2.534895
tic()
mres <- mitch_calc(x=m,genesets=gs_symbols,minsetsize=5,cores=16, priority="effect")
## Note: Enrichments with large effect sizes may not be
##             statistically significant.
toc() #10.92, 10.733, 10.91
## 7.525 sec elapsed
mtable <- mres$enrichment_result
up <- subset(mtable,s.dist>0 & p.adjustANOVA<0.05)
dn <- subset(mtable,s.dist<0 & p.adjustANOVA<0.05)
nrow(up)
## [1] 370
nrow(dn)
## [1] 36
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
422 REACTOME_REGULATION_OF_GENE_EXPRESSION_IN_EARLY_PANCREATIC_PRECURSOR_CELLS 8 0.0000150 0.8837017 0.0001807
1614 REACTOME_FORMATION_OF_LATERAL_PLATE_MESODERM 5 0.0007870 0.8668906 0.0054759
512 REACTOME_FBXW7_MUTANTS_AND_NOTCH1_IN_CANCER 5 0.0093968 0.6706735 0.0404616
65 REACTOME_ENDOSOMAL_VACUOLAR_PATHWAY 11 0.0001825 0.6515138 0.0016553
429 REACTOME_VITAMINS 6 0.0065132 0.6413577 0.0297073
1350 REACTOME_INTERLEUKIN_9_SIGNALING 7 0.0063199 0.5959642 0.0289063
419 REACTOME_REGULATION_OF_GENE_EXPRESSION_IN_LATE_STAGE_BRANCHING_MORPHOGENESIS_PANCREATIC_BUD_PRECURSOR_CELLS 15 0.0000782 0.5889351 0.0007975
525 REACTOME_POU5F1_OCT4_SOX2_NANOG_REPRESS_GENES_RELATED_TO_DIFFERENTIATION 10 0.0012932 0.5875260 0.0081984
59 REACTOME_REGULATION_OF_GENE_EXPRESSION_BY_HYPOXIA_INDUCIBLE_FACTOR 11 0.0008068 0.5833420 0.0055660
657 REACTOME_ADRENOCEPTORS 9 0.0033716 0.5642877 0.0178585
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
628 REACTOME_OLFACTORY_SIGNALING_PATHWAY 372 0.0000000 -0.8202892 0.0000000
110 REACTOME_BETA_DEFENSINS 37 0.0000000 -0.8126719 0.0000000
1055 REACTOME_METAL_SEQUESTRATION_BY_ANTIMICROBIAL_PROTEINS 6 0.0006322 -0.8055421 0.0046134
301 REACTOME_DIGESTION_OF_DIETARY_CARBOHYDRATE 10 0.0000109 -0.8031826 0.0001353
1007 REACTOME_CD22_MEDIATED_BCR_REGULATION 5 0.0030659 -0.7645925 0.0164091
111 REACTOME_DEFENSINS 46 0.0000000 -0.7625606 0.0000000
971 REACTOME_MELANIN_BIOSYNTHESIS 5 0.0060595 -0.7086972 0.0280272
1060 REACTOME_ANTIMICROBIAL_PEPTIDES 89 0.0000000 -0.6720620 0.0000000
145 REACTOME_AMINO_ACID_CONJUGATION 9 0.0007054 -0.6520018 0.0050360
1415 REACTOME_BIOSYNTHESIS_OF_MARESIN_LIKE_SPMS 6 0.0094041 -0.6121890 0.0404616
top <- rbind(up[1:10,],dn[1:10,])
top <- top[order(top$s.dist),]

barnames <- gsub("_"," ",gsub("REACTOME_","",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")
mtext("whole gene")
grid()

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

Make a html report and some charts.

mitch_report(res=mres,outfile="GSE158422_pkgdev_mitchreport.html",overwrite=TRUE)
## Note: overwriting existing report
## Dataset saved as " /tmp/Rtmp374vyR/GSE158422_pkgdev_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: /home/mdz/projects/gmea/figs/mitch.knit.md
## /usr/bin/pandoc +RTS -K512m -RTS /home/mdz/projects/gmea/figs/mitch.knit.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output /tmp/Rtmp374vyR/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 --self-contained --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/Rtmp374vyR/rmarkdown-str12766660db727.html
## 
## Output created: /tmp/Rtmp374vyR/mitch_report.html
## [1] TRUE
mitch_plots(res=mres,outfile="GSE158422_pkgdev_mitchcharts.pdf")
## png 
##   2

Promoter only analysis

Now do the same but filter for promoters. Using the UCSC_RefGene_Name field of the annotation and using TSS probes only.

head(myann) %>%
  kbl(caption = "This is what the annotation looks like") %>%
  kable_paper("hover", full_width = F)
This is what the annotation looks like
UCSC_RefGene_Name UCSC_RefGene_Group Islands_Name Relation_to_Island
cg18478105 YTHDF1 TSS200 chr20:61846843-61848103 Island
cg09835024 EIF2S3 TSS1500 chrX:24072558-24073135 Island
cg14361672 PKN3 TSS1500 chr9:131464843-131465830 N_Shore
cg01763666 CCDC57 Body OpenSea
cg12950382 INF2;INF2 Body;Body OpenSea
cg02115394 CDC16;CDC16 TSS200;TSS200 chr13:115000148-115000874 Island
table(unlist(strsplit(myann$UCSC_RefGene_Group,";")))
## 
## 1stExon   3'UTR   5'UTR    Body ExonBnd TSS1500  TSS200 
##   70366   39553  200962  709569   16535  200780  121655
# promoter prep
tic()
keep=c("TSS200","TSS1500")
annos <- strsplit(myann$UCSC_RefGene_Group,";")
genes <- strsplit(myann$UCSC_RefGene_Name,";")
keeps <- lapply(1:nrow(myann), function(i) {
  unique(genes[[i]][annos[[i]] %in% keep])
})
names(keeps) <- rownames(myann)
gt2 <- stack(keeps)
colnames(gt2) <- c("gene","probe")
toc() #15.4 16.2 20.3
## 17.533 sec elapsed
# fix gene symbols
tic()
fix <- checkGeneSymbols(gt2$gene,map=new.hgnc.table)
## Warning in checkGeneSymbols(gt2$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(gt2$gene, map = new.hgnc.table): x contains
## non-approved gene symbols
fix2 <- fix[which(fix$x != fix$Suggested.Symbol),]
length(unique(fix2$x))
## [1] 3093
gt2$gene <- fix$Suggested.Symbol
toc()
## 38.071 sec elapsed
tic()
# need to remove probes not associated to promoters
dm2 <- dm[(which(rownames(dm) %in% gt2$probe)),]
m2 <- mitch_import(x=dm2,DEtype="limma",geneTable=gt2)
## The input is a single dataframe; one contrast only. Converting
##         it to a list for you.
## Note: Mean no. genes in input = 188962
## Note: no. genes in output = 21942
## Note: estimated proportion of input genes in output = 0.116
toc() #9.68, 9.78, 9.62
## 2.627 sec elapsed
head(m2) %>%
  kbl(caption = "This is what the differential methylation scores look like") %>%
  kable_paper("hover", full_width = F)
This is what the differential methylation scores look like
x
A1BG -1.6893930
A1BG-AS1 7.4749338
A1CF -5.5418729
A2M 2.1354129
A2ML1 -0.7887281
A2MP1 -3.4129398
dim(m2)
## [1] 21942     1
tic()
mres <- mitch_calc(x=m2,genesets=gs_symbols,minsetsize=5,cores=16, priority="effect")
## Note: Enrichments with large effect sizes may not be
##             statistically significant.
toc() #11.12, 10.99, 11.01
## 7.703 sec elapsed
mtable <- mres$enrichment_result
up <- subset(mtable,s.dist>0 & p.adjustANOVA<0.05)
dn <- subset(mtable,s.dist<0 & p.adjustANOVA<0.05)
nrow(up)
## [1] 205
nrow(dn)
## [1] 34
head(up,10) %>%
  kbl(caption = "Top significant pathways with increased promoter methylation") %>%
  kable_paper("hover", full_width = F)
Top significant pathways with increased promoter methylation
set setSize pANOVA s.dist p.adjustANOVA
422 REACTOME_REGULATION_OF_GENE_EXPRESSION_IN_EARLY_PANCREATIC_PRECURSOR_CELLS 8 0.0000148 0.8843120 0.0005156
1613 REACTOME_FORMATION_OF_LATERAL_PLATE_MESODERM 5 0.0021550 0.7922050 0.0209248
710 REACTOME_CASPASE_ACTIVATION_VIA_DEPENDENCE_RECEPTORS_IN_THE_ABSENCE_OF_LIGAND 9 0.0004436 0.6761045 0.0064413
1308 REACTOME_RUNX3_REGULATES_YAP1_MEDIATED_TRANSCRIPTION 8 0.0012209 0.6602079 0.0133564
656 REACTOME_ADRENOCEPTORS 9 0.0007581 0.6481912 0.0092437
584 REACTOME_DEFECTIVE_CHST3_CAUSES_SEDCJD 7 0.0035519 0.6362760 0.0306776
340 REACTOME_VEGF_LIGAND_RECEPTOR_INTERACTIONS 7 0.0043090 0.6230030 0.0346624
402 REACTOME_YAP1_AND_WWTR1_TAZ_STIMULATED_GENE_EXPRESSION 15 0.0000340 0.6180234 0.0009295
662 REACTOME_PROSTANOID_LIGAND_RECEPTORS 9 0.0013899 0.6153032 0.0149072
742 REACTOME_REGULATION_OF_COMMISSURAL_AXON_PATHFINDING_BY_SLIT_AND_ROBO 10 0.0007783 0.6136148 0.0092556
head(dn,10) %>%
  kbl(caption = "Top significant pathways with lower promoter methylation") %>%
  kable_paper("hover", full_width = F)
Top significant pathways with lower promoter methylation
set setSize pANOVA s.dist p.adjustANOVA
1054 REACTOME_METAL_SEQUESTRATION_BY_ANTIMICROBIAL_PROTEINS 6 0.0003670 -0.8397915 0.0058467
1006 REACTOME_CD22_MEDIATED_BCR_REGULATION 5 0.0019146 -0.8012855 0.0190412
110 REACTOME_BETA_DEFENSINS 37 0.0000000 -0.7904662 0.0000000
628 REACTOME_OLFACTORY_SIGNALING_PATHWAY 354 0.0000000 -0.7803852 0.0000000
111 REACTOME_DEFENSINS 46 0.0000000 -0.7365550 0.0000000
301 REACTOME_DIGESTION_OF_DIETARY_CARBOHYDRATE 10 0.0000731 -0.7241838 0.0016871
499 REACTOME_INTERACTION_WITH_CUMULUS_CELLS_AND_THE_ZONA_PELLUCIDA 11 0.0001264 -0.6673948 0.0025929
1059 REACTOME_ANTIMICROBIAL_PEPTIDES 89 0.0000000 -0.6588060 0.0000000
1414 REACTOME_BIOSYNTHESIS_OF_MARESIN_LIKE_SPMS 6 0.0052566 -0.6578835 0.0395695
782 REACTOME_TYPE_I_HEMIDESMOSOME_ASSEMBLY 11 0.0005761 -0.5993882 0.0074438
top <- rbind(up[1:10,],dn[1:10,])
top<- top[order(top$s.dist),]

barnames <- gsub("_"," ",gsub("REACTOME_","",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")
mtext("promoter only")
grid()

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

Session information

save.image("GSE158422_pkgdev.Rdata")

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/blas/libblas.so.3.10.0 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.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: Australia/Melbourne
## 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.1.2                                       
##  [3] ggplot2_3.4.4                                      
##  [4] reshape2_1.4.4                                     
##  [5] gplots_3.1.3                                       
##  [6] gtools_3.9.4                                       
##  [7] tibble_3.2.1                                       
##  [8] dplyr_1.1.3                                        
##  [9] echarts4r_0.4.5                                    
## [10] png_0.1-8                                          
## [11] gridExtra_2.3                                      
## [12] missMethyl_1.36.0                                  
## [13] IlluminaHumanMethylation450kanno.ilmn12.hg19_0.6.1 
## [14] beeswarm_0.4.0                                     
## [15] kableExtra_1.3.4                                   
## [16] mitch_1.15.0                                       
## [17] tictoc_1.2                                         
## [18] HGNChelper_0.8.1                                   
## [19] IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0
## [20] IlluminaHumanMethylation450kmanifest_0.4.0         
## [21] minfi_1.48.0                                       
## [22] bumphunter_1.44.0                                  
## [23] locfit_1.5-9.8                                     
## [24] iterators_1.0.14                                   
## [25] foreach_1.5.2                                      
## [26] Biostrings_2.70.1                                  
## [27] XVector_0.42.0                                     
## [28] SummarizedExperiment_1.32.0                        
## [29] Biobase_2.62.0                                     
## [30] MatrixGenerics_1.14.0                              
## [31] matrixStats_1.1.0                                  
## [32] GenomicRanges_1.54.1                               
## [33] GenomeInfoDb_1.38.1                                
## [34] IRanges_2.36.0                                     
## [35] S4Vectors_0.40.1                                   
## [36] BiocGenerics_0.48.1                                
## [37] eulerr_7.0.0                                       
## [38] limma_3.58.1                                       
## 
## loaded via a namespace (and not attached):
##   [1] splines_4.3.2             later_1.3.1              
##   [3] BiocIO_1.12.0             bitops_1.0-7             
##   [5] filelock_1.0.2            preprocessCore_1.64.0    
##   [7] XML_3.99-0.15             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.7               
##  [15] rmarkdown_2.25            jquerylib_0.1.4          
##  [17] yaml_2.3.7                httpuv_1.6.12            
##  [19] doRNG_1.8.6               askpass_1.2.0            
##  [21] DBI_1.1.3                 RColorBrewer_1.1-3       
##  [23] abind_1.4-5               zlibbioc_1.48.0          
##  [25] rvest_1.0.3               quadprog_1.5-8           
##  [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.2             DelayedMatrixStats_1.24.0
##  [35] codetools_0.2-19          DelayedArray_0.28.0      
##  [37] xml2_1.3.5                tidyselect_1.2.0         
##  [39] beanplot_1.3.1            BiocFileCache_2.10.1     
##  [41] webshot_0.5.5             illuminaio_0.44.0        
##  [43] GenomicAlignments_1.38.0  jsonlite_1.8.7           
##  [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.2           
##  [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.5               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.3             utf8_1.2.4               
##  [69] tidyr_1.3.0               generics_0.1.3           
##  [71] data.table_1.14.8         rtracklayer_1.62.0       
##  [73] prettyunits_1.2.0         httr_1.4.7               
##  [75] htmlwidgets_1.6.2         S4Arrays_1.2.0           
##  [77] pkgconfig_2.0.3           gtable_0.3.4             
##  [79] blob_1.2.4                siggenes_1.76.0          
##  [81] htmltools_0.5.7           scales_1.2.1             
##  [83] knitr_1.45                rstudioapi_0.15.0        
##  [85] tzdb_0.4.0                rjson_0.2.21             
##  [87] nlme_3.1-163              curl_5.1.0               
##  [89] org.Hs.eg.db_3.18.0       cachem_1.0.8             
##  [91] rhdf5_2.46.0              stringr_1.5.0            
##  [93] KernSmooth_2.23-22        AnnotationDbi_1.64.1     
##  [95] restfulr_0.0.15           GEOquery_2.70.0          
##  [97] pillar_1.9.0              grid_4.3.2               
##  [99] reshape_0.8.9             vctrs_0.6.4              
## [101] promises_1.2.1            dbplyr_2.4.0             
## [103] xtable_1.8-4              evaluate_0.23            
## [105] readr_2.1.4               GenomicFeatures_1.54.1   
## [107] cli_3.6.1                 compiler_4.3.2           
## [109] Rsamtools_2.18.0          rlang_1.1.2              
## [111] crayon_1.5.2              rngtools_1.5.2           
## [113] nor1mix_1.3-0             mclust_6.0.0             
## [115] plyr_1.8.9                stringi_1.7.12           
## [117] viridisLite_0.4.2         BiocParallel_1.36.0      
## [119] munsell_0.5.0             Matrix_1.6-3             
## [121] hms_1.1.3                 sparseMatrixStats_1.14.0 
## [123] bit64_4.0.5               Rhdf5lib_1.24.0          
## [125] KEGGREST_1.42.0           statmod_1.5.0            
## [127] shiny_1.7.5.1             highr_0.10               
## [129] memoise_2.0.1             bslib_0.5.1              
## [131] bit_4.0.5