无法访问 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 列表的主要内容,如果未能解决你的问题,请参考以下文章