正文开始: 近期,在使用GEOquery包处理数据时,出现问题: p_load(GEOquery, Biobase)
data = getGEO('GSE1561', destdir = getwd())
1、该命令默认下载/读取GSE1561_series_matrix.txt.gz文件,通过 exprs(data[[1]]) 从中提取探针表达谱,样本名丢失: 与 GSE1561_series_matrix.txt 文件中的信息相比,读取的内容被丢掉了一部分,而直接从'200010_at'探针开始,并将该行作为了列名: ![](http://image109.360doc.com/DownloadImg/2019/01/2121/152531551_3_20190121091828975)
2、同时,存在的另一个问题是,使用: Anno_data_f = fData(data[[1]])
提取出的探针注释信息与直接读取对应的 GPL96.soft 文件: Anno_data_t = Table(getGEO('GPL96', destdir = getwd())) # 下载/读取 GPL96.soft
结果不同,少了部分探针: setdiff(Anno_data_t$ID, Anno_data_f$ID)
![](http://image109.360doc.com/DownloadImg/2019/01/2121/152531551_4_20190121091829240)
可见,除了以'AFFX-'开头的质控对照探针外,其余的为前31个探针(刚好截至'200010_at'),所以我们可以合理的猜测,是 getGEO 读取文件时发生了问题。查看函数执行时显示的信息,如下: Found 1 file(s)GSE1561_series_matrix.txt.gzUsing locally cached version: ./GSE1561_series_matrix.txt.gzParsed with column specification:cols(.default = col_double(), 200010_at = col_character())See spec(...) for full column specifications.Using locally cached version of GPL96 found here:./GPL96.soft
而正常读取时,显示如下: Found 1 file(s)GSE1561_series_matrix.txt.gzUsing locally cached version: ./GSE1561_series_matrix.txt.gzParsed with column specification:cols(.default = coldouble(), IDREF = col_character())See spec(...) for full column specifications.Using locally cached version of GPL96 found here:./GPL96.soft
两者的区别在于,正常读取时,是将 GSE1561_series_matrix.txt 文件中的 ID_REF 行作为列名,即样本名,而错误读取时是将 200010_at 行作为列名,这与我们上面看到的结果一致! 这个数据读取的问题出在内部调用的 readr 包上,且出问题的是1.2版本: https://github.com/tidyverse/readr [1] ‘1.2.1’
同样针对使用GEOquery包出现问题的描述: https://github.com/tidyverse/readr/issues/925 不过,在更新的readr包中,问题已经解决: https://github.com/tidyverse/readr/pull/933 既然是包的问题,这里提供两种解决方法: 1、安装v1.1.1版本的readr p_load(devtools)
install_version('readr', version = '1.1.1')
2、安装最新版readr【推荐】 # 先卸载
p_delete(GEOquery, readr)
# 安装github上最新发布的readr
p_load_gh('tidyverse/readr')
packageVersion('readr') # ‘1.3.1.9000’
p_load(GEOquery)
重启R即可! 此时,重新执行 getGEO 读取数据,再通过 exprs(data[[1]]) 提取的探针表达谱正常。 但是对于问题2,使用 fData 获取的探针注释仍然缺少'AFFX-'开头的部分探针。其实,并非两种提取方法存在什么本质区别,而是...GSE1561_series_matrix.txt文件本身就未提供'AFFX-'开头的部分探针!所以,想要获取更全面的探针注释信息,推荐: Table(getGEO(GPLname, destdir = getwd())) # 替换真实的GPLname!
|