I am using ChAMP to process EPIC methylation array data. While delving into the source code for champ.DMR for another reason, I noticed that it defined the linear model used in the DMRcate method as ~ pheno. Further delving revealed that champ.DMR calls DMRcate::cpg.annotate, which itself requires a model with an intercept (e.g. it is has this in the function stopifnot(colnames(design)[1] == "(Intercept)")).
Is there any way to circumvent this and input a model into DMRcate (and thus, into champ.DMR) that has no intercept, as in 0 + pheno? This is necessary as other methods (like champ.DMP) already use a no intercept model.

You can specify
contrasts=TRUEand pass a contrasts matrix (as you would in limma) tocpg.annotate; this will allow you to fit non-intercept models.Tim