Advertisement

minfi 分析甲基化芯片数据 - 质量过滤篇

阅读量:

在对原始芯片数据进行分析之前,请您首先完成的是对其质量进行初步筛查工作。这种筛查主要关注探针级别的一系列指标,并具体包括以下几个核心环节:

  1. 过滤掉可信度较低的探针;

  2. 过滤掉覆盖了snp位点的探针;

  3. 过滤掉位于性染色体上的探针;

过滤掉可信度较低的探针

对于探针信号的可靠性而言,在Minfi软件包中可以通过相应的p-value进行评估;具体而言,在Minfi软件包中可以通过DetectP函数来计算每个探针对应的p值,并提供详细的统计结果以辅助判断探针信号的质量与准确性

复制代码
 # import data 第一个参数为Sampel_Sheet.csv 文件所在的目录

    
 targets <- read.metharray.sheet("./", pattern="HumanMethylation450_Demo_Sample_Sheet.csv")
    
 rgSet <- read.metharray.exp(targets=targets)
    
  
    
 # probe pvalue 
    
 probeP <- detectionP(rgSet)

一般认为,在统计显著性方面p > 0.01 的探针信号不具参考价值。在实际应用中,则规定若在一个样本中的检验水平p值超过0.01时,则将其排除在外。

复制代码
 keep <-  apply(probeP, 1 , function(t){all(t < 0.01)})

    
 rgSet <- rgSet[keep,]

当实验操作出现偏差时,在某些情况下会致使某一批次样本的质量异常低。一般而言,在使用探针计算pvalue时所得取样平均值高于0.05的所有样本都被认定为质量较低的标本,并且这些情况下的标本同样需要进行过滤处理

复制代码
 keep <- apply(probeP, 2, mean) < 0.05

    
 rgSet <- rgSet[,keep]

对于探针信号的可靠性可通过直接分析原始数据来评估。
而对于探针所涉及的snp信息及染色体数据,则需相应的探针注释文件辅助。
在bioconductor平台中,
IlluminaHumanMethylation450kanno.ilmn12.hg19包提供了450K芯片位点的具体注释信息;
而IlluminaHumanMethylationEPICanno.ilm10b4.hg19包则包含了850K芯片位点的相关数据记录。
minfi软件程序在处理原始数据时会根据探针的数量自动识别所使用的芯片类型,
并从相应的包中提取必要的注释信息辅助分析。
在执行snp及性染色相关滤波步骤之前,
请确保已经准备好并获取了完整的芯片定位与标记基因组注释信息。

复制代码
 mSet <- preprocessRaw(rgSet)

    
 Gset <- mapToGenome(mSet)
    
 annotation <- getAnnotation(Gset)

过滤掉覆盖了snp位点的探针

当探针对某一snp位点进行探测时,可能会对其杂交结果产生影响;在实际操作中,则倾向于对这类探针进行过滤处理。这时就需要探针对应携带的snp信息作为注释。对于甲基化芯片而言,有3种SNP 注释信息

复制代码
 > snps <- getSnpInfo(Gset)

    
 > head(snps)
    
 DataFrame with 6 rows and 6 columns
    
               Probe_rs Probe_maf      CpG_rs   CpG_maf      SBE_rs   SBE_maf
    
            <character> <numeric> <character> <numeric> <character> <numeric>
    
 cg13869341          NA        NA          NA        NA          NA        NA
    
 cg14008030          NA        NA          NA        NA          NA        NA
    
 cg12045430          NA        NA          NA        NA          NA        NA
    
 cg20826792          NA        NA          NA        NA          NA        NA
    
 cg00381604          NA        NA          NA        NA          NA        NA
    
 cg20253340          NA        NA          NA        NA          NA        NA
  • CpG_rs

CpG_rs 被称为这一类探针并具有双重功能即作为CpG位点也被识别为snp位点。在探针对该基因组进行分析时 CpG位点的位置将被记录至pos字段中 基于起始行的位置信息 例如 探针编号为 rs71507462 的样本在其对应的hg19染色体上将精确定位到坐标 762592的位置处

复制代码
 > head(annotation[!is.na(annotation$CpG_rs), c(1,2,3,14,15)])

    
 DataFrame with 6 rows and 5 columns
    
                    chr       pos      strand      CpG_rs   CpG_maf
    
            <character> <integer> <character> <character> <numeric>
    
 cg06402284        chr1    762592           -  rs71507462  0.274931
    
 cg03213877        chr1    763116           - rs191770232  0.020600
    
 cg20788133        chr1    765028           -   rs2519025  0.092322
    
 cg09139287        chr1    787398           -   rs2905055  0.336368
    
 cg00168193        chr1    790667           + rs149504348  0.038900
    
 cg01062849        chr1    838731           +  rs28477624  0.040256
  • SBE_rs

SBE_r指的是CpG位点下游的第一个碱基是snp位点,rs2905055 在hg19的位置是787399

复制代码
 > head(annotation[!is.na(annotation$SBE_rs), c(1,2,3,16,17)])

    
 DataFrame with 6 rows and 5 columns
    
                    chr       pos      strand      SBE_rs   SBE_maf
    
            <character> <integer> <character> <character> <numeric>
    
 cg09139287        chr1    787398           -   rs2905055  0.336368
    
 cg23112672        chr1    876199           -  rs71628924  0.012351
    
 cg10644916        chr1    899000           +   rs3813184  0.087352
    
 cg10625579        chr1    942635           -  rs76233940  0.066406
    
 cg13917577        chr1    957119           -   rs3121553  0.282192
    
 cg11853970        chr1    986037           -  rs28758798  0.000456
  • Probe_rs

Probe_rs代表了探针区域覆盖的所有snp位点。其长度约为50BP左右,在hg19坐标系中位于位置 91,536处的一条长约为 22, upstream于该坐标约有 22 BP的位置

复制代码
 > head(annotation[!is.na(annotation$Probe_rs), c(1,2,3,12,13)])

    
 DataFrame with 6 rows and 5 columns
    
                    chr       pos      strand    Probe_rs Probe_maf
    
            <character> <integer> <character> <character> <numeric>
    
 cg03130891        chr1     91550           -  rs77418980  0.305556
    
 cg24335620        chr1    135252           - rs147502335  0.012800
    
 cg24669183        chr1    534242           -   rs6680725  0.108100
    
 cg14057946        chr1    713985           -  rs74512038  0.076823
    
 cg11422233        chr1    714002           -  rs74512038  0.076823
    
 cg16047670        chr1    714012           + rs114983708  0.115264

使用dropLociWithSnps函数可以根据snp类型和频率设定筛选标准。从探针的工作机制来看,CpG_rs和SBE_rs对探针杂交的影响最为显著,因此通常会选择这两种类型的snp用于筛选.具体使用方法可以通过以下示例理解.

复制代码
    GRset <- dropLociWithSnps(Gset, snps=c("Probe","SBE","CpG"), maf=0)

过滤掉位于性染色体上的探针

在样本中同时存在两种性别的情况下,在性染色体上不同位置的甲基化差异程度难以被精确量化;因此建议移除用于测量这些区域的探针

复制代码
 sex_probe <- rownames(annotation)[annotation$chr %in% c("chrX", "chrY")]

    
 keep <-  !(featureNames(GRset) %in% sex_probe)
    
 GRset <- GRset[keep, ]

总结:

探针信号的可靠性通过p值进行评估,在这种情况下,当p值较小时(即小于0.01时),通常会移除这些探针。

因为snp的存在会影响探针与DNA分子的杂交结果

  1. 当分组比较的样本混合了不同性别,需要去除位于性染色体上的探针。

全部评论 (0)

还没有任何评论哟~