秘籍 | 惊了,使用aspera下载SRA数据速度高达 291M
2021-06-20 本文已影响0人
生信卷王
一、安装Aspera Connect
- 安装Linux版的Aspera Connect
# 上面链接是最新版,因此下载的时候去官网复制最新的链接地址下载,否则可能会报错
wget https://d3gcli72yxqn2z.cloudfront.net/connect_latest/v4/bin/ibm-aspera-connect-3.11.2.63-linux-g2.12-64.tar.gz
tar -zvxf ibm-aspera-connect-3.11.2.63-linux-g2.12-64.tar.gz
sh ibm-aspera-connect-3.11.2.63-linux-g2.12-64.sh
# 永久添加到环境变量
echo 'export PATH=~/.aspera/connect/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
二、简单使用
- 尝试下载一个小的数据集SRR14209175(343MB)
ascp -v -QT -l 300m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/SRR142/075/SRR14209175/SRR14209175.fastq.gz ./
- 结果,峰值速度达 ,速度惊人,数据用时
SRR14209175.fastq.gz 100% 343MB 191Mb/s 00:16
Completed: 351408K bytes transferred in 16 seconds (173214K bits/sec), in 1 file.
三、批量下载
- 提前准备好【srr.list】文件,格式如下
$ cat srr.list
SRR12362016
SRR12362017
SRR12362022
SRR12362023
SRR12362024
SRR12362025
- 新建shell脚本,命名为【asperaDownload.sh】,和【srr.list】放在同一个文件夹中
vi asperaDownload.sh
- 将下面的内容复制进去,里面的${y}需要根据情况微调,${i: -2}表达的意思就是截取字符串的后2位,${i: -1}截取字符串的后1位。特别说明的原因就是,有时候${y}是取一位,有时候取两位,所以要根据情况微调
#!/bin/bash
for i in $(cat srr.list)
do
x=$(echo $i | cut -b1-6)
y=`echo ${i: -2}`
echo "vol1/fastq/${x}/0${y}/${i}/${i}_1.fastq.gz" >>fastqid_trim.txt
echo "vol1/fastq/${x}/0${y}/${i}/${i}_2.fastq.gz" >>fastqid_trim.txt
done
ascp -v -QT -l 300m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh --mode recv --host fasp.sra.ebi.ac.uk --user era-fasp --file-list fastqid_trim.txt ./
rm fastqid_trim.txt
- 执行脚本
sh asperaDownload.sh
- 结果,峰值速度达 ,速度惊人,数据用时
SRR12362016_1.fastq.gz 100% 858MB 291Mb/s 03:28
SRR12362016_2.fastq.gz 100% 873MB 281Mb/s 04:40
SRR12362017_1.fastq.gz 100% 868MB 204Mb/s 06:16
SRR12362017_2.fastq.gz 100% 885MB 209Mb/s 07:13
SRR12362022_1.fastq.gz 100% 960MB 292Mb/s 09:34
SRR12362022_2.fastq.gz 100% 977MB 291Mb/s 10:56
SRR12362023_1.fastq.gz 100% 887MB 291Mb/s 12:01
SRR12362023_2.fastq.gz 100% 907MB 292Mb/s 14:08
SRR12362024_1.fastq.gz 100% 874MB 285Mb/s 17:45
SRR12362024_2.fastq.gz 100% 888MB 287Mb/s 18:54
SRR12362025_1.fastq.gz 100% 845MB 291Mb/s 20:37
SRR12362025_2.fastq.gz 100% 858MB 291Mb/s 27:01
Completed: 10942138K bytes transferred in 1621 seconds
四、ascp 参数说明
- 不要深究软件、代码怎么实现的,其实会用、目的达到就行了,真想仔细研究可以
ascp -h
查看,也可以参考以下我总结的,就这么点参数需要注意:
参数 | 说明 |
---|---|
-v |
唠叨模式,显示下载进度,以百分数显示,建议加上去 |
-QT |
-Q 指开启自主设定传输速率的功能,而-T 指启用密钥以获得最大传输速率,二者配合-l 和-m 使用。-l 指定最大传输速率,这也是我峰值速度达到291 Mb/s后没有继续上升的原因,因为我设置的是-l 300m ,默认是-l 100m ,理论推荐为300M-500M ,。-m 指定最小传输速率,一般不用设置,默认为-m 0
|
-P |
设置用于启动fasp会话的TCP端口,默认搭配-P 33001 不要乱改,否则报错 |
-k |
断点续传,非常必要的功能,能在意外情况下,继续下载文件,以免重新下载,设置-k1 即可。-k1 检查文件属性,如果匹配则继续;-k2 检查文件属性并做稀疏文件校验和,如果匹配就继续;-k3 检查文件属性并进行完整的文件校验和,如果匹配就继续 |
-i |
密钥地址,为固定位置:~/.aspera/connect/etc/asperaweb_id_dsa.openssh ,不要修改和移动 |
--mode |
两种模式可供选择send 和recv 。 --mode send 为上传模式,--mode recv 为接收模式,默认为--mode recv ,因此可在命令行中删除,没有大碍 |
--host |
指定下载地址的前缀信息,后缀信息不同网站也不同,具体要修改上述echo 中的代码。但我推荐要下载就去ENA下载,不要去NCBI和DDBJ下载,前车之鉴。 |
--user |
访问数据库的用户名,指定是去哪里下载 |
--file-list |
指定存放下载路径的文件夹,脚本中自动生成与删除,不用过多操心 |
./ |
最后不要忽略了保存路径 |
五、常见疑问
问:为什么我下载的这么慢,明明我设置的也是
-l 300m
却只有几Mb/s甚至几Kb/s?
- 答:1.你家或校园网的带宽就那么宽,你占满速度也提不上去。如千兆光纤(1000Mb/s)最大带宽就是1000÷8=125MB/s,你能达到的上限也就是125MB/s。又如校园网一般说办理的100M宽带,其实单位是M/s,因此最大带宽就是12.5MB/s如此类推。
2.网络波动,或者其他人占用了一部分带宽(如看剧,下载东西),这种情况就只有在人少或者夜晚下载。
3.EBI或者NCBI访问人数过多,造成网络拥挤,这种情况就只有多尝试几次。
4.你没有加参数-Q
,没有启动自主设定传输速率的功能,但不加默认是100M,理论上也不应该太慢,因此这种概率低
问:Session Stop (Error: Failed to open TCP connection for SSH)咋回事?
- 答:加上
-P33001
即可。
如果依旧不行就不好搞了,因为需要管理员权限,可是我们做生信的哪里去搞服务器权限?但如果你老板给你了,那就运行下面的命令即可,然后再加上-P33001
。我没有试验官方给出的解决方案,如果你成功了,请告知我,谢谢
iptables -I INPUT -p tcp --dport 33001 -j ACCEPT
iptables -I OUTPUT -p tcp --dport 33001 -j ACCEPT
问:断点续传对fasta/q序列文件的完整性有怎样的影响?
- 答: ,因为后续分析对fa/fq文件格式要求严格,如fq但凡不是四行四行的出现,首先在QC的时候就会报错,因此断点续传看着有用,但有时候是自欺欺人,所以一但下载终止,最好的方法就是把要续传的文件删干净,一个以【.aspera-ckpt】结尾,一个以【.partial】结尾,删除后重新下载!
问:既然断点续传对fasta/q序列文件的完整性有影响,那我不加k1可以嘛?
- 答: ,因为当你批量下载的时候,如果有的下载成功了,有的下载失败了,这时候重新跑脚本的时候,k1的作用就体现了,他可以跳过下载完整的文件,避免重复下载浪费时间!
问:ascp: failed to authenticate, exiting. Session Stop (Error: failed to authenticate) 怎么回事?
- 答:,因为这种并不能称之为错误,而是网络问题,今天不行,明天再次尝试可能就可以了。