【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
二、数据上传
上传的方式:
- 网页
- Excel表格
- 软件
- 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