Aspera——碾压prefetch命令的存在, 利用SRR号批量高效下载FASTQ或SRA数据

本节简单介绍Aspera安装和使用,并给出利用SRR号批量下载FASTQ或SRA数据的方法,通过比较发现aspera的下载速度与prefetch相比有了质的飞跃

前言:
我们下载测序数据一般使用sra-tools的prefetch功能,通过SRR号从NCBI的SRA数据库下载SRA文件,这种方式比较稳定,但下载速度有所限制且需要将SRA再转化为FASTQ文件,这过程中又会消耗不少时间和算力。
一种替代方法是使用Aspera软件,从EBI(European Bioinformatics Institute)的ENA(European Nucleotide Archive)数据库直接下载FASTQ格式文件,免去了转化格式的步骤,且下载速度有了质的提升,可以说是碾压prefetch。其缺点是有时候不太稳定,受网络影响速度波动大。


官网:https://www.ibm.com/products/aspera

1. Aspera的下载和安装

① conda 安装

这是最为简单方便的方式,推荐使用:

conda install -c hcc aspera-cli

② 官网安装包下载安装

参照:Aspera:基因组数据高速下载利器,以NCBI和EBI数据下载为例
官网下载地址:https://www.ibm.com/aspera/connect/
首先需要进入上面的aspera 下载地址,获取linux版本的下载链接,再运行以下代码:

# 下载
wget https://d3gcli72yxqn2z.cloudfront.net/downloads/connect/latest/bin/ibm-aspera-connect_4.2.0.42_linux.tar.gz
# 解压
tar xvf ibm-aspera-connect******.tar.gz   
# 解压后得到一个脚本文件,运行该脚本,即可完成自动安装
bash ibm-aspera-connect*******.sh
# 所有安装文件都在~/.aspera/connect目录下,在 ~/.bashrc添加环境变量
export PATH=~/.aspera/connect/bin/:$PATH
# 使环境变量生效
source  ~/.bashrc

2. 基本参数与使用

https://www.ibm.com/support/pages/downloading-data-ncbi-command-line#usage

① 使用示例:

下载SRR12207279_1.fastq.gz文件到当前文件夹:

ascp  -vQT -l 500m -P33001 -k 1 -i \
~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR122/079/SRR12207279/SRR12207279_1.fastq.gz  ./

############### 主要使用参数 #################
-v 详细模式
-Q 用于自适应流量控制,磁盘限制所需
-T 设置为无需加密传输
-l 最大下载速度,一般设为500m
-P TCP 端口,一般为33001
-k 断点续传,通常设为 1
-i 免密下载的密钥文件

② 密钥文件路径

如果是安装包安装的方式,私钥文件一般位于~/.aspera/connect/etc/asperaweb_id_dsa.openssh
如果是conda安装的方式,先使用which ascp命令查看ascp命令所在路径:


再将bin及之后内容替换为 etc/asperaweb_id_dsa.openssh
如上图中替换后,密钥文件路径就为/home/gu/miniconda3/envs/share/etc/asperaweb_id_dsa.openssh
最后再ll查看确认一下密匙路径:

③ 从EBI获取FASTQ文件下载地址

https://www.ebi.ac.uk/ena/browser/home中搜索GSE号等信息(如:GSE154290),找到所需的项目,Column Select勾选fastq_aspera及其他想要的信息,直接点击复制Aspera下载地址,或者下载TSV文件,其中包含有FASTQ文件下载地址信息等



有了下载地址,其实就可以批量写循环下载了:参见生信技能树文章 使用ebi数据库直接下载fastq测序数据的改进脚本


3. 利用SRR号批量下载FASTQ数据或SRA数据

在有了SRR号的情况下,还可以用下面的方法直接用脚本下载对应数据,而不用去EBI网站获取链接

① 批量下载FASTQ文件

观察FASTQ文件的Aspera下载地址:

era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR122/079/SRR12207279/SRR12207279_1.fastq.gz

可以发现其命名是很有规律的,很容易想到可以编写脚本批量循环下载数据,下面示范下载SRR12207279和SRR12207280这两个数据:

  • 首先获取SRR号,导入到test路径下(test可替换成自己的项目路径)的idname文件,详细参见RNA-seq入门实战(一):上游数据下载、格式转化和质控清洗

    这里要注意每行不能有空格,否则后续运行脚本可能会出错,用cat -A命令检查一下每行是否SRR开头、$结尾:

  • 编辑、运行以下脚本,代码主要参考了
    (DownLoad)Aspera——ascp下载SRA数据 - 知乎 (zhihu.com)
    并加入了样本编号为SRR+8位数的情况,且能自动根据SRR号的位数下载对应数据;运行前注意修改密匙存放路径和自己的项目路径(替换test目录)
    (linux命令和R语言差别真是有点大,查了半天资料才搞明白linux中的逻辑判断语句的使用,艰难写出下面的代码.....)

vim ascp_fastq.sh
### ascp_fastq.sh脚本内容
echo -e "\n\n\n 000# ascp Download FASTQ !!! \n\n\n"
date
## 目录设置
mkdir -p  ~/test/raw/fq/
cd  ~/test/raw/fq/
pwd

## 密匙路径
openssh=/home/gu/miniconda3/envs/share/etc/asperaweb_id_dsa.openssh

cat ~/test/idname | while read id
do
num=`echo $id | wc -m ` #这里注意,wc -m 会把每行结尾$也算为一个字符
echo "SRRnum+1 is $num" #因此SRRnum + 1才等于$num值
#如果样本编号为SRR+8位数 #
if [ $num -eq 12 ]
then
        echo "SRR + 8"
        x=$(echo $id | cut -b 1-6)
        y=$(echo $id | cut -b 10-11)
        echo "Downloading $id "
        ( ascp  -QT -l 500m -P33001  -k 1 -i $openssh \
                era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/$x/0$y/$id/   ./ & )
#如果样本编号为SRR+7位数 #
elif [ $num -eq 11 ]
then
        echo  "SRR + 7"
        x=$(echo $id | cut -b 1-6)
        y=$(echo $id | cut -b 10-10)
        echo "Downloading $id "
        ( ascp  -QT -l 500m -P33001  -k 1 -i $openssh \
                        era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/$x/00$y/$id/   ./ & )
#如果样本编号为SRR+6位数 #
elif [ $num -eq 10 ]
then
        echo  "SRR + 6"
        x=$(echo $id |cut -b 1-6)
        echo "Downloading $id "
        ( ascp  -QT -l 500m -P33001 -k 1 -i  $openssh \
                        era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/$x/$id/   ./ & )
fi
done
nohup bash ascp_fastq.sh >log_ascp_fastq 2>&1 &
  • 运行结果如下,可以看到,在我的500M宽带下使用Aspera,5.8G数据下载用时460s,平均速度约13mb/s,下载过程中最高峰值速度可达到近40mb/s,这速度和prefetch相比可以说是飞快了!

② 批量下载SRA文件(10x数据)

奇怪的是,如果是10x单细胞数据,ENA数据库中每个数据存放的却只有一个fastq.gz文件,如GSE117988项目,尝试使用aspera下载其中的 SRR7722941数据后也确实只有一个fastq.gz文件:



10x上游使用Cellranger软件需要3个fastq文件...(参见生信技能树 单细胞实战(二) cell ranger使用前注意事项
没办法,只能继续先下载SRA文件,再用fasterq-dump(--split-files --include-technical 参数)或fastq-dump、 parallel-fastq-dump(--split-files参数)转成三个fastq文件。(如果有更好办法,欢迎评论区留言讨论

  • 首先观察SRR7722941数据的SRA文件下载地址:
era-fasp@fasp.sra.ebi.ac.uk:/vol1/srr/SRR772/001/SRR7722941
  • 可以发现其与FASTAQ文件下载地址相比,其实也就是其中的fastq/换成了srr/而已,套用上述①中脚本稍微改动一下即可:
echo -e "\n\n\n 000# ascp Download SRA !!! \n\n\n"
date
mkdir -p  ~/test/raw/sra/
cd  ~/test/raw/sra/
pwd

openssh=/home/gu/miniconda3/envs/share/etc/asperaweb_id_dsa.openssh

cat ~/test/idname | while read id
do
num=`echo $id | wc -m `
echo "SRRnum+1 is $num"
#如果样本编号为SRR+8位数 #
if [ $num -eq 12 ]
then
        echo "SRR + 8"
        x=$(echo $id | cut -b 1-6)
        y=$(echo $id | cut -b 10-11)
        echo "Downloading $id "
        ( ascp  -QT -l 500m -P33001  -k 1 -i $openssh \
                era-fasp@fasp.sra.ebi.ac.uk:vol1/srr/$x/0$y/$id/   ./ & )
#如果样本编号为SRR+7位数 #
elif [ $num -eq 11 ]
then
        echo  "SRR + 7"
        x=$(echo $id | cut -b 1-6)
        y=$(echo $id | cut -b 10-10)
        echo "Downloading $id "
        ( ascp  -QT -l 500m -P33001  -k 1 -i $openssh \
                        era-fasp@fasp.sra.ebi.ac.uk:vol1/srr/$x/00$y/$id/   ./ & )
#如果样本编号为SRR+6位数时 #
elif [ $num -eq 10 ]
then
        echo  "SRR + 6"
        x=$(echo $id |cut -b 1-6)
        echo "Downloading $id "
        ( ascp  -QT -l 500m -P33001 -k 1 -i  $openssh \
                        era-fasp@fasp.sra.ebi.ac.uk:vol1/srr/$x/$id/   ./ & )
fi
done
  • 用上述脚本下载SRR7722941数据的SRA文件结果如下,下载完成1016M数据,用时79s,平均速度13mb/s

    注意,这里下载的SRA文件没有.sra后缀,格式转换前需要先改名,再用parallel-fastq-dump转换为fastq.gz文件(否则parallel-fastq-dump会误认为要下载该SRR数据 ),最终生成3个FASTQ文件:
    (至于为什么选择parallel-fastq-dump呢,请参见fastq-dump、fasterq-dump和parallel-fastq-dump处理SRA文件的速度比较 - 简书 (jianshu.com)
mv SRR7722941 SRR7722941.sra
parallel-fastq-dump -t 12  -O ./ --split-files --gzip -s SRR7722941.sra
  • 最后再来比较一下相同网络条件下(500M宽带)使用prefetch命令的下载速度:同样下载1016M数据,prefetch用时195min,平均速度只有90kb/s,花费的时间是Aspera的近150倍。。。。。。(不过如果是后台同时下载多个文件,差距应该不至于那么大...)
time prefetch -p -O ./ SRR7722941

从以上可看出,相同网络状态下aspera的下载速度与prefetch相比有了质的提升,简直是碾压般的存在,因此在网络状况较好的情况下最好优先选择aspera下载吧


参考资料
Downloading data from NCBI via the command line (ibm.com)
使用ebi数据库直接下载fastq测序数据的改进脚本 (qq.com)
Aspera下载安装使用 - 简书 (jianshu.com)
从NCBI-SRA和EBI-ENA数据库下载数据 - 简书 (jianshu.com)
Aspera:基因组数据高速下载利器,以NCBI和EBI数据下载为例 (qq.com)
(DownLoad)Aspera——ascp下载SRA数据 - 知乎 (zhihu.com)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容