【3.5】一级核酸数据库-GEO(基因表达数据库)

基因表达数据库(GEO,Gene Expression Omnibus database, https://www.ncbi.nlm.nih.gov/geo/ )是由NCBI负责维护的一个数据库,设计初衷是为了收集整理各种表达芯片数据,但是后来也加入了甲基化芯片,lncRNA,miRNA,CNV芯片等各种芯片,甚至高通量测序数据,是目前最大、最全面的公共基因表达数据资源。所有的数据均可以在ftp站点下载: ftp://ftp-trace.ncbi.nih.gov/geo/

首先,我们在GEO的主页( https://www.ncbi.nlm.nih.gov/geo/ )可以看到:

Browse Content
Repository Browser
DataSets: 4348
Series: 87717
Platforms: 17572
Samples: 2165066

截止到2017年8月17日,统计信息如上,可以看到数据量已经很恐怖了。

一、GEO数据库基础知识

GEO Dataset (GDS) 数据集的ID号
GEO Series (GSE) study的ID号
GEO Platform (GPL) 芯片平台
GEO Sample (GSM) 样本ID号

这些数据都可以在ftp里面直接下载。

GEO数据库的数据由两部分构成:

  • 用户提交的原始数据:GEO Platform (GPL),GEO Sample (GSM),GEO Series (GSE)。其中,GSE=GPL(Platform)+GSA(Sample)
  • GEO数据库整理后的数据:Data set ,Profile

GEO Platform(GPL):平台数据包含阵列或序列以及阵列平台的简要描述。 每个平台都分配了一个特有的登录号用于检索(格式是:GPL+数字编号),例如:平台GPL341 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL341

GEO Sample (GSM) :样本数据描述了每个样本的操作环境,处理方法和分离出的各个成分的丰度测量。每个样本都分配了一个特有的登录号用于检索(格式是:GSM+数字编号)例如:样本GSM12793 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSM12793

GEO Series (GSE) :GSE=GPL(Platform)+GSA(Sample) 系列数据将一系列相关的样本联系起来,提供了整个研究的关注点和描述,也包含了描述提取数据、简要结论和分析的表格。每个系列都分配了一个特有的登录号用于检索(格式是:GSE+数字编号)例如:系列GSE830 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE830

二、数据上传

上传的方式:

  1. 网页
  2. Excel表格
  3. 软件
  4. MINiML格式上传

详细上传方法,参见:https://www.ncbi.nlm.nih.gov/geo/info/submission.html

提交Affymetrix芯片数据到GEO数据库 http://www.biotrainee.com/thread-810-1-1.html

三、数据挖掘

3.1 Entrez GEO-DataSets

官网: http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gds

收录整个实验数据,可以通过技术类型,作者,物种和实验变量等信息来进行搜索。一旦相关数据被查询到,可以通过提供上面的小工具做一些分析,比如:热电图分析,表达分析,亚群的影响等

3.2 Entrez GEO-Profiles

官网:https://www.ncbi.nlm.nih.gov/geoprofiles/

收录单个基因的表达谱数据。可以通过基因名字,GenBank编号,SAGE标签,GEO编号等来进行搜索

3.3 GEO BLAST

GEO Blast界面容许用户根据核酸序列的相似性来搜索相关的GEO-Profiles 所有的BLAST结果中“E”的标签代表这个数据跟GEO-Profiles表达数据相关。

3.4 数据下载

我们一般是拿到了GSE的study ID号,然后直接把什么的url修改一下,就可以看到关于该study的所以描述信息,是用的什么测序平台(芯片数据,或者高通量测序),测了多少个样本,来自于哪篇文章!

方法1:

所有需要的数据均可以下载,而且都是在上面的ftp里面可以根据规律去找到的,甚至可以自己拼接下载的url链接,来做批量化处理!

例如:用GSE75528,则在https://www.ncbi.nlm.nih.gov/geo/ 官网上直接搜索GSE75528 或直接输入 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE75528 修改这个url最末尾的GSE号码就可以进入自己想去的任何研究的GEO页面。

如果是芯片数据,那么就需要自己仔细看GPL平台里面关于每个探针对应的注释信息,才能利用好别人的数据。 如果是高通量测序数据,一般要同步进入该GSE对应的SRA里面去下载sra数据,然后转为fastq格式数据,自己做处理!

https://ftp.ncbi.nlm.nih.gov/geo/series/GSE102nnn/GSE102031/matrix/GSE102031_series_matrix.txt.gz(42M)

方法2 :

也可以通过R包下载:

if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("GEOquery")

library(GEOquery)#直接调用
eSet <- getGEO("GSE21933", 
               destdir = '.',
               getGPL = F)

getGEO函数会加载GSE的matrix文件,默认会下载其注释探针信息,并对表达矩阵中的探针予以注释,但往往注释文件比较大,会出现parse保存的问题,所以一般建议把注释关掉了:getGPL=F,然后在后续分析步骤里进行手动注释。 下载的文件里面,有一些链接地址,可以通过wget 下载raw data

四、其他

4.1 联系方式

上传数据或查询数据有问题,可以联系 geo@ncbi.nlm.nih.gov

4.2 写一个Python脚本下载GEO数据

脚本逻辑很简单:

1.根据GEO accession找到FTP地址

2.用wget循环下载FTP地址下的数据

代码:

#!/bin/python3
import refrom urllib.request
import urlopen
import os
def main(geo):
# find the FTP address from [url=https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GEO]https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GEO[/url]
   response = urlopen("https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc={}".format(geo))
    pattern = re.compile("<a href=\"(.*?)\">\(ftp\)</a>")
    # use wget from shell to download SRA data
   ftp_address = re.search(pattern,response.read().decode('utf-8')).group(1)
    os.system(' wget -nd -r 1 -A *.sra ' + ftp_address)

if __name__ == '__main__':
    from sys import argv
    main(argv[1])

3.数据分析

5行代码搞定GEO学习总结版: http://www.biotrainee.com/thread-612-1-1.html

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn