获取更好阅读体验,请访问:听说你的使用getGEO经常有网络问题?一行代码解决下载GEO表达谱和临床数据
1. 前言
GEO是做生信经常使用到的数据库了,很多小伙伴不会下载,接过不少这样的单子,其实使用R语言的GEOquery
包很容易实现。
但是,使用这个包下载经常会遇到网络问题,有时候总是需要尝试好几次才能下载成功,而且表达谱和临床数据还是要手动提取。
因此,本文就是为了解决这两个问题。
2. download_GEO
使用
小编编写了一个函数,名为 download_GEO
,其很大程度上解决了网络问题,因为它可以自动请求30
次下载,经过小编一两年的使用,30次是足够的,一般10次以内就会下载成功。
此外还自动保存了RData数据,包含了GPL、表达矩阵和样本注释数据,方便后续调用。还特意将样本注释表另外输出了csv格式,更加方便了我们查看数据集包含哪些样本注释信息,这个很有帮助!
download_GEO
仅需提供一个(GSE号)或两个(再加上输出目录,可选)参数就可以自动化运行。
接下来试用一下:
GSE = "GSE9476"
out_dir = "00_GEO_data"
start_time = Sys.time()
download_GEO(GSE = GSE, out_dir = out_dir)
end_time = Sys.time()
end_time - start_time
# INFO [2024-09-09 23:19:25.291245] Querying dataset: GSE9476 ...
# Try time 1 ... succeed.
# GPL: GPL96
# Found 64 samples, 51 metas
# writting sampleAnno to 00_GEO_data/GSE9476_sampleAnno.csv
# Successed, file save to 00_GEO_data/GSE9476.RData.
# Time difference of 3.40759 secs
可以看出仅仅用了4秒
不到的时间就完成了下载。还说明了这个数据集共有64个样本和51个注释信息。
看下输出目录:
cbind(dir(out_dir))
# [,1]
# [1,] "GSE9476.RData"
# [2,] "GSE9476_sampleAnno.csv"
# [3,] "GSE9476_series_matrix.txt.gz"
包含了RData、样本注释表和原始数据。
其中RData的内容如下:
names(obj)
# [1] "GPL" "resM" "sampleAnno"
分别是GPL平台ID、表达谱和样本注释表。
3. 重复请求的原理
实现重复请求的原理其实很简单,首先要解决的就是报错的问题,R中有个try
函数,它可以保存代码报错的结果,是的程序不会中断运行。
因此只要判断下载的那一部分代码是否成功运行就行了,如果不成功继续循环执行下载命令直至成功或者达到尝试次数上限。
4. 视频教学
具体的测试和函数代码,大家可以后台回复【download_GEO】即可获得。
此外,我还开始了B站的视频教学,希望更能帮助到大家。
本文的视频教学点击【阅读原文】即可访问。或复制BV号【BV1V5pEedEge】到B站APP即可观看。
欢迎评论区沟通交流!