GEO数据下载:网页下载和使用GEOquery包
GEO数据库里的数据是免费的,可以直接在线下载。但是,在下载数据之前你要了解GEO数据库的4个概念和4个数据存放类型:
GSE数据编号(Series)
GPL数据编号(GEO platforms)
GSM数据编号(Samples)
GDS数据编号(Datasets)
一篇文章可以有一个或者多个GSE(Series)数据集,一个GSE里面可以有一个或者多个GSM(Samples)样本,而每个数据集都有着自己对应的芯片平台,就是GPL(GEO platforms)。GSE编号一般为作者提交时生成的原始数据编号,后续NCBI中的工作人员会根据研究目的、样品类型等信息归纳整合为一个GDS(Datasets),整理后的数据还会有GEO profile数据,也就是基因在这次实验中的表达数据。GDS里面的数据往往对应相同的平台具有可比性,另外,不是所有的GSE数据都能被整理,所以,有的GSE数据里面没有GDS数据也是正常。

GEO2R分析工具使用链接
R语言下载表达数据方法,第一种,使用GEOquery包。这个方法完成了手动数据下载和Bioconductor常见数据结构ExpressionSet的构造。(关于这个数据结构的具体介绍看Bioconductor的介绍或者视频,简言之,可以用于存放 实验信息, 分组信息和表达信息, 方便后续调用的数据结构。)第二种:在网页下载cel原始数据自己制作表达矩阵;第三种,在网页下载Series Matrix File(s)(TXT)表达矩阵。
GEOquery包实践debug:
> library(GEOquery)
Error: package or namespace load failed for ‘GEOquery’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
there is no package called ‘tibble’
解决方法:安装“tibble”包即可。。。
第一种:
#下载GSE表达矩阵
getwd()
library(GEOquery)
GSE4271 <- getGEO('GSE4271',GSEMatrix=TRUE,AnnotGPL=TRUE,destdir="./")
#make sure that all of the GSMs are from the same platform:
show(gset)
exprSet <- exprs(GSE4271[[1]])
View(exprSet)
#数据下载结束
第二种使用tar原始数据制作表达矩阵的方法也可以使用,具体如下:
可以直接点击http下载tar打包的数据, 然后解压缩得到所有的CEL文件。(还有一种使用getGEOSuppFiles函数的方法,我试了几个代码总是不行,也不知道为什么,有时间再好好学习下)也可以在R中下载tar文件:
然后对原始数据操作成表达矩阵:
setwd("D:/wym/R_exercise/GSE13535_RAW")
library(affy)
# ReadAffy: 读取当前文件下的CEL格式文件,同时第一次还会从bioconductor上下载hugene10stv1用来注释cel文件。
affy.data <- ReadAffy()
length(affy.data)
# rma: 基于robust multi-arrary average(RMA)算法衡量表达量,从而将AffyBatch对象转换成ExpressionSet
eset.rma <- rma(affy.data)
# exprs: 获取ExpressionSet中的表达量矩阵
exprSet <- exprs(eset.rma)
#将表达量矩阵信息保存到本地
write.table(exprSet, "expr_rma_matrix.txt", quote=F, sep="\t")
#结束
然后是第三种,以GSE13535的表达矩阵为例,可以用浏览器到
https://ftp.ncbi.nlm.nih.gov/geo/series/GSE13nnn/GSE13535/matrix/下载。解压缩这个文件后,有一个txt文件, 这个txt分为两个部分。第一个部分是以"!"开头的样本的所有信息,如实验平台、处理、以及分组等信息。第二个部分则是后面的表达量信息。(这个和第一种方法GEOquary的表达矩阵结果一样,但和第二种结果不同。)
#使用这个句子可以直接提取txt中表达矩阵的部分
expr.df <- read.table(file = "GSE13535_series_matrix.txt", header =TRUE,
comment.char = "!", row.names=1)
可以从这个角度理解这三种方法: 最开始得到的都是CEL文件,CEL文件需要一系列的步骤才能转换成表达矩阵,例如去除批次效应、质控和过滤等,得到的表达矩阵在上传时会增加元数据信息(处理方法、分组信息),就成为我们下载的GSEXXXX_series_matrix.txt.gz. 通过手工解析加R语言简单操作得到了R语言中的数据框(data.frame), 而GEOquery能够帮助我们完成下载和解析这两个步骤。
只是本人不太明白的一点是:方法二和方法一三的结果并不同,这是为什么?该用什么数据?