Epimutations are rare alterations in the methylation pattern at specific loci. Have been demonstrated that epimutations could be the causative factor of some genetic diseases. For example, epimutations can lead to cancers, such as Lynch syndrome, rare diseases such as Prader-Willi syndrome, and are associated with common disorders, such as autism. Nonetheless, no standard methods are available to detect and quantify these alterations. Two methods for epimutations detection on methylation microarray data have been reported: (1) based on identifying CpGs with outlier values and then cluster them in epimutations (Barbosa et al. 2018); (2) define candidate regions with bumphunter and test their statistical significance with a MANOVA (Aref-Eshghi et al. 2019). However, the implementation of these methods is not publicly available, and these approaches have not been compared.
We have developed epimutacions
R/Bioconductor package.
We have implemented those two methods (called quantile
and
manova
, respectively). We implemented four additional
approaches, using a different distribution to detect CpG outliers
(beta
), or a different model to assess region significance
(mlm
, mahdist
, and iForest
).
The package epimutacions
provides tools to raw DNA
methylation microarray intensities normalization and epimutations
identification, visualization and annotation.
The full epimutacions
user´s guide is available in this
vignette.
The main function to estimate the epimutations is called
epimutations()
.
The name of the package is epimutacions
(pronounced
ɛ pi mu ta 'sj ons
) which means epimutations in Catalan, a
language from the northeast of Spain.
The epimutacions
package computes a genome-wide DNA
methylation analysis to identify the epimutations to be considered as
biomarkers for case samples with a suspected genetic disease. The
function epimutations()
infers epimutations on a
case-control design. It compares a case sample against a reference panel
(healthy individuals). The package also includes leave-one-out approach
(epimutations_one_leave_out()
). It compares individual
methylation profiles of a single sample (regardless if they are cases or
controls) against all other samples from the same cohort.
The epimutacions
package includes 6 outlier detection
approaches (figure @ref(fig:implementation)): (1) Multivariate Analysis
of variance (manova
), (2) Multivariate Linear Model
(mlm
), (3) isolation forest (iForest
), (4)
robust mahalanobis distance (mahdist
) (5)
quantile
and (6) beta
.
The approaches manova
, mlm
,
iForest
and mahdist
define the candidate
regions (differentially methylated regions (DMRs)) using bumphunter
method (Jaffe et al. 2012). Then, those
DMRs are tested to identify regions with CpGs being outliers when
comparing with the reference panel. quantile
uses the
sliding window approach to individually compare the methylation value in
each proband against the reference panel and then cluster them in
epimutations.
Beta
utilizes beta distribution to identify outlier
CpGs.
We have defined an epimutation as a consecutive window of a minimum of 3 outliers CpGs with a maximum distance of 1kb between them (Barbosa et al. 2018).
The workflow in figure @ref(fig:workflow) explains the main analysis
in the epimutacions
package.
The package allows two different types of inputs:
IDAT
files (raw microarray intensities)
together with RGChannelSet
object as reference panel. The
reference panel can be supplied by the user or can be selected through
the example datasets that the package provides (section
@ref(datasets)).GenomicRatioSet
object containing case and control
samples.The normalization (epi_preprocess()
) converts the raw
microarray intensities into usable methylation measurement (β values at CpG locus level). As a
result, we obtain a GenomicRatioSet
object, which can be
used as epimutations()
function input. The data should
contain information about values of CpG sites, phenotype and feature
data.
The package contains 3 example datasets adapted from Gene Expression Omnibus (GEO):
reference_panel
: a RGChannelSet
class
object containing 22 healthy individuals (GEO:
GSE127824)methy
: a GenomicRatioSet
object which
includes 49 controls (GEO:
GSE104812) and 3 cases (GEO:
GSE97362).We also included a dataset specifying the 40,408 candidate regions in Illumina 450K array which could be epimutations (see section @ref(candreg)).
We created the epimutacionsData
package in
ExperimentHub
. It contains the reference panel, methy and
the candidate epimutations datasets. The package includes the IDAT files
as external data. To access the datasets we need to install the packages
by running the following commands:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("ExperimentHub")
Then, we need to load the package and create an
ExperimentHub
object:
ExperimentHub with 3 records
# snapshotDate(): 2024-10-24
# $dataprovider: GEO, Illumina 450k array
# $species: Homo sapiens
# $rdataclass: RGChannelSet, GenomicRatioSet, GRanges
# additional mcols(): taxonomyid, genome, description,
# coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
# rdatapath, sourceurl, sourcetype
# retrieve records with, e.g., 'object[["EH6690"]]'
title
EH6690 | Control and case samples
EH6691 | Reference panel
EH6692 | Candidate epimutations
IDAT files directory in epimutacionsData
package:
The reference panel and methy
dataset can be found in
EH6691
and EH6690
record of the
eh
object:
In Illumina 450K array, probes are unequally distributed along the genome, limiting the number of regions that can fulfil the requirements to be considered an epimutation. Thus, we have computed a dataset containing all the regions that could be candidates to become an epimutation.
We used the clustering approach from bumphunter to define the
candidate epimutations. We defined a primary dataset with all the CpGs
from the Illumina 450K array. Then, we run bumphunter and selected those
regions with at least 3 CpGs and a maximum distance of 1kb between them.
As a result, we found 40,408 candidate epimutations. The function
epimutation()
filters the identified epimutations using
these candidate regions.
The following is the code used to identify the candidate epimutations in Illumina 450K array:
library(minfi)
# Regions 450K
library("IlluminaHumanMethylation450kanno.ilmn12.hg19")
data(Locations)
### Select CpGs (names starting by cg) in autosomic chromosomes
locs.450 <- subset(Locations, grepl("^cg", rownames(Locations)) & chr %in% paste0("chr", 1:22))
locs.450GR <- makeGRangesFromDataFrame(locs.450,
start.field = "pos",
end.field = "pos",
strand = "*")
locs.450GR <- sort(locs.450GR)
mat <- matrix(0, nrow = length(locs.450GR), ncol = 2,
dimnames = list(names(locs.450GR), c("A", "B")))
## Set sample B to all 1
mat[, 2] <- 1
## Define model matrix
pheno <- data.frame(var = c(0, 1))
model <- model.matrix(~ var, pheno)
## Run bumphunter
bumps <- bumphunter(mat, design = model, pos = start(locs.450GR),
chr = as.character(seqnames(locs.450GR)),
cutoff = 0.05)$table
bumps.fil <- subset(bumps, L >= 3)
The candidate regions can be found in EH6692
record of
the eh
object:
The epi_preprocess()
function allows calling the 6
preprocessing methods from minfi
package:
Method | Function | Description |
---|---|---|
raw |
preprocessRaw |
Converts the Red/Green channel for an Illumina methylation array into methylation signal, without using any normalization |
illumina |
preprocessIllumina |
Implements preprocessing for Illumina methylation microarrays as used in Genome Studio |
swan |
preprocessSWAN |
Subset-quantile Within Array Normalisation (SWAN). It allows Infinium I and II type probes on a single array to be normalized together |
quantile |
preprocessQuantile |
Implements stratified quantile normalization preprocessing for Illumina methylation microarrays |
noob |
preprocessNoob |
Noob (normal-exponential out-of-band) is a background correction method with dye-bias normalization for Illumina Infinium methylation arrays |
funnorm |
preprocessFunnorm |
Functional normalization (FunNorm) is a between-array normalization method for the Illumina Infinium HumanMethylation450 platform |
Each normalization approach has some unique parameters which can be
modified through norm_parameters()
function:
parameters | Description |
---|---|
illumina | |
bg.correct | Performs background correction |
normalize | Performs controls normalization |
reference | The reference array for control normalization |
quantile | |
fixOutliers | Low outlier Meth and Unmeth signals will be fixed |
removeBadSamples | Remove bad samples |
badSampleCutoff | The cutoff to label samples as ‘bad’ |
quantileNormalize | Performs quantile normalization |
stratified | Performs quantile normalization within region strata |
mergeManifest | Merged to the output the information in the associated manifest package |
sex | Sex of the samples |
noob | |
offset | Offset for the normexp background correct |
dyeCorr | Performs dye normalization |
dyeMethod | Dye bias correction to be done |
funnorm | |
nPCs | The number of principal components from the control probes |
sex | Sex of the samples |
bgCorr | Performs NOOB background correction before functional normalization |
dyeCorr | Performs dye normalization |
keepCN | Keeps copy number estimates |
We can obtain the default settings for each method by invoking the
function norm_parameters()
with no arguments:
$illumina
$illumina$bg.correct
[1] TRUE
$illumina$normalize
[1] "controls" "no"
$illumina$reference
[1] 1
$quantile
$quantile$fixOutliers
[1] TRUE
$quantile$removeBadSamples
[1] FALSE
$quantile$badSampleCutoff
[1] 10.5
$quantile$quantileNormalize
[1] TRUE
$quantile$stratified
[1] TRUE
$quantile$mergeManifest
[1] FALSE
$quantile$sex
NULL
$noob
$noob$offset
[1] 15
$noob$dyeCorr
[1] TRUE
$noob$dyeMethod
[1] "single" "reference"
$funnorm
$funnorm$nPCs
[1] 2
$funnorm$sex
NULL
$funnorm$bgCorr
[1] TRUE
$funnorm$dyeCorr
[1] TRUE
$funnorm$keepCN
[1] FALSE
However, we can modify the parameter(s) as the following example for
illumina
approach:
[1] FALSE
We are going to preprocess the IDAT files and reference panel
(@ref(datasets)). We need to specify the IDAT files directory and the
reference panel in RGChannelSet
format. As a result, we
will obtain a GenomicRatioSet
object containing the control
and case samples:
The function epimutations()
includes 6 methods for
epimutation identification: (1) Multivariate Analysis of variance
(manova
), (2) Multivariate Linear Model (mlm
),
(3) isolation forest (iForest
), (4) robust mahalanobis
distance (mahdist
) (5) quantile
and (6)
beta
.
To illustrate the following examples we are going to use the dataset
methy
(section @ref(datasets)). We need to separate the
case and control samples:
We can specify the chromosome or region to analyze which helps to reduce the execution time:
The function epimutations_one_leave_out()
compared
individual methylation profiles of a single sample (regardless if they
are cases or controls) against all other samples from the same cohort.
To use this function we do not need to split the dataset. To ilustrate
this example we are going to use the GRset
dataset
available in epimutacions
package:
The epi_parameters()
function is useful to set the
individual parameters for each outliers detection approach. The
following table describes the arguments:
parameters | Description |
---|---|
Manova, mlm | |
pvalue_cutoff | The threshold p-value to select which CpG regions are outliers |
iso.forest | |
outlier_score_cutoff | The threshold to select which CpG regions are outliers |
ntrees | The number of binary trees to build for the model |
mahdist.mcd | |
nsamp | The number of subsets used for initial estimates in the MCD |
quantile | |
window_sz | The maximum distance between CpGs to be considered in the same DMR |
offset_mean/offset_abs | The upper and lower threshold to consider a CpG an outlier |
beta | |
pvalue_cutoff | The minimum p-value to consider a CpG an outlier |
diff_threshold | The minimum methylation difference between the CpG and the mean methylation to consider a position an outlier |
epi_parameters()
with no arguments, returns a list of
the default settings for each method:
$manova
$manova$pvalue_cutoff
[1] 0.05
$mlm
$mlm$pvalue_cutoff
[1] 0.05
$iForest
$iForest$outlier_score_cutoff
[1] 0.7
$iForest$ntrees
[1] 100
$mahdist
$mahdist$nsamp
[1] "deterministic"
$quantile
$quantile$window_sz
[1] 1000
$quantile$offset_abs
[1] 0.15
$quantile$qsup
[1] 0.995
$quantile$qinf
[1] 0.005
$beta
$beta$pvalue_cutoff
[1] 1e-06
$beta$diff_threshold
[1] 0.1
The set up of any parameter can be done as the following example for
manova
:
[1] 0.01
The epimutations
function returns a data frame (tibble)
containing all the epimutations identified in the given case sample. If
no epimutation is found, the function returns a row containing the case
sample information and missing values for all other arguments. The
following table describes each argument:
Column name | Description | |
---|---|---|
epi_id |
systematic name for each epimutation identified | |
sample |
The name of the sample containing that epimutation | |
chromosome start end |
The location of the epimutation | |
sz |
The window’s size of the event | |
cpg_ids |
The number of CpGs in the epimutation | |
cpg_n |
The names of CpGs in the epimutation | |
outlier_score |
For method manova it provides the
approximation to F-test and the Pillai score, separated by
/ | For method mlm it provides the
approximation to F-test and the R2 of the model, separated by
/ | For method iForest it provides the
magnitude of the outlier score.| For method beta it
provides the mean p-value of all GpGs in that DMR| For methods quantile and mahdist it is filled with
NA . | |
|
pvalue |
For methods manova and mlm it
provides the p-value obtained from the model.| For method quantile , iForest , beta and
mahdist it is filled with NA . | |
|
outlier_direction |
Indicates the direction of the outlier with
“hypomethylation” and “hypermethylation”. | For manova ,
mlm , iForest , and mahdist it is
computed from the values obtained from bumphunter .| For beta is computed from the p value for each CpG using
diff_threshold and pvalue_threshold
arguments.| For quantile it is computed from the
location of the sample in the reference distribution (left vs. right
outlier). |
|
adj_pvalue |
For methods manova and mlm it
provides the adjusted p-value with | Benjamini-Hochberg based on the
total number of regions detected by Bumphunter.| For method quantile , iForest , mahdist and
beta it is filled with NA . | |
|
epi_region_id |
Name of the epimutation region as defined in
candRegsGR . |
|
CRE |
cREs (cis-Regulatory Elements) as defined by ENCODE overlapping the epimutation region. | |
CRE_type |
Type of cREs (cis-Regulatory Elements) as defined by ENCODE. |
If no outliers are detected in the region, valures for
sz
, cpg_n
, cpg_ids
,
outlier_score
, outlier_direction
,
pvalue
, adj_pvalue
and
epi_region_id
are set to NA
As an example we are going to visualize the obtained results with
MANOVA method (epi_mvo
):
[1] 51 16
[1] "tbl_df" "tbl" "data.frame"
epi_id sample chromosome start end sz cpg_n
1 epi_manova_1 GSM2562699 chr19 12777736 12777903 167 7
cpg_ids
1 cg20791841,cg25267526,cg03641858,cg25441478,cg14132016,cg23954461,cg03143365
outlier_score outlier_direction pvalue
1 302.558383959517/0.981008923520816 hypermethylation 3.441085e-33
adj_pvalue delta_beta epi_region_id CRE
1 2.236705e-31 0.2960902 chr19_12776725 EH38E1939817,EH38E1939818,EH38E1939819
CRE_type
1 pELS;pELS,CTCF-bound;PLS,CTCF-bound
The annotate_epimutations()
function enriches the
identified epimutations. It includes information about GENECODE gene
names, description of the regulatory feature provided by methylation
consortium, the location of the CpG relative to the CpG island, OMIM
accession and description number and Ensembl region id, coordinates,
type and tissue:
Column name | Description |
---|---|
GencodeBasicV12_NAME |
Gene names from the basic GENECODE build |
Regulatory_Feature_Group |
Description of the regulatory feature provided by the Methylation Consortium |
Relation_to_Island |
The location of the CpG relative to the CpG island |
OMIM_ACC OMIM_DESC |
OMIM accession and description number |
ensembl_reg_id ensembl_reg_coordinates ensembl_reg_type ensembl_reg_tissues |
The Ensembl region id, coordinates, type and tissue |
As an example we are going to visualize different annotations
kableExtra::kable(
rst_mvo[ c(27,32) ,c("epi_id", "cpg_ids", "Relation_to_Island")],
row.names = FALSE) %>%
column_spec(1:3, width = "4cm")
epi_id | cpg_ids | Relation_to_Island |
---|---|---|
epi_manova_44 | cg19560927,cg02876326,cg16167052 | N_Shore/N_Shore/Island |
epi_manova_51 | cg01396855,cg08684893,cg02386644 | N_Shore/N_Shore/N_Shore |
kableExtra::kable(
rst_mvo[ c(4,8,22) , c("epi_id", "OMIM_ACC", "OMIM_DESC")],
row.names = FALSE ) %>%
column_spec(1:3, width = "4cm")
epi_id | OMIM_ACC | OMIM_DESC |
---|---|---|
epi_manova_4 | 248500 | MANNOSID…. |
epi_manova_12 | 616689/6…. | DEHYDRAT…. |
epi_manova_33 | 620332/6…. | OOCYTE/Z…. |
kableExtra::kable(
rst_mvo[ c(1:5), c("epi_id", "ensembl_reg_id", "ensembl_reg_type")],
row.names = FALSE ) %>%
column_spec(1:3, width = "4cm")
epi_id | ensembl_reg_id | ensembl_reg_type |
---|---|---|
epi_manova_1 | ENSR00000287480 | Promoter |
epi_manova_2 | ENSR00000215007 | Promoter |
epi_manova_3 | ENSR00000325316 | Promoter |
epi_manova_4 | ENSR00001156259///ENSR00001156260 | Promoter///CTCF Binding Site |
epi_manova_5 | ENSR00000324412 | CTCF Binding Site |
The plot_epimutations()
function locates the
epimutations along the genome. It plots the methylation values of the
case sample in red, the control samples in dashed black lines and
population mean in blue:
If we set the argument gene_annot == TRUE
the plot
includes the gene annotations:
To plot the chromatin marks H3K4me3, H3K27me3 and H3K27ac we need to
specify the argument regulation = TRUE
:
The authors would like to thank the team who collaborated in the initial design of the package in the European BioHackathon 2020: Lordstrong Akano, James Baye, Alejandro Caceres, Pavlo Hrab, Raquel Manzano and Margherita Mutarelli. The authors also want to thank the organization of European BioHackathon 2020 for its support.
All the team members of Project #5 for the contribution to this package:
Name | Surname | ORCID | Affiliation | Team |
---|---|---|---|---|
Leire | Abarrategui | 0000-0002-1175-038X | Faculty of Medical Sciences, Newcastle University, Newcastle-Upon-Tyne, UK; Autonomous University of Barcelona (UAB), Barcelona, Spain | Development |
Lordstrong | Akano | 0000-0002-1404-0295 | College of Medicine, University of Ibadan | Development |
James | Baye | 0000-0002-0078-3688 | Wellcome/MRC Cambridge Stem Cell Institute, University of Cambridge, Cambridge CB2 0AW, UK; Department of Physics, University of Cambridge, Cambridge CB2 3DY, UK | Development |
Alejandro | Caceres | - | ISGlobal, Barcelona Institute for Global Health, Dr Aiguader 88, 08003 Barcelona, Spain; Centro de Investigación Biomédica en Red en Epidemiología y Salud Pública (CIBERESP), Madrid, Spain | Development |
Carles | Hernandez-Ferrer | 0000-0002-8029-7160 | Centro Nacional de Análisis Genómico (CNAG-CRG), Center for Genomic, Regulation; Barcelona Institute of Science and Technology (BIST), Barcelona, Catalonia, Spain | Development |
Pavlo | Hrab | 0000-0002-0742-8478 | Department of Genetics and Biotechnology, Biology faculty, Ivan Franko National University of Lviv | Validation |
Raquel | Manzano | 0000-0002-5124-8992 | Cancer Research UK Cambridge Institute; University of Cambridge, Cambridge, United Kingdom | Reporting |
Margherita | Mutarelli | 0000-0002-2168-5059 | Institute of Applied Sciences and Intelligent Systems (ISASI-CNR) | Validation |
Carlos | Ruiz-Arenas | 0000-0002-6014-3498 | Centro de Investigación Biomédica en Red de Enfermedades Raras (CIBERER), Barcelona, Spain; Universitat Pompeu Fabra (UPF), Barcelona, Spain | Reporting |
R version 4.4.2 (2024-10-31)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.1 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.26.so; LAPACK version 3.12.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=C
[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] IlluminaHumanMethylationEPICanno.ilm10b2.hg19_0.6.0
[2] kableExtra_1.4.0
[3] minfi_1.53.0
[4] bumphunter_1.49.0
[5] locfit_1.5-9.10
[6] iterators_1.0.14
[7] foreach_1.5.2
[8] Biostrings_2.75.1
[9] XVector_0.47.0
[10] SummarizedExperiment_1.37.0
[11] Biobase_2.67.0
[12] MatrixGenerics_1.19.0
[13] matrixStats_1.4.1
[14] GenomicRanges_1.59.1
[15] GenomeInfoDb_1.43.1
[16] IRanges_2.41.1
[17] S4Vectors_0.45.2
[18] ExperimentHub_2.15.0
[19] AnnotationHub_3.15.0
[20] BiocFileCache_2.15.0
[21] dbplyr_2.5.0
[22] BiocGenerics_0.53.3
[23] generics_0.1.3
[24] epimutacions_1.11.0
[25] epimutacionsData_1.10.0
[26] BiocStyle_2.35.0
loaded via a namespace (and not attached):
[1] ProtGenerics_1.39.0
[2] bitops_1.0-9
[3] isotree_0.6.1-1
[4] httr_1.4.7
[5] RColorBrewer_1.1-3
[6] tools_4.4.2
[7] doRNG_1.8.6
[8] backports_1.5.0
[9] utf8_1.2.4
[10] R6_2.5.1
[11] HDF5Array_1.35.1
[12] lazyeval_0.2.2
[13] Gviz_1.51.0
[14] rhdf5filters_1.19.0
[15] withr_3.0.2
[16] prettyunits_1.2.0
[17] gridExtra_2.3
[18] base64_2.0.2
[19] preprocessCore_1.69.0
[20] cli_3.6.3
[21] labeling_0.4.3
[22] sass_0.4.9
[23] robustbase_0.99-4-1
[24] readr_2.1.5
[25] genefilter_1.89.0
[26] askpass_1.2.1
[27] Rsamtools_2.23.0
[28] systemfonts_1.1.0
[29] foreign_0.8-87
[30] siggenes_1.81.0
[31] illuminaio_0.49.0
[32] svglite_2.1.3
[33] rentrez_1.2.3
[34] dichromat_2.0-0.1
[35] scrime_1.3.5
[36] BSgenome_1.75.0
[37] limma_3.63.2
[38] rstudioapi_0.17.1
[39] RSQLite_2.3.8
[40] BiocIO_1.17.0
[41] dplyr_1.1.4
[42] Matrix_1.7-1
[43] interp_1.1-6
[44] fansi_1.0.6
[45] abind_1.4-8
[46] lifecycle_1.0.4
[47] yaml_2.3.10
[48] rhdf5_2.51.0
[49] SparseArray_1.7.2
[50] grid_4.4.2
[51] blob_1.2.4
[52] crayon_1.5.3
[53] lattice_0.22-6
[54] GenomicFeatures_1.59.1
[55] annotate_1.85.0
[56] KEGGREST_1.47.0
[57] sys_3.4.3
[58] maketools_1.3.1
[59] pillar_1.9.0
[60] knitr_1.49
[61] beanplot_1.3.1
[62] rjson_0.2.23
[63] codetools_0.2-20
[64] glue_1.8.0
[65] data.table_1.16.2
[66] vctrs_0.6.5
[67] png_0.1-8
[68] IlluminaHumanMethylationEPICmanifest_0.3.0
[69] gtable_0.3.6
[70] IlluminaHumanMethylation450kanno.ilmn12.hg19_0.6.1
[71] cachem_1.1.0
[72] xfun_0.49
[73] S4Arrays_1.7.1
[74] mime_0.12
[75] survival_3.7-0
[76] statmod_1.5.0
[77] nlme_3.1-166
[78] bit64_4.5.2
[79] progress_1.2.3
[80] filelock_1.0.3
[81] bslib_0.8.0
[82] nor1mix_1.3-3
[83] IlluminaHumanMethylation450kmanifest_0.4.0
[84] rpart_4.1.23
[85] colorspace_2.1-1
[86] DBI_1.2.3
[87] Hmisc_5.2-0
[88] nnet_7.3-19
[89] tidyselect_1.2.1
[90] bit_4.5.0
[91] compiler_4.4.2
[92] curl_6.0.1
[93] httr2_1.0.6
[94] htmlTable_2.4.3
[95] xml2_1.3.6
[96] DelayedArray_0.33.2
[97] rtracklayer_1.67.0
[98] checkmate_2.3.2
[99] scales_1.3.0
[100] DEoptimR_1.1-3
[101] quadprog_1.5-8
[102] rappdirs_0.3.3
[103] stringr_1.5.1
[104] digest_0.6.37
[105] rmarkdown_2.29
[106] GEOquery_2.75.0
[107] htmltools_0.5.8.1
[108] pkgconfig_2.0.3
[109] jpeg_0.1-10
[110] base64enc_0.1-3
[111] sparseMatrixStats_1.19.0
[112] fastmap_1.2.0
[113] ensembldb_2.31.0
[114] rlang_1.1.4
[115] htmlwidgets_1.6.4
[116] UCSC.utils_1.3.0
[117] DelayedMatrixStats_1.29.0
[118] farver_2.1.2
[119] jquerylib_0.1.4
[120] jsonlite_1.8.9
[121] BiocParallel_1.41.0
[122] mclust_6.1.1
[123] VariantAnnotation_1.53.0
[124] RCurl_1.98-1.16
[125] magrittr_2.0.3
[126] Formula_1.2-5
[127] GenomeInfoDbData_1.2.13
[128] Rhdf5lib_1.29.0
[129] munsell_0.5.1
[130] Rcpp_1.0.13-1
[131] stringi_1.8.4
[132] zlibbioc_1.52.0
[133] MASS_7.3-61
[134] plyr_1.8.9
[135] ggrepel_0.9.6
[136] deldir_2.0-4
[137] splines_4.4.2
[138] multtest_2.63.0
[139] hms_1.1.3
[140] rngtools_1.5.2
[141] buildtools_1.0.0
[142] reshape2_1.4.4
[143] biomaRt_2.63.0
[144] BiocVersion_3.21.1
[145] XML_3.99-0.17
[146] evaluate_1.0.1
[147] latticeExtra_0.6-30
[148] biovizBase_1.55.0
[149] BiocManager_1.30.25
[150] tzdb_0.4.0
[151] tidyr_1.3.1
[152] openssl_2.2.2
[153] purrr_1.0.2
[154] reshape_0.8.9
[155] ggplot2_3.5.1
[156] xtable_1.8-4
[157] restfulr_0.0.15
[158] AnnotationFilter_1.31.0
[159] viridisLite_0.4.2
[160] tibble_3.2.1
[161] memoise_2.0.1
[162] AnnotationDbi_1.69.0
[163] GenomicAlignments_1.43.0
[164] cluster_2.1.6