From the help for champ.refbase, it looks like it's just fitting a linear regression to the cell proportions (minus the smallest one), and then returns the residuals. Which isn't what I would normally do. Instead you could use minfi and the estCell function (with the FlowSorted.Blood.EPIC package) to estimate cell proportions. I look at that as more informative than anything else, although people do use the proportions as independent variables in a linear model (which you could do with minfi or DMRcate, for sure, and maybe ChAMP, although I have never used that package).

My usual go-to move is to simply use the sva package to estimate surrogate variables to control for the cell proportions. Although not everybody loves that idea (I am actually wrestling with a reviewer over that exact issue). However, the surrogate variables tend to do a good job of capturing extra variability, without having the downside of being dependent (which the cell proportions are, unless you drop one like ChAMP does). There are papers out there, primarily by the authors of minfi that advocate for that approach, which you could find if you care to do so.

As I tried to find the solution for Cell heterogeneity correction for EPIC array, I tried to opt for few possibities but stuck at steps.

I estimated cell counts using minfi package. But how to use this estimate cell counts to correct my beta matrix or M matrix or RGchannel set in ordrer to get output of some new corrected matrix or set to use for downstream analysis.
I saw in cross package estimation is a possibility but how to correct I donot know.

The function champ.refbase will give the output of matrix. But it is limited to 450K. I am wondering if somebody has a champ.refbase script adapted for EPIC and if its possible to share or give directions.

Is it possible to use EPIC IDOL library and L-DMR to manually correct for my beta matrix in a stepwise manner ?

Next version ChAMP is under developing now, which will include a reference for EPIC/850K then, and should have a lot of other improvements.

There are a couple of ways I think you can try to do cell devolution on EPIC data for now:

Find the most informative CpGs from FlowSorted.Blood.EPIC data, then this data could be used in refbase function in RefbaseEWAS pacakge. Actually, ChAMP uses this way as well.

Try packages like EpiDish, which is designed to address cell fraction problem.

Try minfi package, which provided functions to estimate cell fraction. However, I am not familiar with those functions.

Previously I tried MethylCIBERSORT, which actually used Stanford CIBERSORT to get cell fraction.

I am not an expert of cell devolution, so I can't comment which above way is the best. And optimisation for cell devolution is endless, from reference data to feature selection. If I have time during Chrismas (not likely), I would very much like to compare them a bit.

Thanks for your valuable suggestions. Good to know ChAMP will have this function updated.

Do you have pre-available function which I can import via source code ?? Something which you have used for your data or in development pipeline and tested.

I used EpiDish for estimation of cell fraction, but how to use this for correction?

Thanks James.

Hi.

As I tried to find the solution for Cell heterogeneity correction for EPIC array, I tried to opt for few possibities but stuck at steps.