无法访问 GEOquery R 中的 GSM 列表

Posted

技术标签:

【中文标题】无法访问 GEOquery R 中的 GSM 列表【英文标题】:Unable to access GSM List in GEOquery R 【发布时间】:2013-05-20 06:46:40 【问题描述】:

我正在使用包含 2 个系列矩阵的 GSE 集,并希望将整个事物转换为表达式集,以便我可以在 Limma 中使用它。我已经使用以下命令加载了 GSE:

> gse <- getGEO('GSE16560', GSEMatrix = T)

当我尝试访问 GSM 列表以检查平台时,我收到以下错误:

> GSMList(gse)
Error in (function (classes, fdef, mtable) :
    unable to fin an inherited method for function 'GSMList' for signature '"list"'

到目前为止,我检查了 gse 对象的尺寸,它是 NULL,所以没有帮助。此外,它不是一个列表。当我调用“Meta(gse)”时,它也会引发同样的错误。我对这些数据结构和一般的 R 比较陌生,所以如果有人能指出我正确的方向,那将是一个巨大的帮助。

【问题讨论】:

在Bioconductor mailing list 上询问适用于GEOquery 等Bioconductor 包。请务必包含sessionInfo() 的输出,以便列表中的其他人知道您正在使用的版本 R 和包。 @MartinMorgan 谢谢,这是一个很好的资源,我以前不知道 :) 【参考方案1】:

您的“gse”对象是两个表达式集的列表。

library(GEOquery)
gse <- getGEO('GSE16560', GSEMatrix = T)

class(gse)
# [1] "list"

length(gse)
# [1] 2

您可以使用双括号[[]] 来访问列表中的元素。

# get the class of the first element in the list
class(gse[[1]])
# [1] "ExpressionSet"
# attr(,"package")
# [1] "Biobase"

我相信GSMList 将适用于“GSE”类的对象,如果您将getGEO 的“GSEMatrix”参数更改为FALSE,您会得到这样的结果

既然您说您是 R 和这些数据结构的新手,请查看?str。它对于快速了解对象中存储的内容以及如何索引数据(如果出于某种原因需要这样做)非常有用。

str(gse[[1]])
# Formal class 'ExpressionSet' [package "Biobase"] with 7 slots
#   ..@ experimentData   :Formal class 'MIAME' [package "Biobase"] with 13 slots
#   .. .. ..@ name             : chr ""
#   .. .. ..@ lab              : chr ""
#   .. .. ..@ contact          : chr ""
#   .. .. ..@ title            : chr ""
#   .. .. ..@ abstract         : chr ""
#   .. .. ..@ url              : chr ""
#   .. .. ..@ pubMedIds        : chr ""
#   .. .. ..@ samples          : list()
#   .. .. ..@ hybridizations   : list()
#   .. .. ..@ normControls     : list()
#   .. .. ..@ preprocessing    : list()
#   .. .. ..@ other            : list()
#   .. .. ..@ .__classVersion__:Formal class 'Versions' [package "Biobase"] with 1 slots
#   .. .. .. .. ..@ .Data:List of 2
#   .. .. .. .. .. ..$ : int [1:3] 1 0 0
#   .. .. .. .. .. ..$ : int [1:3] 1 1 0
#   ..@ assayData        :<environment: 0x7fb344a81758> 
#   ..@ phenoData        :Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
#   .. .. ..@ varMetadata      :'data.frame':   44 obs. of  1 variable:
#   .. .. .. ..$ labelDescription: chr [1:44] NA NA NA NA ...
#   .. .. ..@ data             :'data.frame':   255 obs. of  44 variables:
# ....and so on and so forth

gse[[1]]@experimentData
# Experiment data
#   Experimenter name:  
#   Laboratory:  
#   Contact information:  
#   Title:  
#   URL:  
#   PMIDs:  
#   No abstract available.

# and one more example...
head(levels(gse[[1]]@phenoData@data$geo_accession))
# [1] "GSM416241" "GSM416242" "GSM416243" "GSM416244" "GSM416245" "GSM416246"

【讨论】:

【参考方案2】:

您可能正在关注 GEOquery 的小插曲。

您需要传递“GSEMatrix=F”而不是 TRUE。

> gse.withmatrix <- getGEO('GSE16560', GSEMatrix = T)
> gse.nomatrix   <- getGEO('GSE16560', GSEMatrix = F)

> class(gse.withmatrix[[1]])
[1] "ExpressionSet"
attr(,"package")
[1] "Biobase"

> class(gse.nomatrix)
[1] "GSE"
attr(,"package")
[1] "GEOquery"

> GSMList(gse.withmatrix)
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘GSMList’ for signature ‘"list"’

> GSMList(gse.nomatrix)
.....

【讨论】:

以上是关于无法访问 GEOquery R 中的 GSM 列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GEOquery 包提取示例标题(名称)?

getGEO 函数

getGEO 函数

getGEO 函数

getGEO 函数

使用GEOquery下载GEO数据--转载