第二个万能芯片探针ID注释平台R包
整合全部表达芯片平台的soft文件并且提取基因symbol和探针对应关系
前面我们提到过表达芯片探针注释的3种方法,参见:第一个万能芯片探针ID注释平台R包, 并且帮助大家搞定了第一种bioconductor包的方法,大家无需下载几十个bioconductor包,然后自己一个个提取基因信息,我全部为大家做好啦,也就是 idmap1 这个目前host在GitHub的R包:
https://github.com/jmzeng1314/idmap1
现在我们来说说第二个万能芯片探针ID注释平台包。一定要跟我们的 idmap1 区分开来哦,那个idmap1仅仅是把bioconductor里面有的37个芯片平台整合了一下,而我们的这个idmap2包不得了啦,有122个GPL之多,它们的6G多的soft信息被我下载整理成为了不到40M的R包。
首先理解芯片平台的soft信息
NCBI官网可以下载所有的gpl平台的soft信息,会比较大(100多个平台全部下载需要6G以上的空间)
http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL6947
不同的gpl平台的soft信息不一样,一般来说,大家关心的其实就是探针的ID,以及基因的symbol列。
有一些平台还会提供探针序列:
我已经帮助大家下载整理好了全部的GPL平台的芯片探针列,以及其对应的基因列,整理打包成为一个R包方便大家使用,直接获取探针对应的基因symbol即可。
安装我的idmap2包
一定要跟我们的 idmap1 区分开来哦,那个idmap1是把bioconductor里面有的37个芯片平台整合了一下,而我们的这个idmap2包不得了啦,有122个GPL之多,它们的6G多的soft信息被我下载整理成为了不到40M的R包。
library(devtools)
install_github("jmzeng1314/idmap2")
library(idmap2)
因为有40M,所以下载安装会比较慢哦,喝杯咖啡吧!也欢迎赞助我一杯咖啡,我们一起喝!
关于GitHub下载困难
在中国大陆,大部分人访问GitHub还是很困难的,如果你成功下载并且安装,结果如下:
如果你确实无法下载, 就需要下载我的微云版本:https://share.weiyun.com/5ZA9n6M(注意:微云链接很有可能被封杀,所以大家如果下载失败就需要看公众号留言哈,获取最新链接)
然后参考我以前的教程:安装GitHub的R包困难解决方案
也可以迅雷下载GitHub的我的这个项目的文件夹:
https://codeload.github.com/jmzeng1314/idmap2/legacy.tar.gz/master
使用idmap2
同样的获取同样的GPL570 hgu133plus2 [HG-U133_Plus_2] Affymetrix Human Genome U133 Plus 2.0 Array注释信息,一行代码就搞定!
library(idmap1)
ids=getIDs('gpl570')
head(ids)
library(idmap2)
ids=get_soft_IDs('gpl570')
head(ids)
可以看到两个包的两个函数非常类似,只需要你提供gpl即可,是不是很方便啦!
当然了,第二个包有一百多个平台,而第一个只有37个,注意哦,比如
idmap1::getIDs('GPL13912') # 失败
idmap2::get_soft_IDs('GPL13912') # 成功
这个 GPL13912 平台,就存在于第二个包,但是不在第一个哈。
你想知道我们支持哪些平台吗,当然是可以看的:
data(gpl_list)
gpl_list[,1:4]
希望你的平台,在我们的列表,能帮助你进行芯片注释。
一个芯片数据挖掘实战
结合我们发布的 GEO数据库中国区镜像横空出世,随时随地方便下载GEO数据集,并且进行ID转换!
library(GEOmirror)
library(idmap1)
library(idmap2)
gset=geoChina('GSE31731')
gset
a=exprs(gset[[1]])
a[1:4,1:4]
gpl=gset[[1]]@annotation
b=idmap2::get_soft_IDs(gpl)
head(b)
可以看到, 有一些表达矩阵,虽然是芯片做的,但是作者其实并不太懂,上传的时候把探针都漏掉了。不过,还是可以按照行对应过来。
一个R考核题-多个芯片平台的探针序列输出到fasta文件
前面我们不是提到过,这些芯片有的其实是提供fasta序列了的。那么我们就出一个题目吧:有一个数据框,第一列是探针ID,第二列是探针的碱基序列,第三列是芯片平台,模拟数据代码如下;
options(stringsAsFactors = F)
set.seed(123)
ns=sample(1:1000,10)
seqs = do.call(rbind,lapply(ns, function(n){
# n=ns[1]
id=paste0('id',1:n)
seq=rep('aaacccgggtttcccggaaa',n)
gpl=paste0('gpl',n)
df=data.frame(id,seq,gpl)
return(df)
}))
unique(seqs$gpl)
# 这个 seqs 数据框里面,有10个gpl平台,需要拆分成为10个单独的文件
# 把序列fasta格式化
x=as.vector(seqs[1, ])
paste0('>',x[1],'\n',x[2])
# 这个就是fasta序列。
复制粘贴这个代码到你的R里面,然后慢慢思考吧。
更多表达芯片的公共数据库挖掘系列更多教程,见推文 ;
今天的这个R包其实有一个技术含量很高的事情,就是从上百个GPL的soft文件里面,找到真正的芯片探针列,而这个环节的工作,都是我们生信技能树王牌R语言讲师小洁出手,如果大家感兴趣后面的故事,欢迎参加上面两个线下培训课程。