不要让过往的成功经验困住你
别的不敢说,但是NGS数据处理,我应该算是高手了,各种组学均有涉猎,经手的项目也有千八百了,以前处理一些SRA数据库的数据的时候都是用wget进行下载,因为一直在墙外,很方便。
比如下面的srr.list
文,件是自己从SRA数据库里面找到的所有数据的SRR开头的ID号,如下:
SRR3776319
SRR3776320
SRR3821893
SRR3821894
SRR3943943
SRR3943944
SRR3943946
SRR3943947
SRR3821896
SRR3821897
我就会自己写shell脚本批量下载:
up=ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/
cat srr.list|while read id;
do
echo $id
echo ${up}/${id:0:6}/$id/${id}.sra
wget -c ${up}${id:0:6}/$id/${id}.sra
done
为什么构建这样的脚本,是因为我非常熟悉SRA数据库,以及里面的各种规则。
1.8T的数据,通常两天就下载完毕了,所以我没有放在心上,待我检查log日志的时候,发现有两个失败的,而且不是网速的问题。
cat download_failed.log
SRR3943921
ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR//SRR394/SRR3943921/SRR3943921.sra
--2018-02-08 00:09:06-- ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR394/SRR3943921/SRR3943921.sra
=> “SRR3943921.sra”
==> TYPE I ... done. ==> CWD (1) /sra/sra-instant/reads/ByRun/sra/SRR/SRR394/SRR3943921 ... done.
==> SIZE SRR3943921.sra ... done.
==> PASV ... done. ==> RETR SRR3943921.sra ...
No such file “SRR3943921.sra”.
SRR3943893
ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR//SRR394/SRR3943893/SRR3943893.sra
--2018-02-08 19:32:37-- ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR394/SRR3943893/SRR3943893.sra
=> “SRR3943893.sra”
==> TYPE I ... done. ==> CWD (1) /sra/sra-instant/reads/ByRun/sra/SRR/SRR394/SRR3943893 ... done.
==> SIZE SRR3943893.sra ... done.
==> PASV ... done. ==> RETR SRR3943893.sra ...
No such file “SRR3943893.sra”.
我仔细检查了其中一个失败的例子:
https://trace.ncbi.nlm.nih.gov/Traces/sra/?run=SRR3943893

https://www.ncbi.nlm.nih.gov/sra/SRX1969880
ftp://ftp-trace.ncbi.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR394/SRR3943893
发现的确是没有,但是另外的274个样本又都没有问题。
看样子根据构造的ftp链接下载sra文件的方法可能要过时了,wget本来就慢,现在还出错,好尴尬。
但是,还好有prefetch
~/biosoft/sratoolkit/sratoolkit.2.8.2-1-centos_linux64/bin/prefetch SRR3943893
prefetch下载的数据一般存放在~/ncbi/public/sra/
文件下,prefecth在下载前会先查找该文件下是否已经存在该文件。
耗费8分钟,下载了下面这个数据,虽然我还是不明白它的链接到底在哪里!
9.3G Feb 9 10:40 SRR3943893.sra
不过,我想应该是没有必要去纠结的,只是经验而已。