「r<-包」UCSCXenaTools v1.2.7
今天在推特上看到 UCSC Xena 更新了关于 GDC 的数据
以及收到 B.C 君关于 UCSC Xena 支持断点续传的邮件
所以花了一下午时间重新审查了下项目相关的代码。更新有哪些呢?
单细胞数据 hub 域名更正
单细胞数据 hub 之前域名是 https://singlecell.xenahubs.net,现在是 https://singlecellnew.xenahubs.net,已更新。
GDC 数据下载问题的修复
详情见 https://github.com/ropensci/UCSCXenaTools/issues/12。原因是 GDC hub 的 URL 下载链接拼错了。UCSC Xena 的设计本身不是很规整,所以容易出这种问题,不过相应的也比较好修复。如果读者有发现类似的问题请及时提醒我。
数据下载断点续传的支持
之前 UCSC Xena 的数据集是不支持断点续传的,这对大文件很不友好,特别是 toil hub 中几个大型数据集都有5、6G。这个我原先是不知道的,用户有需求时我测试才发现它不支持。所以与 官方的 team 联系交流了下,在他们经过测试后现在已经对所有的数据 hub 进行了升级。
从用户角度来说,只需要在下载时增加几个选项的指定就可以了。下面是一个示例,推荐使用 curl 方法。
library(UCSCXenaTools)
xe = XenaGenerate(subset = XenaDatasets == "TcgaTargetGtex_expected_count")
xe
xq = XenaQuery(xe)
# You cannot resume from breakpoint in default mode
XenaDownload(xq, destdir = "~/test/", force = TRUE)
# You can do it with 'curl' command
XenaDownload(xq, destdir = "~/test/", method = "curl", extra = "-C -", force = TRUE)
# You can do it with 'wget' command
XenaDownload(xq, destdir = "~/test/", method = "wget", extra = "-c", force = TRUE)
数据的更新以及相关代码的优化
之前我使用 UCSCXenaTools 收录的数据集大概是 1650 个,现在有 1738个,有接近 100 个数据集的增加。是否有一些版本的更新我倒没仔细查看。
趁着数据集更新的机会花时间优化了更新代码。我上一次更新 XenaData 已经有好几个月了,一般不更新它,因为费时间。我相信用户之前如果想自己更新数据也会比较困难,因为之前是对每一个数据集进行查询,而且有2次这样的操作,接近两千个数据集的HTTP查询如果网不好肯定会断掉,等于没做。
现在则方便多了,之前感觉个把小时,现在大概几分钟就可以搞定。下面是实测:
> system.time(XenaDataUpdate(saveTolocal = F))
=> Obtaining info from UCSC Xena hubs...
...
=> Done.
用户 系统 流逝
3.832 0.120 70.285
原理在于我从 hub 层次去获取 cohort 信息,从 cohort 层次去获取 datasets 的信息。数据 hub 目前总共才 10 个,而 cohort 总共也就 100 多的样子,查询量至少少了 20 倍。
以后就算我没时间更新,用户如果获取到了官方的更新信息,也可以自己手动用函数更新了。
安装
最新版本已经提交到 CRAN,但是到可获取还需要几天时间,目前可以通过 GitHub 上安装:
# install.packages("remotes")
remotes::install_github("ropensci/UCSCXenaTools")