RNA-seq生信入门之Linux基础与R基础生物信息工具

Aspera——碾压prefetch命令的存在, 利用SRR号批

2022-06-18  本文已影响0人  嘿嘿嘿嘿哈

本节简单介绍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这两个数据:

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 &

② 批量下载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文件。(如果有更好办法,欢迎评论区留言讨论

era-fasp@fasp.sra.ebi.ac.uk:/vol1/srr/SRR772/001/SRR7722941
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
mv SRR7722941 SRR7722941.sra
parallel-fastq-dump -t 12  -O ./ --split-files --gzip -s SRR7722941.sra
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)

上一篇下一篇

猜你喜欢

热点阅读