使用GEOquery下载GEO数据库数据超时问题
利用GEOquery进行数据下载遇到的超时问题
·
问题描述
使用R包GEOquery v2.72.0
时,出现使用curl下载超时的问题(超过120s就会报错),具体情况如下图
代码
gse <- getGEO(GEO = "GSE129374",destdir ='./data')
排查过程
首先排查网络问题,科学上网后发现还是会出现这个错误。报错的提示中表示downloadFile
函数报错。选择去查找downloadFile和getGEO函数的调用关系。
首先进入getGEO函数内部(rstudio等ide按住ctr+鼠标点击函数可以进入包的代码块,或者到github去找代码块,github也可以显示调用关系,但是要注意版本一致)。
发现getGEO
主要调用了parseGEO函数,进入getGEOfile
函数,找到了downloadFile
函数的调用
进入downloadFile
函数,发现开发者将超时时间设置死了为120s,这样在包内部写死timeout的做法是非常不推荐的。
因为是包内部将timeout写死,所以没有什么办法,于是去github issue
中寻找是否有人遇到同样的情况,发现有人对这个问题进行了阐述,并给了修复方法。Make timeout configurable in downloadFile() #139 作者也将改修改并入了新代码中。
该代码增加了可以自定义timeout的选项,即可以全局设置timeout,然后在函数中获取。
解决办法
因为作者将代码并入了main分支,只需根据github安装最新的版本即可。方法如下
BiocManager::install('seandavi/GEOquery')
packageVersion("GEOquery")
# 2.73.4
这时只需要全局设置timeout,即可避免问题发生
options(timeout=999999)
更多推荐
已为社区贡献1条内容
所有评论(0)