首先需要使用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:
所以其实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文件下载:
可以自己制作文件名字(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文件哈!