YuanTian1991 / ChAMP

19 stars 22 forks source link

EPICv2 chip not supported #37

Open shenzhongjun opened 1 year ago

shenzhongjun commented 1 year ago

May I ask when ChAMP can increase support for EPICv2 chips?

I used ChAMP to analyze the data of EPICV2 chip and was able to run the load method normally. However, only 100k of the 935k probe passed the filter, which is much lower than the 800k of EPICV1.

I would like to know the reason for this situation. And before ChAMP increase support for EPICV2 chip, was there a compromise method that could load the data normally? image

shenzhongjun commented 1 year ago

I'm sorry I didn't see the latest update content, I will update the package now

shenzhongjun commented 1 year ago

I updated to the latest version of ChAMP 2.30.0 in Bioconductor, but It is wrong when used to analyze the chip data of EPICV2.

[ Section 3: Use Annotation Start ]

Reading EPIC Annotation >>

Fetching NEGATIVE ControlProbe. Totally, there are 411 control probes in Annotation. Your data set contains 411 control probes.

Generating Meth and UnMeth Matrix Extracting Meth Matrix... Totally there are 865918 Meth probes in EPIC Annotation. Your data set contains 865918 Meth probes. Extracting UnMeth Matrix... Totally there are 865918 UnMeth probes in EPIC Annotation. Your data set contains 865918 UnMeth probes. Error in champ.import(directory, arraytype = arraytype) : Meth Matrix and UnMeth Matrix seems not paried correctly. Calls: champ.load -> champ.import

I checked the code on the Bioconductor and found that the champ.import() function did not support EPICV2 like the code in github. What should I do to analyze EPICV2 data?

The Bioconductor champ.import() Section 3:

message("\n\n[ Section 3: Use Annotation Start ]")

     message("\n  Reading ", arraytype, " Annotation >>")
     if(arraytype == "EPIC") data(AnnoEPIC) else data(Anno450K)

The github champ.import() Section 3:

message("\n\n[ Section 3: Use Annotation Start ]")

  message("\n  Reading ", arraytype, " Annotation >>")
  if(arraytype %in% c("EPIC", "EPICv2")) {
    message("    !!! Important, since version 2.29.1, ChAMP set default `EPIC` arraytype as EPIC version 2. ",
            "\n        You can set 'EPIC' or 'EPICv2' to use version 2 EPIC annotation",
            "\n        If you want to use the old version (v1), please specify arraytype parameter as `EPICv1`. ",
            "\n        For 450K array, still use `450K`")
    data("AnnoEPICv2")
  } else if(arraytype == "EPICv1") {
    data("AnnoEPICv1")
  } else { 
    data(Anno450K)
  }
YuanTian1991 commented 1 year ago

The EPICv2 support is now avaliable for Dev version code, not official version, you can follow my pipeline document here to install latest ChAMPdata and ChAMP to use it.

Most functions should work.

shenzhongjun commented 1 year ago

Thank you for your reply!I already know the cause of the problem. Also, I saw that version 2.29.1 of ChAMP has implemented Cell Type Adjustment for the EPICv2 chips, that is really great!

DrIsh16 commented 8 months ago

"Error in champ.import(directory, arraytype = arraytype) : Meth Matrix and UnMeth Matrix seems not paried correctly."

I was getting a similar issue analyzing my EPICv2 methylation data with the available ChAMP packages. It works wonderfully now after I installed the ChAMP version 2.29.1. However, I have a small query. What version of the genome (hg38 or hg19) is it using for annotation?

shenzhongjun commented 7 months ago

"Error in champ.import(directory, arraytype = arraytype) : Meth Matrix and UnMeth Matrix seems not paried correctly."

I was getting a similar issue analyzing my EPICv2 methylation data with the available ChAMP packages. It works wonderfully now after I installed the ChAMP version 2.29.1. However, I have a small query. What version of the genome (hg38 or hg19) is it using for annotation?

According to Illumina's official documentation, the annotation file for EPICv2 is hg38

YuanTian1991 commented 7 months ago

illumina provided two annotations. ChAMP's EPICv2 manifest is still defaultly using hg19. Good question, I should add a function to convert hg19 to hg38, since the information also exist in manifest.