什么鬼,你才60秒?

最近很多小伙伴表示,在使用R语言下载GEO数据集,或者其它文件,会遇到时间不够的情况,比如如下所示的报错:

In download.file(url, destfile, method, mode = "wb", ...) :
  URL 'https://seurat.nygenome.org/src/contrib/pbmc3k.SeuratData_3.1.4.tar
.gz': Timeout of 60 seconds was reached

其实就是全局变量utils::download.file() in R 里面,默认它仅仅是给你60秒的时间去下载文件。

一个很简单的解决方案就是  options(timeout=10000) :

# install.packages('devtools')
# devtools::install_github('satijalab/seurat-data')
library(SeuratData)  
getOption('timeout')
options(timeout=10000)
InstallData("pbmc3k")  
data("pbmc3k")   

这样,哪怕你的网络再差,也是可以慢慢等待,虽然耗时会很长,但是至少可以成功了。

参考:

  • https://stat.ethz.ch/R-manual/R-patched/library/base/html/Startup.html
  • https://stat.ethz.ch/R-manual/R-patched/library/base/html/options.html
  • http://endmemo.com/r/options.php

其实,如果是geo数据集,如果你使用默认的方式下载很慢,我们也提供了一个加速通道哦!(一般来说,60秒已经是绰绰有余)

rm(list = ls())
library(AnnoProbe)
# 获取表达量矩阵
gse_number <- 'GSE14762'
gset <- geoChina(gse_number)
## file downloaded in /Users/teemo/Documents/bioinfo/Apprentice_202106_/01_GEO_202106_/task/05_GSE14762_rmd_opt
## you can also use getGEO from GEOquery, by 
## getGEO('GSE14762', destdir=".", AnnotGPL = F, getGPL = F)
a=gset[[1]] 
dat=exprs(a) 
dim(dat)
## [1] 17232    22
# 检查,判断需不需要取log
dat[1:4,1:4] 
##    GSM368639 GSM368640 GSM368641 GSM368642
## 1      5.279     5.494     5.347     5.666
## 2     11.844    12.801    12.545    12.497
## 9      7.506     7.431     6.675     7.332
## 10     6.238     6.951     6.076     6.269

有了表达量矩阵,后续分析,就理所当然啦!

但是,如果你下载表达量矩阵发现搞不定,仍然是需要下载cel文件,就最好是不要使用r代码来下载了,直接去geo主页面浏览器点击下载,比如自己下载 GSE18997 :

library(oligo)
library(ggplot2) 
celFiles <- list.celfiles('GSE18997_RAW/',listGzipped = T,
                          full.name=TRUE)
celFiles
exon_data <- oligo::read.celfiles( celFiles ) 
dim(exprs(exon_data)) 
exprs(exon_data)[1:4,1:4]
### 标准化(一步完成背景校正、分位数校正标准化和RMA (robust multichip average) 表达整合)
exon_data_rma <- oligo::rma(exon_data  ) 
exp_probe <- Biobase::exprs(exon_data_rma)
exp_probe[1:4,1:4]

文末友情推荐

与十万人一起学生信,你值得拥有下面的学习班:

(0)

相关推荐