差异表达基因的分析(2)

  • A+
所属分类:Transcriptomics

Bioconductor

应学生及个别博友的要求,尽管专业博文点击率和反应均很差,但在去San Diego参加PAG会议之前,还是抽时间给出【R高级教程】的第二专题。专题一给出了聚类分析的示例,本专题主要谈在表达谱芯片分析中如何利用Bioconductor鉴定差异表达基因。

鉴定差异表达基因是表达谱芯片分析pipeline中必须的分析步骤。差异表达基因分析是根据表型协变量(分类变量)鉴定组间差异表达,它属于监督性分类的一种。在鉴定差异表达基因以前,一般需要对表达值实施非特异性过滤(在机器学习框架下属于非监督性分类),因为适当的非特异性过滤可以提高差异表达基因的检出率、甚至是功效。R分析差异表达基因的library有很多,但目前运用最广泛的Bioconductor包是limma

鉴定差异表达基因是表达谱芯片分析pipeline中必须的分析步骤。差异表达基因分析是根据表型协变量(分类变量)鉴定组间差异表达,它属于监督性分类的一种。在鉴定差异表达基因以前,一般需要对表达值实施非特异性过滤(在机器学习框架下属于非监督性分类),因为适当的非特异性过滤可以提高差异表达基因的检出率、甚至是功效。R分析差异表达基因的library有很多,但目前运用最广泛的Bioconductor包是limma。

本专题示例依然来自GEO数据库中检索号为GSE11787 的Affymetrix芯片的数据,数据介绍参阅专题一。

>library(limma)

>design <- model.matrix(~ -1+factor(c(1,1,1, 2,2,2)))

这个是根据芯片试验设计,对表型协变量的水平进行design,比如本例中共有6张芯片,前3张为control对照组,后3张芯片为实验处理组,用1表示对照组,用2表示处理组。其他试验设计同理,比如2*2的因子设计试验,如果每个水平技术重复3次,那么可以表示为:design <- model.matrix(~ -1+factor(c(1,1,1, 2,2,2, 3,3,3, 4,4,4)))。接上面的程序语句继续:

>colnames(design) <- c("control", "LPS")

>fit <- lmFit(eset2, design)

>contrast.matrix <- makeContrasts(control-LPS, levels=design)

>fit <- eBayes(fit)

>fit2 <- contrasts.fit(fit, contrast.matrix)

>fit2 <- eBayes(fit2)

>results<-decideTests(fit2, method="global", adjust.method="BH", p.value=0.01, lfc=1.5)

>summary(results)

>vennCounts(results)

>vennDiagram(results)

比较遗憾的是,目前limma自带的venn作图函数不能做超过3维的高维venn图,只能画出3个圆圈的venn图,即只能同时对三个coef进行venn作图。上面的venn图只有一个coef,太简单了。下面是一个由本实验室芯片数据得出的三个coef的venn图例:

venn图

>heatDiagram(results,fit2$coef)

heat Diagram

红色为control中(与LPS相比)的高表达基因,绿色为control中(与LPS相比)的低表达基因,x轴的数字表示差异表达基因在eset2中所处的位置。

>x<-topTable(fit2, coef=1, number=10000, adjust.method="BH", sort.by="B", resort.by="M")

>write.table(x, file="limma.xls", row.names=F, sep="\t")

将结果写入limma.xls文件中,内容包括AveExpr值(比较组间绝对值的平均差异值)、logFC值(差异倍数)、t值、P值、q值(即adj.P.Val值)和B值。一般logFC值、P值、q值和AveExpr值用来作为差异表达的判断标准,比如差异倍数在2倍以上、绝对差异表达在10以上、P值小于0.01等。在Excel文件中,根据各项判断标准排序,可以很容易地得到差异表达基因列表,这个列表可以用来进行后续的分析,如GO注释、基因网络绘制等。

专题一中提到实际研究中,一般只用差异表达基因进行聚类分析,在R中,根据差异表达结果过滤表达值很简单(具体的值可以依据芯片数据的实际情况设定,比如P值可以设宽松点0.05、logFC的绝对值也可设为1或2、绝对表达差异也可设低一点,如6或8这样的值):

>y <- x[xP.Value < 0.01 & (xlogFC > 1.5 | xlogFC < -1.5& xAveExpr > 10),]

>length(yID)>eset3<−eset2[yID,]

经过上面P值、表达倍数差异和绝对差异的过滤,eset3中就只包含差异表达基因了,这样eset3可用来进行聚类分析了。

来源:http://bbs.sciencenet.cn/blog-295006-403640.html

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar tangboyun 2

      方法学上有疑问。
      1. 聚类的定义。整个看完了,没有一个聚类的例子。线性拟合里中用到了用到design matrxi事实上也就是分类信息,所以是个有监督的。无监督的例子比如说,先取整个基因中方差最大(不分组)的前k个基因做个热图等。
      2.这句“专题一中提到实际研究中,一般只用差异表达基因进行聚类分析”,我觉得配合他的例子用来找signature是误导的,因为他所演示的实例更本没有纠正selection bias。不信将所有样本的label进行permutation以后,按他这个步骤挑显著p-value来聚类效果还是会显著差异的。要用差异表达signature聚类,这个signature挑选时必须是resampling+essemble的。 :evil: