以前我写过如何使用GEOquery和GEOmetadb, 它们的确很强大,也很好用,做芯片数据pipeline的时候可以省很多力,但最近很多朋友都反应它联网有问题,经常无法下载数据!
为了解决这个问题,我仔细又研究了一下GEO数据库,其实官网本身就提供了WEB API接口,直接根据需求定制化下载数据!
我们使用GEO数据,无非就是想根据study ID号(比如:GSE1009)得到它的raw CEL文件,或者表达矩阵,或者样本分组信息!!!
如果用R包GEOquery来完成这个目的,请参考我的说明书:
其实raw CEL文件,直接自己拼接url即可
ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE1nnn/GSE1009/matrix/GSE1009_series_matrix.txt.gz
##表达矩阵,需要用在R里面read,skip掉注释信息,tab键分割
ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE1nnn/GSE1009/suppl/GSE1009_RAW.tar
##芯片原始数据,用affy包来读取
http://www.ncbi.nlm.nih.gov/geo/browse/?view=samples&series=1009&mode=csv
###样本分组信息
根据任意study ID号,非常容易就可以拼接出这些url,完全hold住GEOquery这个包的所有功能!
如果该研究涉及到的样本较多,你还可以根据下面的文件列表来有选择性的抓取样本!
ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE1nnn/GSE1009/suppl/filelist.txt
你要明白的就是浏览器的get请求而已,把下面的字符串组合成一个完整的URL即可
view=series& ## 四种,zsort=date&mode=csv& ##很重要,可以直接下载csv文件page=$i&display=5000 ##很重要查看总数:curl --silent "http://www.ncbi.nlm.nih.gov/geo/browse/" | grep "total_count"