在R里面实现这个功能其实非常简单,难的是很多packages经常会出现安装问题,更有的人压根不看芯片平台是什么,芯片对应的package是什么,就开始到处发问,自学能力实在是堪忧!
我前面有写目前所有bioconductor支持的芯片平台对应关系:通过bioconductor包来获取所有的芯片探针与gene的对应关系
但那其实是一个很笨的办法,得到所有的各式各样的探针ID与基因的对应关系,以为它绕路了,正常情况只需要在GEO里面找到芯片对应基因关系即可,没必要下载那么多package的,但是这样做的好处也是很明显的, 对很多初学者来说,如果package能解决的话,就省心很多,比如下面这个转换关系:
- suppressPackageStartupMessages(library(CLL))
- ## 这个package自带了一个数据,是我们需要用的
- data(sCLLex) ## 这个数据里面有24个样本,分成两组,可以直接拿来测试差异基因分析
- library(hgu95av2.db) ## 一定要搞清楚自己的芯片是什么数据包
- ## 常见的芯片平台,都是有对应的bioconductor数据包的
- exprSet=exprs(sCLLex) ##得到表达数据矩阵,但是矩阵的行名,是探针ID,无法理解,需要转换
- ##首先你取出所有的探针ID,#这里可以用三种方法来得到symbol,或者得到entrezID也可以
- probeset=rownames(exprSet)
- Symbol=as.character(as.list(hgu95av2SYMBOL[probeset]))
- #annotate包提供 getSYMBOL( probeset ,”hgu95av2″ )
- #还可以用lookUp函数 lookUp( probeset , “hgu95av2″, “SYMBOL”)
- #这些只是技巧而已啦
- a=cbind.data.frame(Symbol,exprSet)
- ## 下面这个函数是对每个基因挑选最大表达量探针
- rmDupID <-function(a=matrix(c(1,1:5,2,2:6,2,3:7),ncol=6)){
- exprSet=a[,-1]
- rowMeans=apply(exprSet,1,function(x) mean(as.numeric(x),na.rm=T))
- a=a[order(rowMeans,decreasing=T),]
- exprSet=a[!duplicated(a[,1]),]
- #exprSet=apply(exprSet,2,as.numeric)
- exprSet=exprSet[!is.na(exprSet[,1]),]
- rownames(exprSet)=exprSet[,1]
- exprSet=exprSet[,-1]
- return(exprSet)
- }
- exprSet=rmDupID(a)
对每个基因挑选最大表达量探针,只是一种处理方法而已,只是我一般处理芯片是这样做的,并不一定就是最好的!
原文来自:http://www.bio-info-trainee.com/1502.html