Identifying DMRs from a list of DMPs

87 views
Skip to first unread message

elainee...@gmail.com

unread,
Apr 16, 2019, 6:10:50 PM4/16/19
to Epigenomics forum
Hi all,

I have identified differentially methylated positions from illumina EPIC methylation array data using a linear mixed model. Because I have related individuals in my sample, I needed to account for relatedness using a kinship matrix as a random effect. I would like to identify DMRs from the list of DMPs I have identified with my mixed model. But none of the approaches I have seen for identifying DMRs seem compatible with this.

Does anyone know of a function (preferably implemented in R) for identifying DMRs from a custom list of DMPs? 

Thank you!
Elaine

Yuan Tian

unread,
Apr 18, 2019, 5:24:26 PM4/18/19
to Epigenomics forum
Hello Elaine:

There is a method called ProbLasso which should require no beta value but directly use DMPs. The idea of ProbeLasso is to expend the area of each DMP, then overlap them together. I think this method could address your problem.

About the function, I think old version ChAMP package (not current version, possibly version released in Bioconductor 3.3) contains this function in champ.DMR(). You may have a look at the paper and code.


Best
Yuan Tian

--
You received this message because you are subscribed to the Google Groups "Epigenomics forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to epigenomicsfor...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Christian Page

unread,
May 10, 2019, 4:38:35 AM5/10/19
to Epigenomics forum
Hi Elaine,

There is an R-package called DMRScan (https://bioconductor.org/packages/release/bioc/html/DMRScan.html) in Bioconductor that can create DMRs from the p-value/test-statistic for a set of CpG sites. It uses all CpG sites and not only the significant ones to create the DMRs, so you might need to retain the p-values for the full set of CpGs. 

Best,
Christian 

Elaine Guevara

unread,
May 10, 2019, 11:26:42 AM5/10/19
to epigenom...@googlegroups.com
Thanks so much pointing me to this, Christian. 

I have installed the package and have it running. I have p-values for all the CpGs. 

Does it matter than when I run the makeCpGregions step, I am reading in p-values rather than t-values? I don't see a way to specify this in the manual and when I look at the resulting GRangesList object, I see the p-values are listed as t-values (below).

Also, it seems like the GRangesList object only contains clusters on chr 1, even though I have CpGs on all autosomes.

Thank you for your help with this!
Elaine

#command to cluster CpGs
#observations is a vector of p-values, chr a vector of chromosomes, and coord a vector of start coordinates.
regions <- makeCpGregions(observations = observations, chr = chr, pos = coord, maxGap = 1000, minCpG = 3)

head(regions)
GRangesList object of length 355:
[[1]] 
GRanges object with 22 ranges and 3 metadata columns:
       seqnames    ranges strand |   no.cpgs                 tVal          id
          <Rle> <IRanges>  <Rle> | <integer>            <numeric> <character>
   [1]        1    877647      * |        22 5.51491355618062e-11  cg19724344
   [2]        1    877489      * |        22 6.53804673624079e-09  cg09988062
   [3]        1    860022      * |        22  7.8374456386125e-09  cg25215298
   [4]        1    843491      * |        22 1.35019341172262e-08  cg01097950
   [5]        1    860965      * |        22 3.49094251377986e-08  cg03180780

--
You received this message because you are subscribed to the Google Groups "Epigenomics forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to epigenomicsfor...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


--
Elaine Guevara, PhD
Postdoctoral Scientist
Laboratory for Evolutionary Neuroscience and Primate Genomics Laboratory
The George Washington University

Christian Page

unread,
May 27, 2019, 8:07:06 AM5/27/19
to Epigenomics forum
Hi Elaine, 

You should use the t-values (since they are additive, while the p-values are not). You can easily transform the p-values using either qt() or qnorm() function. 

We found a bug in the makeCpGregion() function that have been fixed on the gitHub function now (https://github.com/christpa/DMRScan), that should fix the problem of only analysing one chromosome. 

Best
Christian 


On Friday, May 10, 2019 at 5:26:42 PM UTC+2, Elaine Guevara wrote:
Thanks so much pointing me to this, Christian. 

I have installed the package and have it running. I have p-values for all the CpGs. 

Does it matter than when I run the makeCpGregions step, I am reading in p-values rather than t-values? I don't see a way to specify this in the manual and when I look at the resulting GRangesList object, I see the p-values are listed as t-values (below).

Also, it seems like the GRangesList object only contains clusters on chr 1, even though I have CpGs on all autosomes.

Thank you for your help with this!
Elaine

#command to cluster CpGs
#observations is a vector of p-values, chr a vector of chromosomes, and coord a vector of start coordinates.
regions <- makeCpGregions(observations = observations, chr = chr, pos = coord, maxGap = 1000, minCpG = 3)

head(regions)
GRangesList object of length 355:
[[1]] 
GRanges object with 22 ranges and 3 metadata columns:
       seqnames    ranges strand |   no.cpgs                 tVal          id
          <Rle> <IRanges>  <Rle> | <integer>            <numeric> <character>
   [1]        1    877647      * |        22 5.51491355618062e-11  cg19724344
   [2]        1    877489      * |        22 6.53804673624079e-09  cg09988062
   [3]        1    860022      * |        22  7.8374456386125e-09  cg25215298
   [4]        1    843491      * |        22 1.35019341172262e-08  cg01097950
   [5]        1    860965      * |        22 3.49094251377986e-08  cg03180780

On Fri, May 10, 2019 at 4:38 AM Christian Page <christ...@medisin.uio.no> wrote:
Hi Elaine,

There is an R-package called DMRScan (https://bioconductor.org/packages/release/bioc/html/DMRScan.html) in Bioconductor that can create DMRs from the p-value/test-statistic for a set of CpG sites. It uses all CpG sites and not only the significant ones to create the DMRs, so you might need to retain the p-values for the full set of CpGs. 

Best,
Christian 

On Wednesday, April 17, 2019 at 12:10:50 AM UTC+2, elainee...@gmail.com wrote:
Hi all,

I have identified differentially methylated positions from illumina EPIC methylation array data using a linear mixed model. Because I have related individuals in my sample, I needed to account for relatedness using a kinship matrix as a random effect. I would like to identify DMRs from the list of DMPs I have identified with my mixed model. But none of the approaches I have seen for identifying DMRs seem compatible with this.

Does anyone know of a function (preferably implemented in R) for identifying DMRs from a custom list of DMPs? 

Thank you!
Elaine

--
You received this message because you are subscribed to the Google Groups "Epigenomics forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to epigenom...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages