GEO數(shù)據(jù)挖掘-使用GEOquery包

健明大神說過若是想學(xué)會使用R包阵具,就去看那個包的說明書橡淑,因此去學(xué)習(xí)了GEOquery包說明書匣摘。翻譯不當(dāng)之處請去看原文。
文章來源:
http://www.bioconductor.org/packages/release/bioc/html/GEOquery.html
http://www.bioconductor.org/packages/release/bioc/vignettes/GEOquery/inst/doc/GEOquery.html
備注:
GEO Platform (GPL) 芯片平臺
GEO Sample (GSM) 樣本ID號
GEO Series (GSE) study的ID號
GEO Dataset (GDS) 數(shù)據(jù)集的ID號

使用GEOquery包

肖恩戴維斯

2014年9月21日

1 GEO概述

NCBI Gene Expression Omnibus(GEO)作為各種高通量實驗數(shù)據(jù)的公共存儲庫。這些數(shù)據(jù)包括基于單通道和雙通道微陣列的實驗稚叹,檢測mRNA焰薄,基因組DNA和蛋白質(zhì)豐度,以及非陣列技術(shù)扒袖,如基因表達(dá)系列分析(SAGE)塞茅,質(zhì)譜蛋白質(zhì)組學(xué)數(shù)據(jù)和高通量測序數(shù)據(jù)。

在GEO最基本的組織層面季率,有四種基本實體類型野瘦。前三個(樣本,平臺和系列)由用戶提供; 第四飒泻,數(shù)據(jù)集由GEO工作人員根據(jù)用戶提交的數(shù)據(jù)進行編譯和策劃鞭光。相關(guān)更多信息啊掏,請參閱GEO主頁

1.1 平臺

平臺記錄描述陣列上的元件列表(例如衰猛,cDNA迟蜜,寡核苷酸探針組,ORF啡省,抗體)或可在該實驗中檢測和定量的元件列表(例如娜睛,SAGE標(biāo)簽,肽)卦睹。每個平臺記錄都分配有唯一且穩(wěn)定的GEO登錄號(GPLxxx)畦戒。平臺可以引用多個提交者提交的許多樣本。

1.2 樣品

樣品記錄描述了處理單個樣品的條件结序,它經(jīng)歷的操作以及從中得到的每個元素的豐度測量障斋。每個樣品記錄都分配有唯一且穩(wěn)定的GEO登錄號(GSMxxx)。Sample實體必須僅引用一個Platform徐鹤,可以包含在多個Series中垃环。

1.3 系列

系列記錄定義了一組被認(rèn)為是組的一部分的相關(guān)樣本,樣本如何相關(guān)返敬,以及它們是否以及如何排序遂庄。A系列提供了整個實驗的焦點和描述。系列記錄還可能包含描述提取數(shù)據(jù)劲赠,摘要結(jié)論或分析的表格涛目。每個系列記錄都分配有唯一且穩(wěn)定的GEO登記號(GSExxx)。系列記錄有幾種格式凛澎,由GEOquery獨立處理霹肝。較小的和新的GSEMatrix文件解析起來非常快; GEOquery使用一個簡單的標(biāo)志來選擇使用GSEMatrix文件(見下文)塑煎。

1.4 數(shù)據(jù)集

GEO DataSet(GDSxxx)是GEO樣本數(shù)據(jù)的精選集合沫换。GDS記錄代表了一系列具有生物學(xué)和統(tǒng)計學(xué)意義的GEO樣本,構(gòu)成了GEO數(shù)據(jù)顯示和分析工具套件的基礎(chǔ)轧叽。GDS中的樣本指的是同一個平臺苗沧,也就是說,它們共享一組共同的探測元素炭晒。假設(shè)GDS中每個樣本的值測量值以等效方式計算待逞,即背景處理和標(biāo)準(zhǔn)化等考慮因素在整個數(shù)據(jù)集中是一致的。通過GDS子集提供反映實驗設(shè)計的信息网严。

2 使用GEOquery入門

從GEO獲取數(shù)據(jù)非常簡單识樱。只需要一個命令,getGEO。這一函數(shù)解釋其輸入以確定如何從GEO獲取數(shù)據(jù)怜庸,然后將數(shù)據(jù)解析為有用的R數(shù)據(jù)結(jié)構(gòu)当犯。用法很簡單。這會加載GEOquery庫割疾。

library(GEOquery)

現(xiàn)在嚎卫,我們可以自由訪問任何GEO加入。請注意宏榕,在下面拓诸,我使用與GEOquery包一起打包的文件。通常麻昼,您將僅使用GEO加入奠支,如代碼注釋中所述。

# If you have network access, the more typical way to do this
# would be to use this:
# gds <- getGEO("GDS507")
gds <- getGEO(filename=system.file("extdata/GDS507.soft.gz",package="GEOquery"))

現(xiàn)在抚芦,gds包含GDS代表GEO的GDS507條目的R數(shù)據(jù)結(jié)構(gòu)(類)倍谜。您會注意到用于存儲下載的文件名已輸出到屏幕(但不保存在任何地方),以便以后用于調(diào)用getGEO(filename=...)叉抡。

我們可以對任何其他GEO加入進行相同的操作尔崔,例如GSM11805GEO樣本。

# If you have network access, the more typical way to do this
# would be to use this:
# gds <- getGEO("GSM11805")
gsm <- getGEO(filename=system.file("extdata/GSM11805.txt.gz",package="GEOquery"))

3 GEOquery數(shù)據(jù)結(jié)構(gòu)

GEOquery數(shù)據(jù)結(jié)構(gòu)實際上有兩種形式卜壕。第一個您旁,包含GDS烙常,GPLGSM所有行為相似轴捎,訪問者對每個都有類似的影響。第四個GEOquery數(shù)據(jù)結(jié)構(gòu)蚕脏,GSE是由對象GSMGPL對象組合而成的復(fù)合數(shù)據(jù)類型侦副。首先解釋前三個。

3.1 GDS驼鞭,GSM和GPL類

這些類中的每一個都包含一個元數(shù)據(jù)頭(幾乎從SOFT格式標(biāo)題中逐字逐句)和一個GEODataTable秦驯。GEODataTable有兩個簡單的部分,一個Columns部分挣棕,用于描述Table部分的列標(biāo)題译隘。show每個班級還有一種方法。例如洛心,使用上面的gsm:

# Look at gsm metadata:
head(Meta(gsm))
## $channel_count
## [1] "1"
## 
## $comment
## [1] "Raw data provided as supplementary file"
## 
## $contact_address
## [1] "715 Albany Street, E613B"
## 
## $contact_city
## [1] "Boston"
## 
## $contact_country
## [1] "USA"
## 
## $contact_department
## [1] "Genetics and Genomics"
# Look at data associated with the GSM:
# but restrict to only first 5 rows, for brevity
Table(gsm)[1:5,]
##           ID_REF  VALUE ABS_CALL
## 1 AFFX-BioB-5_at  953.9        P
## 2 AFFX-BioB-M_at 2982.8        P
## 3 AFFX-BioB-3_at 1657.9        P
## 4 AFFX-BioC-5_at 2652.7        P
## 5 AFFX-BioC-3_at 2019.5        P
# Look at Column descriptions:
Columns(gsm)
##     Column
## 1   ID_REF
## 2    VALUE
## 3 ABS_CALL
##                                                                  Description
## 1                                                                           
## 2                         MAS 5.0 Statistical Algorithm (mean scaled to 500)
## 3 MAS 5.0 Absent, Marginal, Present call  with Alpha1 = 0.05, Alpha2 = 0.065

GPL類的行為完全一樣的GSM類固耘。但是,GDS該類具有與該Columns方法相關(guān)的更多信息:

Columns(gds)[,1:3]
##      sample disease.state individual
## 1  GSM11815           RCC        035
## 2  GSM11832           RCC        023
## 3  GSM12069           RCC        001
## 4  GSM12083           RCC        005
## 5  GSM12101           RCC        011
## 6  GSM12106           RCC        032
## 7  GSM12274           RCC          2
## 8  GSM12299           RCC          3
## 9  GSM12412           RCC          4
## 10 GSM11810        normal        035
## 11 GSM11827        normal        023
## 12 GSM12078        normal        001
## 13 GSM12099        normal        005
## 14 GSM12269        normal          1
## 15 GSM12287        normal          2
## 16 GSM12301        normal          3
## 17 GSM12448        normal          4

3.2 GSE內(nèi)容

GSE實體是GEO實體中最混亂的词身。GSE條目可以表示在任意數(shù)量的平臺上運行的任意數(shù)量的樣本厅目。該GSE班有一個元數(shù)據(jù)部分,就像其他類。但是损敷,它沒有GEODataTable葫笼。相反,它包含兩個列表拗馒,可以使用GPLListGSMList方法訪問路星,每個列表都包含對象GPL和列表GSM。舉個例子:

# Again, with good network access, one would do:
# gse <- getGEO("GSE781",GSEMatrix=FALSE)
gse <- getGEO(filename=system.file("extdata/GSE781_family.soft.gz",package="GEOquery"))
head(Meta(gse))
## $contact_address
## [1] "715 Albany Street, E613B"
## 
## $contact_city
## [1] "Boston"
## 
## $contact_country
## [1] "USA"
## 
## $contact_department
## [1] "Genetics and Genomics"
## 
## $contact_email
## [1] "mlenburg@bu.edu"
## 
## $contact_fax
## [1] "617-414-1646"
# names of all the GSM objects contained in the GSE
names(GSMList(gse))
##  [1] "GSM11805" "GSM11810" "GSM11814" "GSM11815" "GSM11823" "GSM11827"
##  [7] "GSM11830" "GSM11832" "GSM12067" "GSM12069" "GSM12075" "GSM12078"
## [13] "GSM12079" "GSM12083" "GSM12098" "GSM12099" "GSM12100" "GSM12101"
## [19] "GSM12105" "GSM12106" "GSM12268" "GSM12269" "GSM12270" "GSM12274"
## [25] "GSM12283" "GSM12287" "GSM12298" "GSM12299" "GSM12300" "GSM12301"
## [31] "GSM12399" "GSM12412" "GSM12444" "GSM12448"
# and get the first GSM object on the list
GSMList(gse)[[1]]
## An object of class "GSM"
## channel_count 
## [1] "1"
## comment 
## [1] "Raw data provided as supplementary file"
## contact_address 
## [1] "715 Albany Street, E613B"
## contact_city 
## [1] "Boston"
## contact_country 
## [1] "USA"
## contact_department 
## [1] "Genetics and Genomics"
## contact_email 
## [1] "mlenburg@bu.edu"
## contact_fax 
## [1] "617-414-1646"
## contact_institute 
## [1] "Boston University School of Medicine"
## contact_name 
## [1] "Marc,E.,Lenburg"
## contact_phone 
## [1] "617-414-1375"
## contact_state 
## [1] "MA"
## contact_web_link 
## [1] "http://gg.bu.edu"
## contact_zip/postal_code 
## [1] "02130"
## data_row_count 
## [1] "22283"
## description 
## [1] "Age = 70; Gender = Female; Right Kidney; Adjacent Tumor Type = clear cell; Adjacent Tumor Fuhrman Grade = 3; Adjacent Tumor Capsule Penetration = true; Adjacent Tumor Perinephric Fat Invasion = true; Adjacent Tumor Renal Sinus Invasion = false; Adjacent Tumor Renal Vein Invasion = true; Scaling Target = 500; Scaling Factor = 7.09; Raw Q = 2.39; Noise = 2.60; Background = 55.24."
## [2] "Keywords = kidney"                                                                                                                                                                                                                                                                                                                                                                           
## [3] "Keywords = renal"                                                                                                                                                                                                                                                                                                                                                                            
## [4] "Keywords = RCC"                                                                                                                                                                                                                                                                                                                                                                              
## [5] "Keywords = carcinoma"                                                                                                                                                                                                                                                                                                                                                                        
## [6] "Keywords = cancer"                                                                                                                                                                                                                                                                                                                                                                           
## [7] "Lot batch = 2004638"                                                                                                                                                                                                                                                                                                                                                                         
## geo_accession 
## [1] "GSM11805"
## last_update_date 
## [1] "May 28 2005"
## molecule_ch1 
## [1] "total RNA"
## organism_ch1 
## [1] "Homo sapiens"
## platform_id 
## [1] "GPL96"
## series_id 
## [1] "GSE781"
## source_name_ch1 
## [1] "Trizol isolation of total RNA from normal tissue adjacent to Renal Cell Carcinoma"
## status 
## [1] "Public on Nov 25 2003"
## submission_date 
## [1] "Oct 20 2003"
## supplementary_file 
## [1] "ftp://ftp.ncbi.nih.gov/pub/geo/DATA/supplementary/samples/GSM11nnn/GSM11805/GSM11805.CEL.gz"
## title 
## [1] "N035 Normal Human Kidney U133A"
## type 
## [1] "RNA"
## An object of class "GEODataTable"
## ****** Column Descriptions ******
##     Column
## 1   ID_REF
## 2    VALUE
## 3 ABS_CALL
##                                                                  Description
## 1                                                                           
## 2                         MAS 5.0 Statistical Algorithm (mean scaled to 500)
## 3 MAS 5.0 Absent, Marginal, Present call  with Alpha1 = 0.05, Alpha2 = 0.065
## ****** Data Table ******
##           ID_REF  VALUE ABS_CALL
## 1 AFFX-BioB-5_at  953.9        P
## 2 AFFX-BioB-M_at 2982.8        P
## 3 AFFX-BioB-3_at 1657.9        P
## 4 AFFX-BioC-5_at 2652.7        P
## 5 AFFX-BioC-3_at 2019.5        P
## 22278 more rows ...
# and the names of the GPLs represented
names(GPLList(gse))
## [1] "GPL96" "GPL97"

請參閱下文诱桂,了解獲取GSE信息的其他首選方法奥额。

4 轉(zhuǎn)換為BioConductor ExpressionSets和limma MALists

GEO數(shù)據(jù)集(不像其他一些地理實體的),比較相似limma的數(shù)據(jù)結(jié)構(gòu)MAList访诱,并為Biobase數(shù)據(jù)結(jié)構(gòu)ExpressionSet垫挨。因此,有兩個功能触菜,GDS2MA九榔、GDS2eSet是完成這項任務(wù)。

4.1將 GSE Series Matrix文件作為ExpressionSet獲取

GEO系列是相關(guān)實驗的集合涡相。除了可用作非常大的SOFT格式文件外哲泊,NCBI GEO還根據(jù)制表符分隔的文本準(zhǔn)備了一個更簡單的格式文件。該getGEO函數(shù)可以處理這種格式催蝗,并且可以非城型快速地解析非常大的GSE。從此解析返回的數(shù)據(jù)結(jié)構(gòu)是ExpressionSets列表丙号。例如先朦,我們下載并解析GSE2553。

# Note that GSEMatrix=TRUE is the default
gse2553 <- getGEO('GSE2553',GSEMatrix=TRUE)
show(gse2553)
## $GSE2553_series_matrix.txt.gz
## ExpressionSet (storageMode: lockedEnvironment)
## assayData: 12600 features, 181 samples 
##   element names: exprs 
## protocolData: none
## phenoData
##   sampleNames: GSM48681 GSM48682 ... GSM48861 (181 total)
##   varLabels: title geo_accession ... data_row_count (30 total)
##   varMetadata: labelDescription
## featureData
##   featureNames: 1 2 ... 12600 (12600 total)
##   fvarLabels: ID PenAt ... Chimeric_Cluster_IDs (13 total)
##   fvarMetadata: Column Description labelDescription
## experimentData: use 'experimentData(object)'
## Annotation: GPL1977
show(pData(phenoData(gse2553[[1]]))[1:5,c(1,6,8)])
##                                                                  title
## GSM48681                      Patient sample ST18, Dermatofibrosarcoma
## GSM48682                           Patient sample ST410, Ewing Sarcoma
## GSM48683                            Patient sample ST130, Sarcoma, NOS
## GSM48684 Patient sample ST293, Malignant Peripheral Nerve Sheath Tumor
## GSM48685                             Patient sample ST367, Liposarcoma
##          type                         source_name_ch1
## GSM48681  RNA                     Dermatofibrosarcoma
## GSM48682  RNA                           Ewing Sarcoma
## GSM48683  RNA                            Sarcoma, NOS
## GSM48684  RNA Malignant Peripheral Nerve Sheath Tumor
## GSM48685  RNA                             Liposarcoma

4.2 將GDS轉(zhuǎn)換為ExpressionSet

gds從上面看我們的對象犬缨,我們可以簡單地做:

eset <- GDS2eSet(gds,do.log2=TRUE)

現(xiàn)在喳魏,eset是一個ExpressionSet包含相同的信息作為GEO數(shù)據(jù)集,包括樣品信息怀薛,我們可以在這里看到:

eset
## ExpressionSet (storageMode: lockedEnvironment)
## assayData: 22645 features, 17 samples 
##   element names: exprs 
## protocolData: none
## phenoData
##   sampleNames: GSM11815 GSM11832 ... GSM12448 (17 total)
##   varLabels: sample disease.state individual description
##   varMetadata: labelDescription
## featureData
##   featureNames: 200000_s_at 200001_at ... AFFX-TrpnX-M_at (22645
##     total)
##   fvarLabels: ID Gene title ... GO:Component ID (21 total)
##   fvarMetadata: Column labelDescription
## experimentData: use 'experimentData(object)'
##   pubMedIds: 14641932 
## Annotation:
pData(eset)[,1:3]
##            sample disease.state individual
## GSM11815 GSM11815           RCC        035
## GSM11832 GSM11832           RCC        023
## GSM12069 GSM12069           RCC        001
## GSM12083 GSM12083           RCC        005
## GSM12101 GSM12101           RCC        011
## GSM12106 GSM12106           RCC        032
## GSM12274 GSM12274           RCC          2
## GSM12299 GSM12299           RCC          3
## GSM12412 GSM12412           RCC          4
## GSM11810 GSM11810        normal        035
## GSM11827 GSM11827        normal        023
## GSM12078 GSM12078        normal        001
## GSM12099 GSM12099        normal        005
## GSM12269 GSM12269        normal          1
## GSM12287 GSM12287        normal          2
## GSM12301 GSM12301        normal          3
## GSM12448 GSM12448        normal          4

4.3 將GDS轉(zhuǎn)換為MAList

沒有注釋信息(由GEO稱為平臺信息)刺彩,因為ExpressionSet通常不包含基因信息。但是枝恋,很容易獲得這些信息创倔。首先,我們需要知道這個GDS使用的平臺焚碌。然后畦攘,代碼getGEO會給我們提供我們需要的東西。

#get the platform from the GDS metadata
Meta(gds)$platform
## [1] "GPL97"
#So use this information in a call to getGEO
gpl <- getGEO(filename=system.file("extdata/GPL97.annot.gz",package="GEOquery"))

所以呐能,gpl現(xiàn)在包含GEO的GPL信息念搬。與ExpressionSetlimma 不同抑堡,limma MAList存儲基因注釋信息,因此我們可以在調(diào)用中使用我們新創(chuàng)建gpl的類GPL朗徊,GDS2MA如下所示:

MA <- GDS2MA(gds,GPL=gpl)
class(MA)
## [1] "MAList"
## attr(,"package")
## [1] "limma"

現(xiàn)在首妖,MAMAList不僅包含數(shù)據(jù),還包含與GDS507相關(guān)的樣本信息和基因信息爷恳。

4.4 將GSE轉(zhuǎn)換為ExpressionSet

首先有缆,確保使用上面“將GSE系列矩陣文件作為表達(dá)式集獲取”部分中描述的方法來使用GSE Series Matrix文件不足以完成任務(wù),因為它更快更簡單温亲。如果不是(即棚壁,需要來自每個GSM的其他列),則將需要該方法栈虚。

轉(zhuǎn)換GSE對象到ExpressionSet對象目前采用比特的R數(shù)據(jù)操縱由于可存儲在所述變化數(shù)據(jù)GSE和底層GSMGPL對象袖外。但是,使用一個簡單的例子有望說明該技術(shù)魂务。

首先曼验,我們需要確保所有這些GSMs都來自同一平臺:

gsmplatforms <- lapply(GSMList(gse),function(x) {Meta(x)$platform_id})
head(gsmplatforms)
## $GSM11805
## [1] "GPL96"
## 
## $GSM11810
## [1] "GPL97"
## 
## $GSM11814
## [1] "GPL96"
## 
## $GSM11815
## [1] "GPL97"
## 
## $GSM11823
## [1] "GPL96"
## 
## $GSM11827
## [1] "GPL97"

實際上,有兩個GPL粘姜,GPL96和GPL97鬓照,作為他們的平臺(我們可以通過查看GPLList來確定gse)。我們可以過濾原始GSMList以僅包含具有GPL96平臺的那些GSM并使用該列表進行進一步處理

gsmlist = Filter(function(gsm) {Meta(gsm)$platform_id=='GPL96'},GSMList(gse))
length(gsmlist)
## [1] 17

所以孤紧,現(xiàn)在我們想知道哪個列代表我們想要提取的數(shù)據(jù)豺裆。查看單個GSM表的前幾行可能會給我們一個想法(順便說一下,GEO使用一種慣例号显,即每個數(shù)組包含單個測量的VALUE列稱為列臭猜,如果我們可以使用,我們不知道其他哪一欄最相關(guān))咙轩。

Table(gsmlist[[1]])[1:5,]
##           ID_REF  VALUE ABS_CALL
## 1 AFFX-BioB-5_at  953.9        P
## 2 AFFX-BioB-M_at 2982.8        P
## 3 AFFX-BioB-3_at 1657.9        P
## 4 AFFX-BioC-5_at 2652.7        P
## 5 AFFX-BioC-3_at 2019.5        P
# and get the column descriptions
Columns(gsmlist[[1]])[1:5,]
##        Column
## 1      ID_REF
## 2       VALUE
## 3    ABS_CALL
## NA       <NA>
## NA.1     <NA>
##                                                                     Description
## 1                                                                              
## 2                            MAS 5.0 Statistical Algorithm (mean scaled to 500)
## 3    MAS 5.0 Absent, Marginal, Present call  with Alpha1 = 0.05, Alpha2 = 0.065
## NA                                                                         <NA>
## NA.1                                                                       <NA>

我們確實會使用這個VALUE專欄获讳。然后我們想要制作這些值的矩陣,如下所示:

# get the probeset ordering
probesets <- Table(GPLList(gse)[[1]])$ID
# make the data matrix from the VALUE columns from each GSM
# being careful to match the order of the probesets in the platform
# with those in the GSMs
data.matrix <- do.call('cbind',lapply(gsmlist,function(x) 
                                      {tab <- Table(x)
                                       mymatch <- match(probesets,tab$ID_REF)
                                       return(tab$VALUE[mymatch])
                                     }))
data.matrix <- apply(data.matrix,2,function(x) {as.numeric(as.character(x))})
data.matrix <- log2(data.matrix)
data.matrix[1:5,]
##       GSM11805  GSM11814  GSM11823  GSM11830  GSM12067  GSM12075  GSM12079
## [1,] 10.926963 11.105254 11.275019 11.438636 11.424376 11.222795 11.469845
## [2,]  5.749534  7.908092  7.093814  7.514122  7.901470  6.407693  5.165912
## [3,]  7.066089  7.750205  7.244126  7.962896  7.337176  6.569856  7.477354
## [4,] 12.660353 12.479755 12.215897 11.458355 11.397568 12.529870 12.240046
## [5,]  6.195741  6.061776  6.565293  6.583459  6.877744  6.652486  3.981853
##       GSM12098  GSM12100  GSM12105  GSM12268  GSM12270  GSM12283  GSM12298
## [1,] 10.823367 10.835971 10.810893 11.062653 10.323055 11.181028 11.566387
## [2,]  6.556123  8.207014  6.816344  6.563768  7.353147  5.770829  6.912889
## [3,]  7.708739  7.428779  7.754888  7.126188  8.742815  7.339850  7.602142
## [4,] 12.336534 11.762839 11.237509 12.412490 11.213408 12.678380 12.232901
## [5,]  5.501439  6.247928  6.017922  6.525129  6.683696  5.918863  5.837943
##       GSM12300  GSM12399  GSM12444
## [1,] 11.078151 11.535178 11.105450
## [2,]  4.812498  7.471675  7.488644
## [3,]  7.383704  7.432959  7.381110
## [4,] 12.090939 11.421802 12.172834
## [5,]  6.281698  5.419539  5.469235

請注意活喊,我們這樣做是match為了確保值和平臺信息的順序相同。最后量愧,制作ExpressionSet對象:

require(Biobase)
# go through the necessary steps to make a compliant ExpressionSet
rownames(data.matrix) <- probesets
colnames(data.matrix) <- names(gsmlist)
pdata <- data.frame(samples=names(gsmlist))
rownames(pdata) <- names(gsmlist)
pheno <- as(pdata,"AnnotatedDataFrame")
eset2 <- new('ExpressionSet',exprs=data.matrix,phenoData=pheno)
eset2
## ExpressionSet (storageMode: lockedEnvironment)
## assayData: 22283 features, 17 samples 
##   element names: exprs 
## protocolData: none
## phenoData
##   sampleNames: GSM11805 GSM11814 ... GSM12444 (17 total)
##   varLabels: samples
##   varMetadata: labelDescription
## featureData: none
## experimentData: use 'experimentData(object)'
## Annotation:

因此钾菊,使用lapplyGSMList 的組合,可以根據(jù)需要提取盡可能多的感興趣的列來構(gòu)建所選擇的數(shù)據(jù)結(jié)構(gòu)偎肃。因為來自GEO網(wǎng)站的GSM數(shù)據(jù)被完全下載并包含在GSE對象中煞烫,所以例如可以提取雙通道陣列的前景和背景以及質(zhì)量。獲取數(shù)組注釋也有點復(fù)雜累颂,但通過在lapply調(diào)用中替換“platform”來獲取每個數(shù)組的平臺信息滞详,可以獲得與每個數(shù)組相關(guān)的其他信息凛俱。

5從GEO訪問原始數(shù)據(jù)

NCBI GEO接受(但并非總是需要)原始數(shù)據(jù),如.CEL文件料饥,.CDF文件蒲犬,圖像等。有時岸啡,快速訪問此類數(shù)據(jù)很有用术陶。單個函數(shù)getGEOSuppFiles可以將GEO登錄作為參數(shù)嗦篱,并將下載與該登錄關(guān)聯(lián)的所有原始數(shù)據(jù)。默認(rèn)情況下,該函數(shù)將在當(dāng)前工作目錄中創(chuàng)建一個目錄扫夜,以存儲所選GEO登錄的原始數(shù)據(jù)。結(jié)合簡單的sapply語句或其他循環(huán)結(jié)構(gòu)茫打,getGEOSuppFiles可以非常簡單地快速輕松地獲取原始數(shù)據(jù)混萝,而無需了解GEO原始數(shù)據(jù)URL的具體信息。

6 示例

GEOquery可以非常強大搬味,可以快速收集大量數(shù)據(jù)黍聂。一些示例可用于說明如何為數(shù)據(jù)挖掘目的進行此操作。

6.1 獲取給定平臺的所有系列記錄

出于數(shù)據(jù)挖掘的目的身腻,有時能夠為給定平臺提取所有GSE記錄产还。GEOquery使這很容易,但是開始時需要對GPL記錄有一點了解嘀趟。GPL記錄包含引用它的GSE和GSM加入脐区。一些代碼有助于說明這一點:

gpl97 <- getGEO('GPL97')
Meta(gpl97)$title
## [1] "[HG-U133B] Affymetrix Human Genome U133B Array"
head(Meta(gpl97)$series_id)
## [1] "GSE362" "GSE473" "GSE620" "GSE674" "GSE781" "GSE907"
length(Meta(gpl97)$series_id)
## [1] 163
head(Meta(gpl97)$sample_id)
## [1] "GSM3922" "GSM3924" "GSM3926" "GSM3928" "GSM3930" "GSM3932"
length(Meta(gpl97)$sample_id)
## [1] 7877

上面的代碼將GPL97記錄加載到R.Meta方法從GPL記錄中提取標(biāo)題信息列表。在title給該平臺的人的名字她按。在series_id給出一系列ID的載體牛隅。請注意,此平臺有163個系列和7877個樣本酌泰∶接叮可以使用以下代碼下載所有樣本或系列。只展示前5個樣本作為例子:

gsmids <- Meta(gpl97)$sample_id
gsmlist <- sapply(gsmids[1:5],getGEO)
names(gsmlist)
## [1] "GSM3922" "GSM3924" "GSM3926" "GSM3928" "GSM3930"

7 結(jié)論

GEOquery包為NCBI GEO存儲庫中包含的大量陣列資源提供了橋梁陵刹。通過保持GEO數(shù)據(jù)的豐富性而不是僅僅關(guān)注“數(shù)字”默伍,可以將GEO數(shù)據(jù)集成到當(dāng)前的Bioconductor數(shù)據(jù)結(jié)構(gòu)中,并且可以非乘ニ觯快速也糊,輕松地對該數(shù)據(jù)進行分析。希望這些工具能夠更全面地向陣列社區(qū)開放GEO數(shù)據(jù)羡宙。

7.1 引用GEOquery

如果用于支持您自己的研究狸剃,請考慮引用GEOquery:

citation("GEOquery")
## 
## Please cite the following if utilizing the GEOquery software:
## 
##   Davis, S. and Meltzer, P. S. GEOquery: a bridge between the Gene
##   Expression Omnibus (GEO) and BioConductor. Bioinformatics, 2007,
##   14, 1846-1847
## 
## A BibTeX entry for LaTeX users is
## 
##   @Article{,
##     author = {Sean Davis and Paul Meltzer},
##     title = {GEOquery: a bridge between the Gene Expression Omnibus (GEO) and BioConductor},
##     journal = {Bioinformatics},
##     year = {2007},
##     volume = {14},
##     pages = {1846--1847},
##   }

7.2報告問題或錯誤

如果在使用GEOquery時遇到問題,Bioconductor支持網(wǎng)站是尋求幫助的第一個好地方狗热。如果您確信GEOquery中存在錯誤(這是非常不尋常的钞馁,但并非聞所未聞)虑省,請隨時在GEOquery github網(wǎng)站上提交問題或直接從R提交錯誤報告(將打開一個新的github問題) :

bug.report(package='GEOquery')

8會話信息

以下包和版本用于制作此插圖。

## R version 3.5.0 (2018-04-23)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 16.04.4 LTS
## 
## Matrix products: default
## BLAS: /home/biocbuild/bbs-3.7-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.7-bioc/R/lib/libRlapack.so
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] parallel  stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
## [1] GEOquery_2.48.0     Biobase_2.40.0      BiocGenerics_0.26.0
## [4] knitr_1.20         
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_0.12.16     xml2_1.2.0       bindr_0.1.1      magrittr_1.5    
##  [5] hms_0.4.2        R6_2.2.2         rlang_0.2.0      stringr_1.3.0   
##  [9] dplyr_0.7.4      tools_3.5.0      htmltools_0.3.6  yaml_2.1.18     
## [13] rprojroot_1.3-2  digest_0.6.15    assertthat_0.2.0 tibble_1.4.2    
## [17] bindrcpp_0.2.2   purrr_0.2.4      tidyr_0.8.0      readr_1.1.1     
## [21] curl_3.2         glue_1.2.0       evaluate_0.10.1  rmarkdown_1.9   
## [25] limma_3.36.0     stringi_1.1.7    compiler_3.5.0   pillar_1.2.2    
## [29] backports_1.1.2  pkgconfig_2.0.1

生信技能樹公益視頻合輯:學(xué)習(xí)順序是linux僧凰,r探颈,軟件安裝,geo允悦,小技巧膝擂,ngs組學(xué)!
B站鏈接:https://m.bilibili.com/space/338686099
YouTube鏈接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists
生信工程師入門最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA
學(xué)徒培養(yǎng):https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw
生信技能樹 - 簡書 http://www.reibang.com/u/d645f768d2d5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隙弛,一起剝皮案震驚了整個濱河市架馋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌全闷,老刑警劉巖叉寂,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異总珠,居然都是意外死亡屏鳍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門局服,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钓瞭,“玉大人,你說我怎么就攤上這事淫奔∩轿校” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵唆迁,是天一觀的道長鸭丛。 經(jīng)常有香客問我,道長唐责,這世上最難降的妖魔是什么鳞溉? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮鼠哥,結(jié)果婚禮上熟菲,老公的妹妹穿的比我還像新娘。我一直安慰自己肴盏,他們只是感情好科盛,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菜皂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪厉萝。 梳的紋絲不亂的頭發(fā)上恍飘,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天榨崩,我揣著相機與錄音,去河邊找鬼章母。 笑死母蛛,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乳怎。 我是一名探鬼主播彩郊,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚪缀!你這毒婦竟也來了秫逝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤询枚,失蹤者是張志新(化名)和其女友劉穎违帆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體金蜀,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡刷后,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渊抄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尝胆。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖护桦,靈堂內(nèi)的尸體忽然破棺而出含衔,到底是詐尸還是另有隱情,我是刑警寧澤嘶炭,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布抱慌,位于F島的核電站,受9級特大地震影響眨猎,放射性物質(zhì)發(fā)生泄漏抑进。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一睡陪、第九天 我趴在偏房一處隱蔽的房頂上張望寺渗。 院中可真熱鬧,春花似錦兰迫、人聲如沸信殊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡拘。三九已至,卻和暖如春据德,著一層夾襖步出監(jiān)牢的瞬間鳄乏,已是汗流浹背跷车。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留橱野,地道東北人朽缴。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像水援,于是被迫代替她去往敵國和親密强。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容