bioconductor系列教程之一分析基因芯片上 49

我们先用一个图来描述一下基因芯片(通常指Affymetrix microarray chips)实验的流程。

Figure 1基因芯片实验的流程

Figure 1基因芯片实验的流程

在这个流程中,预处理当中图像分析所指的图像就是基因芯片实验完成之后由仪器对杂交结果照像生成的图片。生物芯片实际上就是一堆基因特异探针的集成。当mRNA或cDNA文库标记后与这些探针相杂交,经洗脱,与探针有特异性结合的cDNA就保留了下来,因为它本身带有荧光标计,所以可以被成像系统捕捉下来。为了减少实验产生的噪音,Affy基因芯片在设计时,对每个基因都集成了20组不同的探针,这些特异性探针每个都由25个碱基组成,被称为Perfect Match(PM)探针。与其直接相邻的,也是20组不同探针,这些探针与前面所提的探针序列基本相同,只是正中间的一个碱基被换成了非特异的碱基,理论上来讲,它们应该很难与特异性探针形成相同的阳性结果。而这20组探针被称为MisMatch(MM)探针。有了MM探针,基因芯片就有了阴对内参,可以用于对杂交效果的检测。

Affymetrix公司发展了MAS5算法,专门用来对实验数据进行去背景预处理。MAS5算法非常小心地使用MM做为背景,实现信噪分离,并且综合20组探针的结果给于每个目标基因的信息。

但是要达到任何一个目的都会有多种算法,人们有时候倾向于尝试不同的算法来得到自己满意的结果,于是对原始数据的处理也变得重要。生物芯片生成的原始图片,我们把它称为原始数据(raw data)。原始数据保存格式为CEL格式,与之相对应,还需要基因芯片探针排布的信息,这些信息保存为CDF格式。因为商品化的microarray只因物种的不同排布会不同,所以相同型号的芯片使用相同的CDF文件。必要时可以去公司网站上下载CDF文件。

Pages: 1 2 3 4 5 6 7 8

49 thoughts on “bioconductor系列教程之一分析基因芯片上

  1. Reply Zhong 11月 25,2013 3:43 上午

    求助,我一直不知道cdf文件怎么下载,下载完之后放到哪里,我已使用readaffy,就会有Error in getCdfInfo(object) :
    Could not obtain CDF environment, problems encountered:
    Specified environment does not contain Mapping250K_Nsp
    Library – package mapping250knspcdf not installed
    Bioconductor – mapping250knspcdf not available
    这个错误提示 ,但是mapping250knsp.cdf这个我到处下载到处找都不知道怎么使用他,都快急疯了

  2. Reply Cedar 3月 17,2014 9:17 下午

    你好!我在运行>eset <- expresso(Data, normalize.method="invariantset",
    bg.correct="rma",
    pmcorrect.method="pmonly",summary.method="liwong")的时候会报错:
    Error in if (bg.correct) { : argument is not interpretable as logical
    请问这是什么原因吗?

  3. Reply R初学者 3月 28,2014 9:36 上午

    有没有针对其他芯片平台的算法呢?比如agilent

    • Reply admin 3月 31,2014 9:28 上午

      算法都是一样的,唯一的不同就是如何芯片的设计不同。比如agilent芯片,可以使用limma.当然也可以使用agilp.

  4. Reply Singlesky 4月 16,2014 8:40 上午

    欧博士,您好!我在按照您的教程学习芯片分析,在学习过程中除了重复教程实例外我还参考了其他资料和加入自己的笔记,但是总体框架还是您的博文的内容。我现在想把学习的笔记放入自己的博客,笔记内不可避免地提到了您的博文内容,不知您是否能授权我在自己的博客上加入这部分内容?我的博客非商业性质。

    • Reply admin 4月 16,2014 8:48 上午

      非常欢迎。只要注明出处即可。我当然希望分享我的学习笔记,希望更多的人看到,并且讨论。也希望广交朋友,互相交流促进。

  5. Reply ZiSu 5月 10,2014 2:20 上午

    博主你好,我又来问问题了
    Data <- ReadAffy()意思不是读取工作目录下的CEL文件
    吗,然后赋给Data吗?然后再执行image(Data[,1]),的确能画出第一张芯片的灰度图像,然后我想查看数据类型,执行data(Data)就出错了,显示:data set ‘Data’ not found,这是什么回事呢?假如要改,怎么改呢
    谢谢博主

    • Reply admin 5月 10,2014 5:53 上午

      你要查看一个对象的类型,可以使用class或者mode命令。data命令是调用库中的数据。你可以通过?data来了解更多。

  6. Reply ZiSu 5月 19,2014 4:48 上午

    你好,
    我购买了《R语言与Bioconductor》这本书,,看到“5.3 基因芯片预处理”这一节的内容,里面介绍了AffyBatch数据结构,书中说,这个基因表达矩阵列对应不同的样品,行对应不同的探针组(Probe sets),用一个无重复的索引值表示。但是我认为,行对应的是探针(Probes)而不是探针组(Probe sets),因为一个索引对应一个坐标(索引=Y*列数+X+1),一个坐标对应一个探针

  7. Reply ZiSu 5月 19,2014 9:05 上午

    其实我在那个矩阵里还发现了一个规律:就是每一列的数据都是“小大小大小大……”,例如CLL10.CEL对应183,11524,301,11317,115,别的列都是这样。我再看到灰度图像,灰度图像其实就是一个探针对应一个格子,而第一行是芯片的边框,呈现“黑白黑白黑白”这个规律,假如这个矩阵是1164*1164的,那么前1164个格子应该都是“黑白黑白黑白”,对应的强度是“小大小大小大……”,所以我会认为每列数据呈现的是探针的强度,而前1164个数据都是“小大小大小大”

  8. Reply ZiSu 5月 19,2014 10:57 上午

    正是因为看到了图5-6,所以以我才认为那个矩阵的行对应探针而不是探针组啊……
    后来我又找来了本地的2个CEL文件做了实验:
    rawData<-ReadAffy("GSM286756.CEL","GSM286757.CEL")
    rma<-rma(rawData)
    e<-exprs(rawData)//其实第2,第3行拿来干嘛呢,只是不明白为什么不打上去的话以下的代码会出错
    exprs(rawData)[1:10,1:2]

    显示:
    GSM286756.CEL GSM286757.CEL
    1 83 93
    2 6592 7675
    3 120 116
    4 6645 7955
    5 132 125
    6 63 108
    7 6507 7869
    8 87 99
    9 6595 7780
    10 92 96

    然后我打开GSM286756.CEL,前10个探针的强度是这样显示的:
    CellHeader=X Y MEAN STDV NPIXELS
    0 0 83.0 15.8 25
    1 0 6592.0 1136.3 25
    2 0 120.0 25.2 25
    3 0 6645.0 932.4 25
    4 0 132.0 21.3 25
    5 0 63.0 9.5 25
    6 0 6507.0 812.6 25
    7 0 87.0 17.6 25
    8 0 6595.0 1126.1 25
    9 0 92.0 15.6 25

    所以我认为每一行应该对应一个坐标(X,Y),指定某个探针而不是探针组

    • Reply admin 5月 20,2014 3:44 下午

      具体你可以查看:http://www.affymetrix.com/support/help/faqs/mouse_430/faq_8.jsp。
      至于为什么你会产生这样的误会,就是因为CEL文件其实已经是重新编码过的芯片表达值的记录,而不是原始扫描图像。

  9. Reply ZiSu 5月 21,2014 3:04 上午

    其实CEL文件是由DAT文件得到的(过程大概就是:DAT文件中是用7*7个像素表示一个探针,然后去掉最外那圈,变成5*5个像素,然后就用这25个像素来求一个平均值,作为该探针的原始强度),在这个过程中,并没有把探针汇总到探针组水平,所以CEL文件里MEAN的那列就是一个个探针的原始强度,而那个矩阵显示的数据和CEL文件里MEAN的那列一模一样,所以也应该是探针水平而不是探针组水平。假如要汇总到探针组水平,则需要CDF文件。
    我们这段时间都在研究与芯片有关的各种文件格式,写了很多读写这些文件的代码(所以我才敢做修改原始文件那种事),也作了一些图,整体来说还是有一定成果的。
    就想请问一下是哪位老师负责编写你们这本书中有关质量控制和预处理算法介绍部分的,我们能和他取得联系吗?我们希望可以交流一下,假如能够给我们的工作给予支持,那真的是感激不尽了!!

    • Reply admin 5月 21,2014 5:46 上午

      不会意思,之前的错误。我看了一下,你说的是正确的。affybatch中保存的是相同cdf下的probe level的数据,不是probeset水平的数据。这些数据经过预处理之后才会得到校正,在综合后得到probeset水平的数据。由此看来知识放一段时间就忘。

  10. Reply ZiSu 5月 22,2014 9:38 上午

    已经给您回邮件信息了,也不知道您能不能收到qq邮箱发的。arrayanalysis能够作出很多有关质控和预处理的图表(如那两类嵌入式探针的强度趋势图等等,书上就找不到了),其实挺希望您的书改版后增加一些内容。

  11. Reply kaji331 7月 3,2014 3:16 上午

    你好,有没有关于双通道芯片数据读入到质量控制,再到normalization的步骤啊?谢谢:)

  12. Reply Ginsea Chen 10月 1,2014 3:29 上午

    博主
    您好
    我初次接触芯片数据,我现在又大约600个基因,是一个家族的,我想通过分析芯片数据得到这些基因在植物不同组织中的表达量数据,然后用R画一个热图。我现在遇到的问题有三个:
    第一,我看了一些SCi文献中有提及这一方法,但是流程模糊,对于初学者来说,完全不知所云,因此我想在您这里求助一个大致的分析流程。
    第二,我看到网上关于基因表达的有一些教程,但都是关于基因差异性表达分析的,不知道这个和我所要分析的内容是不是有些相通点呢。
    第三,我们如何识别所得到的表达数据那些是我所关注基因的呢?
    感谢您的指导,谢谢。

    • Reply admin 10月 2,2014 7:53 上午

      因为问题都太广泛了,很难回答您。但是非常感谢您的留言。我想说的就是,任何一个问题,当你自己试着去找解决方案的时候,往往比你拿别人的答案来抄收获更多。我相信,对于affymetrix公司的芯片,本博客大多都介绍过。对于其它的芯片,可以通过扩展阅读来解决。本博客的目的是为了方便阅读英文材料有一定困难的初学者,以及有相关问题希望讨论的研究人员。所有,网络上会有很多相近的材料,都是可以参照的。本博客也有不少的错误,我努力在改正,但个人水平有限,无法全部改好。对于第三个问题,你可以对芯片表达数据做完注释后,通过找并集的方式找到你感兴趣的基因。

  13. Reply Herman Chang 10月 5,2014 5:54 下午

    照猫画虎地执行你的命令:
    eset <- expresso(Data, normalize.method="invariantset",
    bg.correct="rma",
    pmcorrect.method="pmonly",summary.method="liwong")

    出来的错误信息是:
    Error in if (bg.correct) { : argument is not interpretable as logical

    看见你的回答如下。但还是不明白。什么是“那个点(.)”?
    bg.correct参数只接受logical value。我想你可能是想传递值”rma”给bgcorrect.method参数。注意那个点(.)。

  14. Reply amiee2406 11月 12,2014 10:17 上午

    您好!
    执行library(affydata)报错, Error in library(affydata) : there is no package called ‘affydata’;请问问题在哪呢?
    非常感谢

  15. Reply amiee2406 11月 16,2014 9:43 下午

    您好!在《R语言与Bioconductor》一书中,芯片质量控制一节中,提到在箱线图、RNA降解曲线、取类分析等作图,都需要affyPLM包实现,可在您的这部分教程中,并没有提到。那么affyPLM核心作用到底是什么?
    非常感谢!

  16. Reply amiee2406 11月 17,2014 12:52 上午

    您好!
    我在绘制箱式图时boxplot(Pset, col = cols),图中细胞名称如MDB-MB-231,会自动变成MDA.MB.231。这该怎么调整?
    非常感谢!

  17. Reply grassule 11月 17,2014 4:35 上午

    执行MAplot 画图出现错误 MAplot(Data, pairs = TRUE, plot.method = “smoothScatter”)
    Error in simpleLoess(y, x, w, span, degree, parametric, drop.square, normalize, :
    NA/NaN/Inf in foreign function call (arg 1),该怎么调整,上次用这个的作图时候没有提示错误?

  18. Reply amiee2406 11月 18,2014 4:23 上午

    非常感谢您的耐心解答!
    当我运行,Gset <- gcrma(data)时,报错:Error: length(prlen) == 1 is not TRUE。(data: formal class AffyBatch)。
    Q:1)是芯片差异?,我分析的是miRNA-1_0; 2)gcrma的意义是converts an AffyBatch into an ExpressionSet , 我还不太明白,在进行聚类及PCA 分析之前,这一步的意义是什么?直接按您的教程《使用Bioconductor下载GEO 上的数据》第一种方法下载的表达数据是ExpressionSet吗?3)miRNA芯片背景校正、标准化和汇总及之后操作与教程上相仿吗?
    非常感谢!!

    • Reply admin 11月 19,2014 9:25 上午

      你的问题很多。关于问题2,你可以使用class()函数来查看下载下来的是什么对象。关于gcrma的意义,你需要从什么是rma开始。这需要阅读一下文献:Summaries of Affymetrix GeneChip probe level data. Irizarry RA, Bolstad BM, Collin F, Cope LM, Hobbs B, Speed TP. Nucleic Acids Res 2003: 31(4)。在R当中rma的操作分为了三步:一,rma-bg:Performs an RMA style background adjustment as described in Irizarry et al 2003.就是我让你读的这篇,二,quant-norm:Class for doing quantile normalization.三,med-polish:Performs a median polish to estimate target and probe effects. Resulting summaries are in log2 space by default. Used in summary step of RMA as described in Irizarry et al 2003. 我想你理解了这些,就不难理解gcrma了。
      关于问题3,如果你下载的CEL文件的话,是相仿的。

  19. Reply 李康 1月 11,2015 10:06 下午

    前辈,您好!我有问题请教
    所有的芯片(cDNA,miRNA,methylation等)质量控制 标准化等预处理后得到的数据, 在挑选差异表达基因时采用的方法(比如 limma包) 是不是都一样?

  20. Reply MA JINFA 1月 28,2015 5:06 上午

    老师,您好。我用illuminaio包读取illumina芯片数据的.idat.文件后,得到了ProbeID,AVG_Signal和NBEAD等数据,怎么利用这些数据计算出表征信号强度和背景差别的显著性的信号检测P值呢?

  21. Reply 小蜜蜂 5月 6,2016 3:48 上午

    您好,想请假怎么把Affymetrix AFFY_6.0 碱基用A、B的文件转换为用AGCT表示?
    比如:一个snp对应的plink-bim文件是这样的,0 SNP_A-1781650 0 0 A B,但是想转换为类似这样的,0 SNP_A-1781650 0 0 G T

  22. Reply Maxerlei 2月 20,2017 2:21 上午

    为什么这几页教程代码都是一样的?感觉身体被掏空

  23. Reply CCUICUCPR 3月 19,2017 10:31 上午

    请问老师可以写个oligo分析Affymetrix Human Exon 1.0 ST Array的教程么?我学习了您的博客,但是还是发现很多错误不知道如何解决,实在痛苦

  24. Reply 生信菜鸟 3月 28,2017 3:28 上午

    请问大神,这是我的代码:library(affy)
    data <- ReadAffy() 【文件在当前目录下】
    eset <- rma(data)
    MAplot(eset, pairs=T,which=c(1,3,5), plot.method = "smoothScatter",cex=1)
    然后就报错了Error in (function (classes, fdef, mtable) :
    unable to find an inherited method for function ‘MAplot’ for signature ‘"ExpressionSet"’这是为什么?但是我对data做MAplot图就没有问题
    之后我又写代码write.exprs(eset,file="data.txt")
    library(oligo)
    celFiles <- list.celfiles(getwd())
    affyRaw <- read.celfiles(celFiles)
    library(pd.mogene.2.0.st)
    eset <- rma(affyRaw)
    MAplot(eset, pairs=T,which=c(1,3,5), plot.method = "smoothScatter")
    这次就成功了。
    另外,请问Can you figure out the commands to use so RMA outputs expression index for RefSeq (e.g. NM_000546) vs Gene Symbol (e.g. TP53)这句话指的是什么?

    • Reply admin 4月 7,2017 9:37 下午

      在做MAplot之前你试着library(affyPLM)一下。oligo本身自带了一个MAplot.
      你的第二个问题我也看不懂。这是作业吗?应该是在考你注释问题吧。你可以试试biomaRt。

  25. Reply 生信新手哈 5月 1,2017 10:21 下午

    您好,请教个问题啊。现在想看三篇文章的基因芯片中A基因的表达量,但是用的基因芯片都是不一样的,所以说他们有没有什么办法能经过标准化后可以互相比较。或者可不可以找些看家基因来作为对照,看A基因对看家基因的相对表达量,以达到不同芯片之间的比较。谢谢。

Leave a Reply

  

  

  

%d 博主赞过: