1GEO的概述

NCBI基因表达综合库(GEO)作为广泛的高通量实验数据的公共存储库。这些数据包括测量mRNA、基因组DNA和蛋白质丰度的单通道和双通道微阵列实验,以及非阵列技术,如基因表达序列分析(SAGE)、质谱蛋白质组数据和高通量测序数据。

在GEO组织的最基本层次上,有四种基本实体类型。前三种(样本、平台和系列)由用户提供;第四个是数据集,由GEO工作人员根据用户提交的数据编译和策划。看到GEO的主页为更多的信息。

1.1平台

平台记录描述阵列上的元素列表(例如,cdna,寡核苷酸探针,orf,抗体)或在该实验中可能被检测和量化的元素列表(例如,SAGE标签,多肽)。每个平台记录都被分配了一个唯一且稳定的GEO登录号(GPLxxx)。一个平台可以引用多个提交人提交的多个样本。

1.2样品

样品记录描述了处理单个样品的条件、所进行的操作,以及从样品中提取的每个元素的丰度测量。每个样本记录都被分配了一个唯一且稳定的GEO登录号(GSMxxx)。一个样本实体必须只引用一个平台,并且可以包含在多个系列中。

1.3系列

一个系列记录定义了一组被认为是组的一部分的相关样本,这些样本是如何相关的,以及它们是否以及如何排序的。系列提供了实验作为一个整体的焦点和描述。系列记录也可以包含描述提取数据、总结结论或分析的表格。每个系列记录都被分配一个唯一且稳定的GEO登录号(GSExxx)。系列记录有几种格式,由GEOquery独立处理。更小和新的GSEMatrix文件解析起来相当快;GEOquery使用一个简单的标志来选择使用GSEMatrix文件(见下文)。

1.4数据集

GEO数据集(GDSxxx)是GEO样本数据的策划集。GDS记录是一组在生物学和统计上具有可比性的GEO样本,是GEO数据显示和分析工具套件的基础。GDS中的样本引用相同的平台,也就是说,它们共享一组公共探测元素。假设GDS中每个样本的值测量是用等效的方式计算的,也就是说,背景处理和归一化等考虑因素在数据集中是一致的。通过GDS子集提供反映实验设计的信息。

2开始使用GEOquery

从GEO获取数据非常容易。只需要一个命令,getGEO.这个函数解释其输入,以确定如何从GEO获取数据,然后将数据解析为有用的R数据结构。使用方法非常简单。这将加载GEOquery库。

现在,我们可以自由访问任何GEO的条目。注意,在下面的示例中,我使用了与GEOquery包一起打包的文件。通常,您将只使用GEO添加,正如代码注释中所指出的那样。

现在,gds包含类的R数据结构GDS),表示来自GEO的GDS507条目。您将注意到,用于存储下载的文件名被输出到屏幕上(但没有保存到任何地方),以供以后使用getGEO(文件名=…)

我们可以对任何其他GEO加入做同样的事情,比如GSM11805, GEO样本。

3.GEOquery数据结构

GEOquery数据结构实际上有两种形式。第一,由GDSGPL,GSM它们的行为都类似,访问器对它们具有类似的效果。第四个GEOquery数据结构,GSE复合数据类型是否由的组合组成GSM而且GPL对象。我将首先解释前三个。

3.1GDS、GSM和GPL类

这些类中的每一个都由一个元数据头(几乎完全取自SOFT格式头)和一个GEODataTable组成。GEODataTable有两个简单的部分,一个是Columns部分,描述Table部分上的列标题。还有一个显示方法。例如,使用上面的gsm:

## [1] "1" ## ## $comment ##[1] "原始数据作为补充文件提供" ## ## $contact_address ## [1] "715 Albany Street, E613B" ## ## $contact_city ## [1] "Boston" ## ## $contact_country ## [1] "USA" ## ## $contact_department ## [1] "Genetics and Genomics"
## ID_REF值ab_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 - bic -5_at 2652.7 p# # 5 affx - bic -3_at 2019.5 P
##列# 1 ID_REF # 2值## 3 ABS_CALL ##描述## 1 # 2 MAS 5.0统计算法(平均缩放到500)## 3 MAS 5.0缺席,边缘,当前调用,Alpha1 = 0.05, Alpha2 = 0.065

GPL类的行为完全与GSM类。然而,GDS类具有与类关联的更多信息方法:

# #样品的疾病。国家个人GSM11815 RCC # # 035 # # 023 # # 3 GSM12069 GSM11832 RCC RCC 001 # # 4 GSM12083 RCC 005 # # 011 # # 6 GSM12106 GSM12101 RCC RCC 032 # # 7 GSM12274 RCC 2 # # 8 GSM12299 RCC 3 # # 9 GSM12412 RCC 4 # # 035 # # 11 GSM11827 GSM11810正常正常023 # # 12 GSM12078正常001 # # 13 GSM12099正常005 # # 14 GSM12269正常1 # # 15 GSM12287正常2 # # 16 GSM12301正常3 # # 17 GSM12448正常4

3.2GSE类

GSE是GEO实体中最容易混淆的。一个GSE条目可以表示在任意数量的平台上运行的任意数量的样本。的GSE类有一个元数据部分,与其他类一样。但是,它没有GEODataTable。相反,它包含两个列表,可以使用GPLList而且GSMList方法,每个方法的列表GPL而且GSM对象。举个例子:

## $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"
## [1] " gsm11805 " " gsm11810 " " gsm11814 " " gsm11815 " " gsm11823 " " gsm11827 " ## [7] " gsm11830 " " gsm11832 " " gsm11867 " " gsm12067 " " gsm12069 " " gsm12075 " " gsm12078 " ## [13] " gsm12079 " " gsm12083 " " gsm12098 " " gsm12099 " " gsm12098 " " gsm12099 " " gsm12100 " " gsm12101 " ## [19] " gsm12105 " " gsm12106 " " gsm12268 " " gsm12269 " gsm12270 " gsm12274 " ## [25] " gsm12283 " " gsm12287 " gsm12298 " gsm12299 " gsm12300 " " gsm12301 " ## [31] " gsm12399 " " gsm12412 " " gsm12444 " " gsm12448 "
# #一个类的对象“GSM”# # channel_count # #[1]“1”# # # #评论[1]“原始数据作为补充提供文件”# # contact_address # #[1]“E613B奥尔巴尼街715号”# # contact_city # #[1]“波士顿”# # contact_country # #[1]“美国”# # contact_department # #[1]“遗传学和基因组学”# # contact_email # #[1]“mlenburg@bu.edu”# # contact_fax # #[1]“617-414-1646”# # contact_institute # #[1]”波士顿大学医学院“# # contact_name # #[1]”马克·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] "年龄= 70;性别=女;右肾;邻近肿瘤类型=透明细胞;邻近肿瘤Fuhrman分级= 3级;邻近肿瘤囊穿透= true;肾周脂肪浸润=真;邻近肿瘤肾窦侵犯=假;邻近肿瘤肾静脉侵犯=真;缩放目标= 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 ...
## [1] " gpl96 " " gpl97 "

参见下面获取GSE信息的另一种首选方法。

4转换为BioConductor表达式集和limma mists

GEO数据集(不像其他GEO实体)非常类似于limma数据结构MAListBiobase数据结构ExpressionSet.因此,有两个函数,GDS2MA而且GDS2eSet完成这个任务。

4.1将GSE系列矩阵文件作为表达式集

GEO系列是相关实验的集合。除了具有相当大的SOFT格式文件之外,NCBI GEO还准备了一个基于制表符分隔的文本的更简单的格式文件。的getGEO函数可以处理这种格式,并将解析非常大的gse非常快。从这个解析返回的数据结构是一个expressionset列表。作为示例,我们下载并解析GSE2553。

## $ gse2553_series_矩阵.txt.gz ## ExpressionSet (storageMode: lockedEnvironment) ## assayData: 12600个特征,181个样本##元素名称:exprs ##协议数据:无##表型数据## 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 PenAtChimeric_Cluster_IDs (13 total) ## fvarMetadata: Column Description labelDescription ## experimentData: use 'experimentData(object)' ## pubMedIds: 16230383 ## Annotation: GPL1977
##标题类型## GSM48681患者样本ST18,皮肤纤维肉瘤RNA ## GSM48682患者样本ST410,尤因肉瘤RNA ## GSM48683患者样本ST130,肉瘤,NOS RNA ## GSM48684患者样本ST293,恶性周围神经鞘肿瘤RNA ## GSM48685患者样本ST367,脂肪肉瘤RNA ##来源名ch1 ## GSM48681皮肤纤维肉瘤## GSM48682尤因肉瘤## GSM48683肉瘤,NOS ## GSM48684恶性周围神经鞘肿瘤## GSM48685脂肪肉瘤

4.2将GDS转换为表达式集

把我们的gds对象从上面,我们可以简单地做:

现在,eset是一个ExpressionSet包含与GEO数据集中相同的信息,包括样本信息,我们可以在这里看到:

## ExpressionSet (storageMode: lockedEnvironment) ## assayData: 22645 features, 17 samples ##元素名称:exprs ##协议数据:none ##表型数据## sampleNames: GSM11815 GSM11832…GSM12448(总共17个)## varLabels:样本疾病。# varMetadata: labelDescription # featureData # featureNames: 200000_s_at 200001_at…AFFX-TrpnX-M_at (22645 total) ## fvarLabels: ID基因标题…GO:Component ID (21 total) ## fvarMetadata: Column labelDescription ## experimentData:使用'experimentData(object)' ## pubMedIds: 14641932 ##注释:
# #样品的疾病。国家个人# # 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正常035 # # GSM11827 GSM11827正常023 # # GSM12078 GSM12078正常001 # # GSM12099 GSM12099正常005 # # GSM12269 GSM12269正常1 # # GSM12287 GSM12287正常2 # # GSM12301 GSM12301正常3 # #GSM12448 GSM12448 normal 4

4.3将GDS转换为MAList

没有检索到注释信息(GEO称为平台信息),因为ExpressionSet通常不包含用于基因信息的槽。然而,获取这些信息很容易。首先,我们需要知道这个GDS使用的是什么平台。然后,另一个电话getGEO就能得到我们想要的。

# #[1]“GPL97”

所以,gpl现在包含来自GEO的GPL5的信息。不像ExpressionSet, limmaMAList是否存储基因注释信息,以便我们可以使用我们新创建的gpl类的GPL在一个电话中GDS2MA像这样:

# #[1]“MAList”# # attr(“包”)# #[1]“limma”

现在,的类MAList不仅包含数据,还包含与GDS507相关的样本信息和基因信息。

4.4将GSE转换为表达式集

首先,确保使用上述“将GSE系列矩阵文件作为表达式集获取”一节中描述的方法来使用GSE系列矩阵文件是不够的,因为它要快得多、简单得多。如果不是(即需要来自每个GSM的其他列),则需要此方法。

转换GSE对象一个ExpressionSet对象目前需要一些R数据操作,因为可以存储在GSE和底层GSM而且GPL对象。然而,使用一个简单的例子将有望说明该技术。

首先,我们要确保所有的gsm都来自同一个平台:

# # # # $ 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,并使用该列表进行进一步处理

# # 17 [1]

那么,现在我们想知道哪一列代表我们想要提取的数据。查看单个GSM表的前几行可能会给我们一个思路(顺便说一下,GEO使用一种约定,包含每个数组的单个测量的列称为价值列,如果我们不知道其他什么列是最相关的,我们可以使用它)。

## ID_REF值ab_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 - bic -5_at 2652.7 p# # 5 affx - bic -3_at 2019.5 P
##列# 1 ID_REF ## 2 VALUE ## 3 ABS_CALL ## NA  ## NA.1  ##描述## 1 # 2 MAS 5.0统计算法(平均缩放到500)## 3 MAS 5.0缺席,边缘,当前呼叫与Alpha1 = 0.05, Alpha2 = 0.065 ## NA  ## NA.1 

我们确实会用到价值列。然后我们想用这些值做一个像这样的矩阵:

## 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 6.565293 6.583459 6.877744 6.652486 3.981853 ## [5,] 6.195741 gsm12100 gsm12105 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

注意我们做了一个匹配以确保值和平台信息的顺序相同。最后,要做出ExpressionSet对象:

## ExpressionSet (storageMode: lockedEnvironment) ## assayData: 22283个feature, 17个samples ##元素名称:exprs ##协议数据:none ##表型数据## sampleNames: GSM11805 GSM11814…GSM12444 (17 total) ## varLabels: samples ## varMetadata: labelDescription ## featureData: none ## experimentData:使用'experimentData(object)' ##注释:

所以,使用组合拉普兰人在GSMList上,可以根据需要提取尽可能多的感兴趣的列来构建所选的数据结构。因为GEO网站的GSM数据已经完全下载并包含在GSE对象,可以提取前景和背景以及双通道阵列的质量,例如。获取数组注释也稍微复杂一些,但是通过在lapply调用中替换' ' platform '来获取每个数组的平台信息,就可以获得与每个数组相关的其他信息。

5从GEO访问原始数据

NCBI GEO接受(但不总是需要)原始数据,如. cel文件、. cdf文件、图像等。有时,快速访问这些数据是很有用的。一个函数,getGEOSuppFiles,可以将GEO加入作为一个参数,并将下载与该加入相关的所有原始数据。默认情况下,该函数将在当前工作目录中创建一个目录来存储所选GEO接入的原始数据。结合一个简单的酸式焦磷酸钠语句或其他循环结构getGEOSuppFiles提供了一种非常简单的方式,可以快速、轻松地获取大量原始数据,而不需要知道GEO原始数据url的细节。

6用例

GEOquery可以非常强大地快速收集大量数据。通过一些示例可以帮助您了解如何实现数据挖掘目的。

6.1获取给定平台的所有系列记录

出于数据挖掘的目的,有时能够提取给定平台的所有GSE记录是很有用的。GEOquery使这变得非常简单,但是在开始之前需要了解一点GPL记录的知识。GPL记录包含引用它的GSE和GSM访问。一些代码可以用来说明这一点:

[HG-U133B] Affymetrix人类基因组U133B阵列"
## [1] " gse362 " " gse473 " " gse620 " " gse674 " " gse781 " " gse907 "
# # 165年[1]
## [1] " gsm3922 " " gsm3924 " " gsm3926 " " gsm3928 " " gsm3930 " " gsm3932 "
# # 7917年[1]

上面的代码将GPL97记录加载到r中。Meta方法从GPL记录中提取一个头信息列表。的标题给出了平台的人类名称。的series_id给出一个由一系列id组成的向量。请注意,该平台有165个系列和7917个样品。可以使用以下代码下载所有示例或系列。我只展示了前5个示例作为示例:

## [1] " gsm3922 " " gsm3924 " " gsm3926 " " gsm3928 " " gsm3930 "

7结论

GEOquery包提供了连接NCBI GEO存储库中包含的大量数组资源的桥梁。通过保持GEO数据的丰富性,而不是只关注于获取“数字”,可以将GEO数据集成到当前的Bioconductor数据结构中,并非常快速、轻松地对数据进行分析。这些工具有望更全面地向整个阵列社区开放GEO数据。

7.1援引GEOquery

如果用于支持自己的研究,请考虑引用GEOquery:

## ##如果使用GEOquery软件,请引用以下内容:## ## Davis, S.和Meltzer, P. S. GEOquery: Gene ## Expression Omnibus (GEO)和BioConductor之间的桥梁。LaTeX用户的BibTeX条目是## ## @Article{, ## author = {Sean Davis和Paul Meltzer}, ## title = {GEOquery:基因表达Omnibus (GEO)和BioConductor之间的桥梁},## journal ={生物信息学},## year = {2007}, # volume = {14}, # pages ={1846—1847},##}

7.2报告问题或bug

如果在使用GEOquery时遇到问题,则Bioconductor支持网站是寻求帮助的第一个好地方。如果您确信GEOquery中有一个bug(这很不寻常,但也不是没有听说过),可以在GEOquery github网站或者直接从R处提交错误报告(将打开一个新的github问题):

8会话信息

以下软件包和版本被用于这个小插图的生产。

## R版本4.1.0(21-05-18)##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 20.04.2 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.13-bioc/R/lib/libRblas. #因此## LAPACK: /home/biocbuild/bbs-3.13-bio /R/lib/libRlapack。因此## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# [3] LC_TIME=en_GB 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 ## ##附加的基本包:## [1]parallel stats graphics grDevices utils datasets methods ## [8] base ## ##其他附加的包:## [1]GEOquery_2.60.0 Biobase_2.52.0 BiocGenerics_0.38.0 ## [4] knitr_1.33 ## ##通过命名空间加载(并没有附加):## [1] pilar_1 .6.1 bslib_0.2.5.1 compiler_4.1.0 jquerylib_0.1.4 ## [5] tools_4.1.0 digest_0.6.27 jsonlite_1.7.2 evaluate_0.14 ## [9] lifecycle_1.0.0 tibble_3.1.2 pkgconfig_2.0.3 rlang_0.4.11 ## [13] rstudioapi_0.13 cli_2.5.0 DBI_1.1.1 curl_4.3.1 ## [17] yaml_2.2.1 xfun_0.23 xml2_1.3.2 dplyr_1.0.6 ## [25] stringl_1 .4.0 generics_0.1.0 vctrs_0.3.8 sass_0.4.0 ## [25] hms_1.1.0 tidyselect_1.1.1 glue_1.4.2 R6_2.5.0 ## [29] fansi_0.4.2 rmarkdown_2.8 limma_1 .48.0 purrr_0.3.4 ## [33] readr_1.4.0Tidyr_1.1.3 magrittr_2.0.1 ps_1.6.0 ## [37] htmltools_0.5.1.1 ellipsis_0.3.2 assertthat_0.2.1 utf8_1.2.1 ## [41] stringi_1.6.2 crayon_1.4.1