解读GEO数据存放规律及下载,一文就够
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解读GEO数据存放规律及下载,⼀⽂就够
做⽣物信息学分析的朋友应该是对GEO数据库⽿熟能详了,总会⽤到公共数据库的,⽽GEO数据库则是⾸选,起先只是为表达芯⽚数据准备的,后期纳⼊了各种NGS组学数据,⽂章⾥⾯会给出数据地址,GSE ID号,由此我们就可以进⼊GEO数据库,进⽽了解它!
GEO数据库基本介绍
其实只需要理解下⾯的4个概念。
GEO Platform (GPL)
GEO Sample (GSM)
GEO Series (GSE)
GEO Dataset (GDS)
理解起来也很容易。
⼀篇⽂章可以有⼀个或者多个GSE数据集,⼀个GSE⾥⾯可以有⼀个或者多个GSM样本。
多个研究的GSM样本可以根据研究⽬的整合为⼀个GDS,不过GDS本⾝⽤的很少。
⽽每个数据集都有着⾃⼰对应的芯⽚平台,就是GPL。
使⽤GEOquery包从GEO数据库下载数据
⽽且需要理解所有bioconductor⽀持的芯⽚平台对应关系:通过bioconductor包来获取所有的芯⽚探针与gene的对应关系
⾸先是下载函数的使⽤
包的本质就是getGEO函数,⽤法列举如下:
1、根据GDS号来下载数据,下载soft⽂件
gds858 <- getGEO('GDS858’, destdir=“.”)
2、根据GPL号下载的是芯⽚设计的信息!
gpl96 <- getGEO('GPL96’, destdir=“.”) ```
3、根据GSE号下载数据,下载_series_matrix.txt.gz
gse1009 <- getGEO('GSE1009’, destdir=“.”)
上⾯的代码下载的⽂件都会保存在本地,destdir参数指定下载地址。
⽐较重要的三个参数
是:GSEMatrix=TRUE,AnnotGPL=FALSE,getGPL=TRUE
然后是了解下载函数返回的对象
1、查看下载GDS后返回的对象
⽤Table(gds858)可以得到表达矩阵!
⽤Meta(gds858)可以得到描述信息!
具体代码如下:
options(warn=-1)suppressMessages(library(GEOquery))gds858 <- getGEO('GDS858',
destdir=".")names(Meta(gds858))Table(gds858)[1:5,1:5]
然后还可以⽤ GDS2eSet函数把它转变为expression set 对象, expression set这个对象⾮常之重要,后续会详细讲解:
eset <- GDS2eSet(gds858, do.log2=TRUE)
2、GSE
直接根据GSE号返回的对象:gse1009,就是expression set 对象
我们的处理函数有:geneNames/sampleNames/pData/exprs (这个是重点,对expression set 对象的操作函数)
3、GPL
根据GPL号下载返回的对象跟GDS⼀样,也是⽤Table/Meta处理!
options(warn=-1)suppressMessages(library(GEOquery))gpl96 <- getGEO('GPL96',
destdir=".")names(Meta(gpl96))Table(gpl96)[1:10,1:4]
⼀般来说我们下载GPL是为了得到芯⽚的探针对应基因ID的关系列表,下⾯这个代码就是芯⽚ID的基因注释信息
#Table(gpl96)[1:10,c("ID","GB_LIST","Gene.Title","Gene.Symbol","Entrez.Gene")]Table(gpl96) [1:10,c("ID","Gene Title","Gene Symbol","ENTREZ_GENE_ID")]
包装成函数
downGSE <- function(studyID = "GSE1009", destdir = ".") { library(GEOquery) eSet <-
getGEO(studyID, destdir = destdir, getGPL = F) exprSet = exprs(eSet[[1]]) pdata =
pData(eSet[[1]]) write.csv(exprSet, paste0(studyID, "_exprSet.csv")) write.csv(pdata,
paste0(studyID, "_metadata.csv")) return(eSet)}
番外
也可以⽤GEOmetadb包来获取对应GEO数据的实验信息(得到metadata数据),可以批量得到多个GSE数据集的信息,如下:
GSE1009GSE10785GSE1133GSE11975GSE121GSE12409
执⾏下⾯代码即可:
library(GEOmetadb)if(!file.exists('GEOmetadb.sqlite')) getSQLiteFile()## 取决于⽹速哦('/path/GEOmetadb.sqlite')con <-
dbConnect(SQLite(),'/path/GEOmetadb.sqlite'))#dbListTables(con2)#dbListFields(con2,'gse')GeoList = read.table("diabetes.GEO.list")query = paste("select + from gsm where series_id in ( ' ", gsub(", ", " ', ' ", paste(Geolist[,1], collapse=",")," ')", seq=" ")querytmp = dbGetQuery(con2, query)write.csv(tmp, "diabetes.GEO.meta.csv")
作业
⼤家可以使⽤上⾯介绍的R包及GEO数据库知识,把⽂中列出的⼏个GSE数据集探索⼀下。
或者下⾯这些:
GSE11072 2009-gastric cancer SBC Human 16K cDNA MicroarrayGSE42872 2015-melanoma-vemurafenib HuGene-1_0-st GSE24673 2015-hub-gene-mcode-retinoblastoma HuGene-1_0-st GSE22863 2011-NSCLC HuGene-1_0-st GSE622221, GSE4180414, GSE5140122 A total of 117 samples (54 cases and 63 controls) Affymetrix Human Genome U133 Plus 2.0 Array 2015-HCCGSE21815 2016-CRC Agilent-014850 Whole Human Genome Microarray 4x44K。