How to get DMR for Infinium methylation EPIC v2
2
1
Entering edit mode
@31eec9dd
Last seen 8 weeks ago
United States

I am doing EWAS analysis to get DMP, DMR and Enrichment pathway analysis. However, most packages do not support EPIC v2. I was so lucky to find some codes to get DMP, but still, now, I did not find a way to get Differentially methylated region (DMR). Is there a way to get it? I am trying to understand how these packages calculate DMR but it is confusing.

ChAMP DMRcate minfi • 1.4k views
ADD COMMENT
1
Entering edit mode
Tim Peters ▴ 180
@tim-peters-7579
Last seen 12 days ago
Australia

Hi Rae,

DMRcate can now call DMRs from EPICv2 in the current devel version: https://www.bioconductor.org/packages/devel/bioc/html/DMRcate.html. You can find the vignette for EPICv2 assays here: https://www.bioconductor.org/packages/devel/bioc/vignettes/DMRcate/inst/doc/EPICv2.pdf

This version will become 3.0 in the next Bioconductor release, available May 1st.

If you're interested, you can also check out our latest paper in BMC Genomics (https://bmcgenomics.biomedcentral.com/articles/10.1186/s12864-024-10027-5), where we take a deep dive into many aspects of EPICv2, including reproducibility and multiple probes mapping to the same CpG site.

Cheers, Tim

ADD COMMENT
0
Entering edit mode
@james-w-macdonald-5106
Last seen 1 day ago
United States

All packages support the V2 EPIC array, you just need to get the correct annotation files, which are available from Zuguang Gu's GitHub page. You can install using BiocManager

library(BiocManager)
install("jokergoo/IlluminaHumanMethylationEPICv2anno.20a1.hg38")
install("jokergoo/IlluminaHumanMethylationEPICv2manifest ")
## and then
library(minfi)
targets <- read.metharray.sheet(<where your files are>)
dat <- read.metharray.exp(targets = targets)

At this point, do note that minfi does not natively support the V2 array, so you have to change the annotation

annotation(dat) <- setNames(c("IlluminaHumanMethylationEPICv2", "ilmn20a1.hg38"), c("array","annotation"))

And then you can use minfi to identify DMRs using bumpHunter, or you can use the DMRcate package, or DSS, once it is fixed and starts building again.

0
Entering edit mode

Thank you James for your insight, I did this step earlier in the beginning of the analysis, but I am encountering a challenge when specifying parameters in the cpg.annotate function for DMR (Differentially Methylated Regions) analysis.

The goal is to include the array type (IlluminaHumanMethylationEPICv2) and the annotation (20a1.hg38) in my analysis. However, I am unsure if I'm specifying the parameters correctly in the cpg.annotate function, especially in relation to the design and contrast matrices.

This the code in the minfi pipeline

myAnnotation <- cpg.annotate(object = mVals, datatype = "array", what = "M", 
                             analysis.type = "differential", design = design, 
                             contrasts = TRUE, cont.matrix = contMatrix, 
                             coef = "naive - rTreg", arraytype = "450K")

I adjusting the code for EPIC v2 as following, still does not work. seems to me to get DMR is not possible we have to wait for the package to be updated. I am getting error message

"Error in match.arg(arraytype) : 'arg' should be one of "EPIC", "450K"

"


myAnnotation <- cpg.annotate(object = mVals, datatype = "array", what = "M", 
                             analysis.type = "differential", design = design, 
                             contrasts = TRUE, cont.matrix = contMatrix, 
                             coef = "Case - Control", arraytype = "IlluminaHumanMethylationEPICv2",
                             annotation = "ilmn20a1.hg38")
ADD REPLY
0
Entering edit mode

You want to make sure that you already have a GenomicRatioSet that you pass into cpg.annotate.

eset <- preprocessFunnorm(dat)
myAnnotation <- cpg.anotate("array", eset, design = design, 
                             contrasts = TRUE, cont.matrix = contMatrix, 
                             coef = "naive - rTreg")

You don't have to specify the 'what' or 'datatype' arguments (see ?cpg.annotate).

ADD REPLY
0
Entering edit mode

Hi, I was having similar issue but using your suggested code resulted in following (new problem)

Loading required package: IlluminaHumanMethylationEPICanno.ilm10b4.hg19

Attaching package: 'IlluminaHumanMethylationEPICanno.ilm10b4.hg19'

The following objects are masked from 'package:IlluminaHumanMethylationEPICv2anno.20a1.hg38':

    Islands.UCSC, Locations, Manifest, Other, SNPs.141CommonSingle,
    SNPs.142CommonSingle, SNPs.144CommonSingle, SNPs.146CommonSingle,
    SNPs.147CommonSingle, SNPs.Illumina

Error in makeGenomicRatioSetFromMatrix(mat = object, array = "IlluminaHumanMethylationEPIC",  : 
  No rowname matches. 'rownames' need to match IlluminaHumanMethylation450k probe names.

any solution plz?

ADD REPLY
0
Entering edit mode

Yes. Did you read the error message? The row.names of your matrix have to be Illumina IDs that match the array you are using.

ADD REPLY

Login before adding your answer.

Traffic: 573 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6