<p>According to the <a href="https://www.bioconductor.org/help/course-materials/2011/BioC2011/LabStuff/publicDataTutorial.pdf" rel="nofollow noreferrer">manual</a>, all you need to do is: </p>

<pre><code>library('GEOquery')
gseGSE16146 &lt;- getGEO('GSE16146', GSEMatrix=FALSE)
</code></pre>

<p>As explanation, <code>getGEO()</code> outputs by default to <code>GSEMatrix=TRUE</code> and returns a list of <code>ExpressionSet</code> objects. You should get what you were looking for with: </p>

<pre><code>Table(GSMList(gseGSE16146)[[1]])[1:5,]
</code></pre>

<p>The manual has also a paragraph about this: </p>

<blockquote>
  <p>The GSE has  a  metadata section, just like the other classes. 
  However, it doesn’t have a GEODataTable.  Instead, it contains two
  lists, accessible using GPLList and GSMList, that are each lists of
  GPL and GSM objects.</p>
</blockquote>

<p>I tested the code I posted on <code>R 3.3.2</code> and I get access to the Data Table just fine. </p>

<p>update: </p>

<p>Answering how to extract the actual expression data (not what asked in the original question): </p>

<pre><code>library(GEOquery) 
data = getGEO("GSE16146") 
datExpr = exprs (data[[1]])
</code></pre>

CC BY-SA 3.0
2017-08-30T09:59:59.743Z
Thanks. It works. Would you suggest how can I extract all the expression matrix for 80 samples (list) from the gseGSE16146?
panbar
CC BY-SA 4.0
2018-10-26T18:20:11.640Z
Hi thanks for your answer! What I didn't get is how do I access the actual expression data?
Tapper
CC BY-SA 4.0
2018-10-27T10:29:26.807Z
@Tapper I updated my answer above with how to extract the expression data from the experiment. hope it helps?
aechchiki
CC BY-SA 4.0
2018-10-29T19:30:07.790Z
@aechchiki Thank you! The snippet does not contain the data but a list in my case though: GSM4446615 GSM4446616 GSM4446617 GSM4446618. The file getGEO() got was anyway to small to contain the dataset imho. I finally got the data by downloading the big data file myself and processing it with: gse = read.table("GSE123456.txt", sep = "\t"); data=CreateSeuratObject(raw.data = gse, ..) -- What do you think?
Tapper
CC BY-SA 4.0
2017-08-30T09:30:20.967Z
2018-10-27T10:28:02.497Z
2018-10-27T10:28:02.497Z
aechchiki
<p>I have downloaded <a href="https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE16146" rel="noreferrer">GSE16146</a> dataset from GEO using GEOquery R package. </p>

<p>I would like to extract "Data table" from downloaded GSE16146.  </p>

<pre><code>&gt;library("GEOquery")
&gt;GSE16146 &lt;- getGEO("GSE16146")
&gt;Table(GSE16146)[1:5,]
</code></pre>

<p>This returns the following error:</p>

<pre><code>&gt; Table(GSE16146)[1:5,]
Error in (function (classes, fdef, mtable)  :
unable to find an inherited method for function ‘Table’ for signature ‘"list"’
</code></pre>

<p>Can anyone help?</p>

CC BY-SA 3.0
2017-08-30T07:48:12.227Z
Have you tried the function `getGSEDataTables` to access GSE Data Tables from GEO, as reported in this [tutorial](http://genomicsclass.github.io/book/pages/GEOquery.html)? Also, what version of R/GEOquery are you using?
aechchiki
CC BY-SA 3.0
2017-08-30T08:51:53.413Z
GEOquery version 2.42.0, R version 3.4.0  > getGSEDataTables(gset)
Error in as.character.default(<S4 object of class "GSE">) : 
  no method for coercing this S4 class to a vector
panbar
CC BY-SA 3.0
2017-08-30T18:26:43.823Z
The error is telling you that you can't calculate a `Table` for a list. Also you might have tried to use `table` instead of `Table`.
llrs
<r><bioconductor><microarray><geoquery>
Extracting expression data from GSE dataset downloaded from GEO
# Extracting expression data from GSE dataset downloaded from GEO

(Asked by: username_0 on 2017-08-30)

I have downloaded GSE16146 dataset from GEO using GEOquery R package. 
I would like to extract "Data table" from downloaded GSE16146.  
>library("GEOquery")
>GSE16146 <- getGEO("GSE16146")
>Table(GSE16146)[1:5,]

This returns the following error:
> Table(GSE16146)[1:5,]
Error in (function (classes, fdef, mtable)  :
unable to find an inherited method for function ‘Table’ for signature ‘"list"’

Can anyone help?

**Tags:** r, bioconductor, microarray, geoquery
> **Comments:**
> **username_1**: Have you tried the function `getGSEDataTables` to access GSE Data Tables from GEO, as reported in this [tutorial](http://genomicsclass.github.io/book/pages/GEOquery.html)? Also, what version of R/GEOquery are you using?  
> **username_0**: GEOquery version 2.42.0, R version 3.4.0  > getGSEDataTables(gset) Error in as.character.default(<S4 object of class "GSE">) :    no method for coercing this S4 class to a vector  
> **username_2**: The error is telling you that you can't calculate a `Table` for a list. Also you might have tried to use `table` instead of `Table`.  

---

## 1 answers

### Answer by username_1 on 2017-08-30. Score: 8

According to the manual, all you need to do is: 
library('GEOquery')
gseGSE16146 <- getGEO('GSE16146', GSEMatrix=FALSE)

As explanation, getGEO() outputs by default to GSEMatrix=TRUE and returns a list of ExpressionSet objects. You should get what you were looking for with: 
Table(GSMList(gseGSE16146)[[1]])[1:5,]

The manual has also a paragraph about this: 

The GSE has  a  metadata section, just like the other classes. 
  However, it doesn’t have a GEODataTable.  Instead, it contains two
  lists, accessible using GPLList and GSMList, that are each lists of
  GPL and GSM objects.

I tested the code I posted on R 3.3.2 and I get access to the Data Table just fine. 
update: 
Answering how to extract the actual expression data (not what asked in the original question): 
library(GEOquery) 
data = getGEO("GSE16146") 
datExpr = exprs (data[[1]])

> **Comments:**
> **username_0**: Thanks. It works. Would you suggest how can I extract all the expression matrix for 80 samples (list) from the gseGSE16146?  
> **username_3**: Hi thanks for your answer! What I didn't get is how do I access the actual expression data?  
> **username_1**: @Tapper I updated my answer above with how to extract the expression data from the experiment. hope it helps?  
> **username_3**: @aechchiki Thank you! The snippet does not contain the data but a list in my case though: GSM4446615 GSM4446616 GSM4446617 GSM4446618. The file getGEO() got was anyway to small to contain the dataset imho. I finally got the data by downloading the big data file myself and processing it with: gse = read.table("GSE123456.txt", sep = "\t"); data=CreateSeuratObject(raw.data = gse, ..) -- What do you think?  

---

