The test that is failing has to do with the probe IDs for your meth and unmeth probes. When you are reading in the files you will get a bunch of messages (which you should have included!), that say things like
Generating Meth and UnMeth Matrix
Extracting Meth Matrix...
Totally there are XXX Meth probes in <your chip type goes here> Annotation.
Totally there are XXX UnMeth probes in <your chip type goes here> Annotation.
And the error indicates that XXX is not the same number for Meth and UnMeth probes.
James I thank you very much!. I am very new to this subject and I am practically doing it self-taught with the information I find on the web, the number of tests does work but I already have an idea of what the problem is, since I am using a microarray also from Illumina but it's for mice and I think that's what's probably failing, anyway I include what the program throws.
[ Section 3: Use Annotation Start ]
Reading 450K Annotation >>
Fetching NEGATIVE ControlProbe.
Totally, there are 613 control probes in Annotation.
Your data set contains 281 control probes.
Generating Meth and UnMeth Matrix
Extracting Meth Matrix...
Totally there are 485512 Meth probes in 450K Annotation.
Your data set contains 485512 Meth probes.
Extracting UnMeth Matrix...
Totally there are 485512 UnMeth probes in 450K Annotation.
Your data set contains 485512 UnMeth probes.
Error in champ.import(directory, arraytype = arraytype) :
Meth Matrix and UnMeth Matrix seems not paried correctly.
Además: There were 24 warnings (use warnings() to see them)
Huh. That's not what I would expect. Anyway, what happens is that the probe IDs for the M and U probes are compared to what is in the annotation object for that array, using the %in% function. That returns a boolean vector, which is then compared using identical. If that returns FALSE, then you must have some M or U probes that are missing, whereas the complement probe is not.
You could check it by running champ.import under the debugger (see ?debug), and stepping through to the part where it generates the Meth and UnMeth matrices and then compares them. But I don't know what you should do at that point. You can extract things to your .GlobalEnv using the <<- function (e.g., doing something like IDATS <<- IDATS will copy the data into your 'regular' workspace, after which you can quit the debugger and inspect it at will).
But if you have some M probes that don't have the corresponding U probes (or vice versa), I don't know what you should do about that. I suppose the naive thing to do would be to eliminate the mis-matched probes (while under the debugger) and then recreate the boolean vectors that are used to make the comparison, after which champ.import should complete successfully. That is a workaround for the issue at hand but doesn't do anything to figure out why you have the problem in the first place. So it all depends on what your goals are, and what you are willing to do (or consider to be an acceptable compromise).
I am actually dealing with the exact same problem. Here is the error message :
[ Section 3: Use Annotation Start ]
Reading EPICv2 Annotation >>
Fetching NEGATIVE ControlProbe.
Totally, there are 613 control probes in Annotation.
Your data set contains 281 control probes.
Generating Meth and UnMeth Matrix
Extracting Meth Matrix...
Totally there are 485512 Meth probes in EPICv2 Annotation.
Your data set contains 485512 Meth probes.
Extracting UnMeth Matrix...
Totally there are 485512 UnMeth probes in EPICv2 Annotation.
Your data set contains 485512 UnMeth probes.
Error in champ.import(directory = "/Users/Desktop/IDAT", :
Meth Matrix and UnMeth Matrix seems not paried correctly.
I am not sure to understand how M or U probes can be missing if there are exactly the same number of probes for both (485512) ?
Furthermore, I also used minfi previously to process the same data and there were no problems with MSet generation, for example, so I don't understand how it can be missing probes for U or M ?
I am actually trying to use the debugger to explore my data as you suggest but I am not sure to understand how to use if even after reading ?debug.
Indeed for the part that I am interested in this is what I got :
else {
message("\n[ Loading Data with ChAMP Method ]")
message("----------------------------------")
message("Note that ChAMP method will NOT return rgSet or mset, they object defined by minfi. Which means, if you use ChAMP method to load data, you can not use SWAN or FunctionNormliazation method in champ.norm() (you can use BMIQ or PBC still). But All other function should not be influenced.\n")
myImport <- champ.import(directory, arraytype = arraytype)
if (methValue == "B")
myLoad <- champ.filter(beta = myImport$beta, M = NULL,
pd = myImport$pd, intensity = myImport$intensity,
Meth = NULL, UnMeth = NULL, detP = myImport$detP,
beadcount = myImport$beadcount, autoimpute = autoimpute,
filterDetP = filterDetP, ProbeCutoff = ProbeCutoff,
SampleCutoff = SampleCutoff, detPcut = detPcut,
filterBeads = filterBeads, beadCutoff = beadCutoff,
filterNoCG = filterNoCG, filterSNPs = filterSNPs,
population = population, filterMultiHit = filterMultiHit,
filterXY = filterXY, arraytype = arraytype)
else myLoad <- champ.filter(beta = NULL, M = myImport$M,
pd = myImport$pd, intensity = myImport$intensity,
Meth = NULL, UnMeth = NULL, detP = myImport$detP,
beadcount = myImport$beadcount, autoimpute = autoimpute,
filterDetP = filterDetP, ProbeCutoff = ProbeCutoff,
SampleCutoff = SampleCutoff, detPcut = detPcut, filterBeads = filterBeads,
beadCutoff = beadCutoff, filterNoCG = filterNoCG,
filterSNPs = filterSNPs, population = population,
filterMultiHit = filterMultiHit, filterXY = filterXY,
arraytype = arraytype)
message("[<<<<< ChAMP.LOAD END >>>>>>]")
message("[===========================]")
message("[You may want to process champ.QC() next.]\n")
return(myLoad)
}
Before the else is actually the code corresponding to the champ.load function apply with the minfi process (which is no adapted to what I want to do because I am working with an EPICV2) and which I am not posting here.
Now I am not sure to understand how to get the Meth and UnMeth Matrix from here when processed with ChAMP method.
Thank you very much in advance if you any suggestion to help me !
The error isn't saying anything about missing data. It says the values appear to not be paired (or paried, as it were) correctly. Those are different things (here, champ.load is extracting the cg IDs for the methylated and unmethylated probes and then running identical to see if they are identical. If that returns FALSE, then you get the error).
Ideally you would be getting help from the maintainer(s) of the package instead of me, as I don't use ChAMP. If you load the package and then do packageDescription("ChAMP"), you can get the email that they provide for direct contact. Perhaps you should try that.
James I thank you very much!. I am very new to this subject and I am practically doing it self-taught with the information I find on the web, the number of tests does work but I already have an idea of what the problem is, since I am using a microarray also from Illumina but it's for mice and I think that's what's probably failing, anyway I include what the program throws.
[ Section 3: Use Annotation Start ]
Reading 450K Annotation >>
Fetching NEGATIVE ControlProbe. Totally, there are 613 control probes in Annotation. Your data set contains 281 control probes.
Generating Meth and UnMeth Matrix Extracting Meth Matrix... Totally there are 485512 Meth probes in 450K Annotation. Your data set contains 485512 Meth probes. Extracting UnMeth Matrix... Totally there are 485512 UnMeth probes in 450K Annotation. Your data set contains 485512 UnMeth probes. Error in champ.import(directory, arraytype = arraytype) : Meth Matrix and UnMeth Matrix seems not paried correctly. Además: There were 24 warnings (use warnings() to see them)
again thank you very much for your answer!
Huh. That's not what I would expect. Anyway, what happens is that the probe IDs for the M and U probes are compared to what is in the annotation object for that array, using the
%in%
function. That returns a boolean vector, which is then compared usingidentical
. If that returnsFALSE
, then you must have some M or U probes that are missing, whereas the complement probe is not.You could check it by running
champ.import
under the debugger (see?debug
), and stepping through to the part where it generates the Meth and UnMeth matrices and then compares them. But I don't know what you should do at that point. You can extract things to your.GlobalEnv
using the<<-
function (e.g., doing something like IDATS <<- IDATS will copy the data into your 'regular' workspace, after which you can quit the debugger and inspect it at will).But if you have some M probes that don't have the corresponding U probes (or vice versa), I don't know what you should do about that. I suppose the naive thing to do would be to eliminate the mis-matched probes (while under the debugger) and then recreate the boolean vectors that are used to make the comparison, after which
champ.import
should complete successfully. That is a workaround for the issue at hand but doesn't do anything to figure out why you have the problem in the first place. So it all depends on what your goals are, and what you are willing to do (or consider to be an acceptable compromise).Hello,
I am actually dealing with the exact same problem. Here is the error message :
I am not sure to understand how M or U probes can be missing if there are exactly the same number of probes for both (485512) ? Furthermore, I also used minfi previously to process the same data and there were no problems with MSet generation, for example, so I don't understand how it can be missing probes for U or M ?
I am actually trying to use the debugger to explore my data as you suggest but I am not sure to understand how to use if even after reading
?debug.
Indeed for the part that I am interested in this is what I got :
Before the
else
is actually the code corresponding to the champ.load function apply with the minfi process (which is no adapted to what I want to do because I am working with an EPICV2) and which I am not posting here.Now I am not sure to understand how to get the Meth and UnMeth Matrix from here when processed with ChAMP method.
Thank you very much in advance if you any suggestion to help me !
Hortense
The error isn't saying anything about missing data. It says the values appear to not be paired (or paried, as it were) correctly. Those are different things (here,
champ.load
is extracting the cg IDs for the methylated and unmethylated probes and then runningidentical
to see if they are identical. If that returnsFALSE
, then you get the error).Ideally you would be getting help from the maintainer(s) of the package instead of me, as I don't use
ChAMP
. If you load the package and then dopackageDescription("ChAMP")
, you can get the email that they provide for direct contact. Perhaps you should try that.Hi, I am wondering if you have figured out a solution to this issue. I am facing the same problem when running champ.load on my EPICv2 data.
Thank you!
Hello! Were you able to figure this out? I am running into the same error!