首先需要使用conda安装两个软件(kingfisher和aspera),大家现在可能会倾向于选择mamba来替代conda。所以可以安装有mamba的conda,比如自己去搜索后下载(Mambaforge-pypy3-23.11.0-0-Linux-x86_64.sh)这个文件去bash执行即可哈!

执行conda的安装两个软件(kingfisher和aspera),是如下所示的代码:

mamba create -n kingfisher python=3.8
mamba init
mamba list
# 重启terminal:
mamba activate kingfisher
mamba install -c bioconda kingfisher

mamba create -n download 
mamba activate download 
mamba install -y -c hcc aspera-cli 
which ascp 
## 一定要搞清楚你的软件被conda安装在哪,以及它配套的asperaweb_id_dsa.openssh 文件的路径
ls -lh   ~/mambaforge-pypy3/envs/download/etc/asperaweb_id_dsa.openssh  

可以看到,两个软件是被隔离在两个不同的软件里面,每次使用不同的软件都需要激活它自己所在的环境哦!

kingfisher下载

这个kingfisher软件,它一行代码下载 确实是很方便 :

mamba activate kingfisher
kingfisher  get -p PRJNA793914 -m ena-ascp ena-ftp prefetch aws-http 1>down_PRJNA793914.log 2>&1 &
kingfisher  annotate -p PRJNA793914 -f csv --all-column -o ./annotate_info.csv

但是,它默认调用aspera的高速下载失败:

 INFO: Running command: ascp -T -l 300m -P33001 -k 2 -i /home/data/jmzeng/miniconda3/envs/kingfisher/lib/python3.8/site-packages/kingfisher/data/asperaweb_id_dsa.openssh era-fasp@fasp.sra.:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz .
 
02/20/2024 06:52:57 PM WARNING: Error downloading from ENA with ASCP: Command ascp -T -l 300m -P33001 -k 2 -i /home/data/jmzeng/miniconda3/envs/kingfisher/lib/python3.8/site-packages/kingfisher/data/asperaweb_id_dsa.openssh era-fasp@fasp.sra.:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz . returned non-zero exit status 127.

STDERR was: b'bash: ascp: command not foundn'STDOUT was: b''
02/20/2024 06:52:57 PM WARNING: Method ena-ascp failed
02/20/2024 06:52:57 PM INFO: Attempting download method ena-ftp for run SRR17418283 ..
02/20/2024 06:52:57 PM INFO: Querying ENA for FTP paths for SRR17418283..
02/20/2024 06:52:59 PM INFO: Downloading ftp.sra./vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz ..

起初我以为它里面的链接是有问题:

 # 为什么失败?
 era-fasp@fasp.sra.:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz
 # 这个网页地址成功的
fasp.sra.:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz

后来跟我们的服务器管理员沟通后发现其实是因为kingfisher软件安装成功后虽然说会对应生成asperaweb_id_dsa.openssh 文件,但是其却没有 ascp 这个命令。所以还需要单独再安转一下aspera才能正常使用,kingfisher的官网也有说明,如果要 ena-ascp发挥作用,必须要再单独安装 ASpera:

必须要再单独安装 ASpera

所以其实kingfisher软件最后是通过了 ftp 链接去直接下载而已,并没有调用aspera的高速下载:

ftp.sra./vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz 

但是软件不会如此傻里傻气使用wget这样的初级下载命令 :

wget ftp.sra./vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz
--2024-02-22 20:06:44--  http://ftp.sra./vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz
Resolving ftp.sra. (ftp.sra.)... 193.62.193.165
Connecting to ftp.sra. (ftp.sra.)|193.62.193.165|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5245928025 (4.9G) [application/x-gzip]
Saving to: 'SRR17418283_1.fastq.gz’

SRR17418283_1.fastq.gz    0%[         
] 307.01K  25.4KB/s    eta 44h 

它最终调用的说 aria2 ,可以看到速度还不错。Aria2 是一个多平台轻量级,支持 HTTP、FTP、BitTorrent 等多协议、多来源的命令行下载工具。Aria2 可以从多个来源、多个协议下载资源,最大的程度上利用了你的带宽。

 ls -lh *gz|cut -d" " -f 5-
 7.1G 2月  21 01:30 SRR17418283_1.fastq.gz
  17G 2月  21 01:31 SRR17418283_2.fastq.gz
  13G 2月  21 02:25 SRR17418284_1.fastq.gz
  13G 2月  21 02:40 SRR17418284_2.fastq.gz
 1.2G 2月  21 02:41 SRR17418285_1.fastq.gz
 1.2G 2月  21 02:42 SRR17418285_2.fastq.gz
 1.6G 2月  21 02:44 SRR17418286_1.fastq.gz
 1.6G 2月  21 02:46 SRR17418286_2.fastq.gz
 1.3G 2月  21 02:47 SRR17418287_1.fastq.gz
 1.3G 2月  21 02:48 SRR17418287_2.fastq.gz 

因为我前面conda的安装两个软件(kingfisher和aspera)是在两个独立的环境,所以它们并不能互相调用。

aspera下载

在 项目的官网:https://www./ena/browser/view/PRJNA793914 进行如下所示的操作,主要是在Show Column Selection里面挑选fastq_aspera和fastq_md5这两个关键信息哈,然后就可以输出 TSV文件下载:

挑选fastq_aspera和fastq_md5这两个关键信息

可以自己制作文件名字(fq.txt )内容如下所示::

fasp.sra.:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_1.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/083/SRR17418283/SRR17418283_2.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/086/SRR17418286/SRR17418286_1.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/086/SRR17418286/SRR17418286_2.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/087/SRR17418287/SRR17418287_1.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/087/SRR17418287/SRR17418287_2.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/090/SRR17418290/SRR17418290_1.fastq.gz
fasp.sra.:/vol1/fastq/SRR174/090/SRR17418290/SRR17418290_2.fastq.gz

有了上面的文件(fq.txt ),接下来就只需要一个脚本即可:step1-aspera.sh

cat fq.txt |while read id
do
ascp -QT -l 300m -P33001 -k 1  
-i ~/miniconda3/envs/download/etc/asperaweb_id_dsa.openssh   
era-fasp@$id  .
done
# mamba activate download 
# nohup bash step1-aspera.sh 1>step1-aspera.log 2>&1 &
# which ascp 
## 一定要搞清楚你的软件被conda安装在哪,以及它配套的asperaweb_id_dsa.openssh 文件的路径

也可以同步制作 md5.txt 文件,后面会用得到。我们下载的测序数据文件如下所示:

ls -lh *gz|cut -d" " -f 5-
 4.9G 2月  20 23:37 SRR17418283_1.fastq.gz
  13G 2月  21 03:54 SRR17418284_1.fastq.gz
  13G 2月  21 04:22 SRR17418284_2.fastq.gz
 1.2G 2月  21 04:25 SRR17418285_1.fastq.gz
 1.2G 2月  21 04:27 SRR17418285_2.fastq.gz
 1.6G 2月  20 23:40 SRR17418286_2.fastq.gz
 1.3G 2月  20 23:44 SRR17418287_1.fastq.gz
 1.3G 2月  20 23:48 SRR17418287_2.fastq.gz 

对比两个方法

从每个文件生成的时间线来说,其实它们的下载速度是大同小异的!都是一个晚上就下载完毕这些文件。聪明的大家肯定是发现了,其实上面的两个不同方法下载的文件,其实是有大小差异,甚至有文件数量差异!所以务必需要进行md5建议哦,如果是其中部分文件的md5不符合作者提供的md5,就会输出如下所示的报错:

# nohup md5sum -c md5.txt &

SRR17418283_1.fastq.gz: FAILED
SRR17418283_2.fastq.gz: FAILED
SRR17418286_1.fastq.gz: OK
SRR17418286_2.fastq.gz: OK

md5sum: WARNING: 2 computed checksums did NOT match

无论是下载缺失还是说下载后文件不匹配,都是需要重新下载,直到合格为止!两个方法都可以针对性去补充那些缺失的样品的文件哦,尤其是那些文件比较大的情况,两个方法都没办法保证一次就下载完整的!比如我们针对这个下面的这个样品的两个文件,重新来一次:

4.9G 2月  24 09:19 SRR17418283_1.fastq.gz
11G 2月  24 09:32 SRR17418283_2.fastq.gz

Completed: 5122976K bytes transferred in 324 seconds
 (129189K bits/sec), in 1 file.
Completed: 11480906K bytes transferred in 777 seconds
 (120933K bits/sec), in 1 file.

当然了,下载到测序数据仅仅是万里长征第一步,明天我们就继续讲解如何处理这个项目的fq文件哈!