minfi:甲基化芯片数据分析

1.Introduction
minfi包适用于分析450K和850K的甲基化矩阵。
每个样本在一个矩阵上以两个不同的颜色通道(red、green)进行测量;每个矩阵测量4.5E5个CpG,对每个CpG的甲基化和未甲基化进行度量。
样品之间的DNA甲基化差异可以在单个CpG处,称为差异甲基化位置(DMP),也可以在区域水平上,称为差异甲基化区域(DMR)。

2.minfi object
(1) RGChannelSet : IDAT文件的原始数据,红绿通道。
(2) MethylSet : CpG基因座水平数据,甲基化和未甲基化通道。
(3) RatioSet : Beta和M通道(或之一)。
(4) GenomicMethylSet : 比对到基因组的MethylSet。
(5) GenomicRatioSet : 比对到基因组的RatioSet。
在这里插入图片描述

** 3. 准备输入数据**
(1) sample sheet : 一个记录实验设计的csv文件。
在这里插入图片描述
(2)一个样本会有两个.idat文件,是红绿双通道。整理如下目录:
在这里插入图片描述
4. 读取输入数据

targets = read.metharray.sheet(baseDirectory,pattern = "SampleSheet.csv")
RGset <- read.metharray.exp(targets=targets)
pd <- pData(RGset)

5.质量过滤
(1) 过滤可信度较低的探针:p > 0.01。通过detectP 这个函数计算探针对应的p值。

probeP = detectionP(RGset)
keep = apply(probeP,1,function(x) {all(x < 0.01)})
 RGset = RGset[keep,]

过滤质量差的样本:样本所有探针P的均值>0.05

keep = apply(probeP,2,mean) < 0.05
RGset = RGset[,keep]

(2) 获取芯片注释信息

Mset = preprocessRaw(RGset)
Gset = mapToGenome(Mset)
annotation = getAnnotation(Gset)

(3) 过滤覆盖了snp位点的探针
获取snp信息:snps = getSnpInfo(Gset)
在这里插入图片描述
CpG_rs是指这个CpG位点同时也是一个snp位点。
SBE_r指的是CpG位点下游的第一个碱基是snp位点。
Probe_rs 指的是探针区域覆盖到的snp位点。
因此要过滤掉:Gset = dropLociWithSnps(Gset,snps = c("CpG","SBE","CpG"))

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

sex_probe = rownames(annotation) [annotation$chr %in% c("chrX","chrY")]
keep = !(featureNames(Gset) %in% sex_probe)
GRset = Gset[keep,]

6.预处理
去除噪声:通过control探针的信号强度来校正CpG探针的信号强度。
归一化:I型探针和II 型探针之间的差异、技术重复beta值分布的差异
(1) preprocessIllumina:Genomestudio 软件

Mset.illumina = preprocessIllumina(RGset,bg.correct = TRUE,normalize = "controls")
Beta.illumina <- getBeta(Mset.illumina)

(2) preprocessSWAN : SWAN算法

Mset.swan = preprocessSWAN(RGset)
Beta.swan = getBeta(Mset.swan)

(3) preprocessQuantile

Mset.quantile = preprocessQuantile(RGset,
								   fixOutliers = TRUE,
								   removeBadSamples = TRUE,
								   badSampleCutoff = 10.5,
								   quantileNormalize = TRUE,
								   stratified = TRUE,
								   mergeManifest = FALSE, 
								   sex = NULL)
Beta.quantile <- getBeta(Mset.quantile)								 			

(4) preprocessNoob : noob算法。

Mset.noob = preprocessNoob(RGset)
Beta.noob = getBeta(Mset.noob)

(5) preprocessFunnorm : noob算法降低噪声,functional normalization算法归一化。

Mset.funnorm = preprocessFunnorm(RGset)
Beta.funnorm = getBeta(Mset.funnorm)

7.差异点位DMP分析

beta = getBeta(GRset)
group = pd$Sample_Group
dmp = dmpFinder(beta,pheno = group,type = "categorical")
pheno参数用于指定样本的分组情况。
type参数用于指定分组类型:case/control不同的实验处理就是categorical;分组是连续型变量就是continuous。

8.差异区域DMR分析

group = pd$Sample_Group
design_matrix = model.martix(~group)
dmrs = bumphunter(GRset,
				 design = design_matrix,
				 cutoff = 0.2,
				 B = 0,
				 type = "Beta")
  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值