GEOquery 是 bioconductor 項目下的一個R包
官網:http://www.bioconductor.org/packages/release/bioc/html/GEOquery.html
下載安裝:
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("GEOquery")
GEO 是由NCBI負責維護的一個數據庫,期初是有芯片數據,后來增加了甲基化芯片和高通量測序數據。
只要看到文獻里面有提到 GEO 數據庫,都可以通過這個R包來進行批量下載,其實就是網頁版的一個API調用而已。
GEO 數據庫基礎知識(有另一篇博文專門介紹GEO數據庫)
GEO Platform (GPL) 芯片平台
GEO Sample (GSM) 樣本ID號
GEO Series (GSE) study 的ID號
GEO Dataset (GDS) 數據集的ID號
GEOquery 用法
常用函數,以及每個函數返回的對象該如何處理即可。
getGEO() 從GEO數據庫下載數據或者打開本地數據
返回值:GDS / GSE / GSM / GPL 具體返回值取決於GEO的參數

GEO參數 決定下載的數據種類,GDS / GSE / GSM / GPL
filename參數 如果已經下載好了文件,直接讀取
destdir參數 下載文件存放的地址,默認的是工作目錄
GSEMatrix參數 若為TRUE,則下載Matrix文件;若為FALSE,則下載SOFT文件。默認為TRUE。
getGPL參數 若為TRUE,則下載GPL注釋文件;若為FALSE,則不下載。默認為TRUE。
getGEOSuppFiles() 下載 supplementary data,包含 raw data
返回值:supplementary data

GEO參數 下載GSE的supplemental files
makeDirectory參數 若為TRUE,則默認新建文件夾並下載到里面;若為FALSE,則直接下載到工作目錄。默認為TRUE。
baseDir參數 指定下載目錄,默認為工作目錄
getGEOfile()
gunzip() 解壓gz格式的文件
返回值:從gz壓縮文件中提起的文件。

filename參數 需要解壓縮的文件名,可以為 list
destname參數 解壓縮之后的文件名,默認去除 .gz$
overwrite參數 是否覆蓋重名文件,默認為FALSE
remove參數 解壓完是否刪除原文件,默認為TRUE
這三個函數根據上面的四種ID下載數據的時候,返回的對象是不同的。
首先介紹 getGEO() 函數
-- gse1009 <- getGEO("GSE1009", destdir = ".") # 根據GSE號下載數據,下載 ***_series_matrix.txt.gz 文件
-- gds858 <- getGEO("GDS858", destdir = ".") # 根據GDS號下載數據,下載 soft 文件。 如果使用了 GSEMatrix = TRUE 這個參數,那么除了下載soft文件還會下載表達量矩陣文件,可以直接用read.table()函數讀取
-- gpl96 <- getGEO("GPL96", destdir = ".") # 根據GPL號下載的是芯片設計的信息
下載的文件都會保存在本地,destdir 參數用來指定下載地址。
getGEO()的比較重要的參數有:
GSEmatrix = TRUE
AnnotGPL = FALSE
getGPL = TRUE
根據返回對象的不同,針對返回對象的方法也不一樣
下載GSE返回對象的處理函數
即直接根據GSE號返回的對象:gse1009
相應的處理函數有:
geneNames
sampleNames
pData
exprs
下面的操作得到一個數值矩陣
expr <- read.table("GSE26253_series_matrix.txt", comment.char = "!", stringAsFactors = F)
下載GDS返回對象的處理函數
gds858返回的對象很復雜
用 Table(gds858) 可以得到表達矩陣
用 Meta(gds858) 可以得到描述信息
用 GDS2eSet() 函數把它轉變為 expression set 對象
library(GEOquery) gds858 <- getGEO("GDS858", destdir = ".") names(Meta(gds858)) Table(gds858)[1:5, 1:5]
eset <- GDS2eSet(gds858, do.log2 = TRUE)
g4100 <- GDS2eSet(getGEO("GDS4100"))
e4100 <- exprs(g4100) # 這樣e4100就是一個數值矩陣了,可以進行下游分析。
下載GPL返回對象的處理函數
根據GPL號下載返回的對象也用 Table() meta()處理
library(GEOquery) gpl <- getGEO("GPL96", destdir = ".") names(Meta(gpl96)) Table(gpl96)[1:10, 1:4] ## 下面這個就是芯片ID的基因注釋信息 Table(gpl96)[1:10, c("ID", "GB_LIST", "Gene.Symbol", "Entres.Gene")]
getGEO() 函數除了可以下載數據,也可以打開本地數據,使用參數 filename 指定本地數據文件
gds858 <- getGEO(filename = "GDS858.soft.gz")
