生物芯片—ChAMP包学习笔记

生物芯片—ChAMP包学习笔记二、ChAMP包简介ChAMP可以用来处理450k和EPIC的数据(这里介绍450k数据的处理流程),包中整合了质量控制、数据标准化、识别DMR、识别CNA等函数,使甲基化数据的处理形成一个pipe

一、甲基化芯片简介

一张芯片包括12个array,也就是一张芯片可以做12个sample,一台机子可以跑8张芯片,也就是一共96个sample,每个样本可以测到超过450,000个CpG位点的甲基化信息(大概人所有的1%,但是覆盖了多数CpG岛和启动子区),芯片本身包含一些控制探针可以做质控。

芯片注释信息:

#查看450k芯片注释信息
library(IlluminaHumanMethylation450kmanifest)
show(IlluminaHumanMethylation450kmanifest)

#查看850k芯片信息使用另一个R包
library(IlluminaHumanMethylationEPICkmanifest)

minfi包中有特定的函数getManifest()可以查看指定对象对应芯片的注释信息

二、ChAMP包简介

ChAMP可以用来处理450k和EPIC的数据,包中整合了质量控制、数据标准化、识别DMR、识别CNA等函数,使甲基化数据的处理形成一个pipeline。

如果你的整个流程中参数都设置为默认值,那么你只需运行函数:champ.process(directory = testDir),参数directory为甲基化原始数据.IDAT所在文件目录。

当然,ChAMP中的每个函数也可以单独运行,自定义参数。

三、具体处理流程

在这里插入图片描述

(一)数据准备

ChAMP包读取数据不仅要.idat原始文件,还需要一个pd(phenotype)文件,名为sample_sheet.csv(当然sample_sheet这个名字不重要,重要的是这是一个csv文件),具体信息如下:
在这里插入图片描述

其中比较重要的属性列是Sample_Name、Sample_Group、Slide(Sentrix_ID)、Array(Sentrix_position)

Array(Sentrix_position):一张甲基化芯片上最多有12个样本,每个样本根据Sentrix_position标识;
Slide(Sentrix_ID):当样本个数大于12个时,必然需要另外一张芯片,对于每张芯片,使用Sentrix_ID标识;
minfi就是通过Sentrix_ID和Sentrix_position这两个字段来查找样本的原始数据

需要根据各样本信息自行创建一个sample_sheet.csv,如何构建?Sentrix_ID 和 Sentrix_Position来自IDAT文件名。
注意:GEO下载的数据命名是提交者自己命名,难以构建该csv文件。TCGA下载数据,文件名包含所需信息,可以构建该csv文件
在这里插入图片描述

1.使用ChAMPdata包中的数据
library(ChAMP)
testdir<-system.file("extdata",package="ChAMPdata")

去上述路径查看数据:

testDir[1]=”/public/workspace/shaojf/anaconda3/lib/R/library/ChAMPdata/extdata”
包含8个样本,4个肿瘤样本,4个对照样本
包含8个样本,4个肿瘤样本,4个对照样本

2.数据库下载,以GEO为例说明数据准备

在这里插入图片描述

(二)数据读取与过滤champ.load

myLoad <-champ.load(testDir,arraytype="450K")
#芯片类型,可设置为"EPIC"用于加载850K芯片的数据

champ.load()参数见champ.import()和champ.filter(),champ.load()利用minfi包来读入数据
champ.load()==champ.import()+champ.filter()
返回一个列表包含3个元素:“beta”,“intensity”,“pd”
在这里插入图片描述
beta是一个矩阵,列代表样本,行代表探针
pd记录样本信息,即自己编写的sample_sheet.csv文件,重要的属性列”Slide”,“Array”
在这里插入图片描述

读入数据后有6种数据过滤:

① filterDetP、detPcut:默认过滤掉<0.01的探针,使用detPcut来修改阈值

②filterBeads、beadCutoff:探针与DNA序列杂交,beadcounts就是与探针结合的reads数,若结合得较少,则认为该种探针信号不可靠,实际处理中,默认如果这个探针在5%的样本中,beadcount<3这个探针就会被过滤掉,使用beadCutoff来修改阈值

③ filterNoCG:过滤非CpG位点的探针,对甲基化的C而言,有CpG\CHG\CHH等甲基化的C,若不想过滤这些探针可以设置filterNoCG=FALSE

④ filterSNPs:过滤SNP附近的CpG位点的探针,SNP位点附近的CpG位点不稳定,设filterSNPs=FALSE不进行过滤

⑤filterMultiHit:过滤非特异性的探针,Nordlund等研究人员使用bwa将探针序列与基因组进行比对,若唯一比对,说明探针特异性好,根据比对结果,去除比对到基因组上多个位置的探针,修改参数filterMultiHit=FALSE不进行过滤

⑥filterXY:过滤性染色体上的探针,性染色体上的差异CpG是不准确的,无法解释这个差异是否是实验造成,若性别相同时,可以不用过滤,修改参数filterXY=FALSE不进行过滤

(三)可视化查看质量控制情况champ.QC

champ.QC(beta = myLoad$beta,
		 #---产生的β矩阵
		 pheno=myLoad$pd$Sample_Group,
		 #---样本分类信息
		 mdsPlot=TRUE,
		 densityPlot=TRUE,
		 dendrogram=TRUE,
         PDFplot=TRUE,Rplot=TRUE,
		 Feature.sel="None",
		 #---绘制dendrogram时所使用的计算方法
		 resultsDir="./CHAMP_QCimages/")
QC.GUI()

(四)数据标准化 champ.norm

对探针的矫正即消除两类探针因技术差异带来的误差

myNorm<-champ.norm(beta=myLoad$beta,rgSet=myLoad$rgSet,mset=myLoad$mset,
			resultsDir=".CHAMP_Normalization/",
			method="BMIQ",
			plotBMIQ=FALSE,
			arraytype="450K",
			cores=3)

在这里插入图片描述

(五)批次效应

1.查看是否有批次效应champ.SVD
champ.SVD(beta = myNorm,
		   rgSet=NULL,
		   pd=myLoad$pd,
		   RGEffect=FALSE,
		   #---If Green and Red color control probes would be calculated
          PDFplot=TRUE,Rplot=TRUE,
		  resultsDir="./CHAMP_SVDimages/")

产生2个图像:Singular Value Decomposition Analysis (SVD);Scree Plot

①Singular Value Decomposition Analysis (SVD)在这里插入图片描述
颜色越深,p-value越小,变异越显著,表明变异成分越大
从图像可以看出变异主要来自样本间(control组和tumor组),即我们关注的生物学因素,但变异显著性不大,经过过滤后得到的数据比较clear,适合后续分析。
如果发现在array或slide等有较显著的p-value,则需要检查实验设计以及使用其他normalization methods来进行后续的批次效应矫正

②scree plot:
在这里插入图片描述
各主成分可解释的变异占总变异的百分比

2.校正批次效应champ.runCombat
mycombat <- champ.runCombat(beta=myNorm,
				pd=myLoad$pd,
                variablename="Sample_Group",
				#要进行矫正的协变量,参考sva包的ComBat函数
				batchname=c("Slide"),
				#批次,来自pd文件
                logitTrans=TRUE)
				#对beta是否进行logit转化,利用原始beta进行矫正时设为T,利用M值进行计算时设为F 

ComBat如果直接用beta值进行矫正,输出值可能不在0-1之间,所以在计算之前会进行一个logit转化成M-value;
若用M值进行矫正则没必要进行转化,因此设置logitTrans=F

(六)甲基化分析

1.champ.DMP
myDMP <- champ.DMP(beta = myNorm,
	  				pheno = myLoad$pd$Sample_Group,
      				compare.group = NULL,
	 	 			#当group>2时设定该参数为一个列表,其中每个元素为两个Sample_Group,进而指定要进行比较的group,否则每两个group之间都会进行比较
     				adjPVal = 0.05,
      				#设定的p-value检验水平
	  				adjust.method = "BH",
	  				#p-value矫正,使用的method参考函数p.adjust()
      				arraytype = "450K")
#直接通过基于类别group的探针比较计算得到DMP

# 可视化查看分布
DMP.GUI(DMP=myDMP[[1]],beta=myNorm,pheno=myLoad$pd$Sample_Group)
#使用GUI需要shiny包

在这里插入图片描述

2.champ.DMR
myDMR<-champ.DMR(beta=myNorm,
          pheno=myLoad$pd$Sample_Group,
          compare.group=NULL,
          arraytype="450K",
          method = "Bumphunter",
          minProbes=7,
          #---DMR包含很多CpG位点,每个位点都对应一个探针,minProbes设置每个DMR包含的最小探针数
          adjPvalDmr=0.05,
          #---DMR的p-value是用Stouffler's method计算得到,再进行矫正后得到adjPvalDmr
          cores=3,
          ## following parameters are specifically for Bumphunter method.
          maxGap=300,
          cutoff=NULL,
          pickCutoff=TRUE,
          smooth=TRUE,
          smoothFunction=loessByCluster,
          useWeights=FALSE,
          permutations=NULL,
          B=250,
          nullMethod="bootstrap",
          ## following parameters are specifically for probe ProbeLasso method.
          meanLassoRadius=375,
          minDmrSep=1000,
          minDmrSize=50,
          adjPvalProbe=0.05,
          Rplot=T,
          PDFplot=T,
          resultsDir="./CHAMP_ProbeLasso/",
          ## following parameters are specifically for DMRcate method.
          rmSNPCH=T,
          fdr=0.05,
          dist=2,
          mafcut=0.05,
          lambda=1000,
          C=2)

# 可视化查看分布
DMR.GUI(DMR=myDMR)

(七)找拷贝数变异CNAchamp.CNA

(八)GSEA分析champ.GSEA

今天的文章生物芯片—ChAMP包学习笔记分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60810.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注