Aspera史上最全安装方法 + 批量下载fastq数据

最近在windows系统里下载了虚拟机VirtualBox(6.1.34),并在虚拟机上用Qiime2(2022.2)处理16sRNA数据,需要从NCBI数据库上下载数据。本文提供用虚拟机ubuntu或者linux系统下载Aspera的方法和问题解决,以及从NCBI上批量下载数据库、最后得到一个项目里的所有fastq文件。

Aspera下载数据巨快,100多条fastq文件几分钟就下载好了,比SRA Toolkit快很多

一、安装Aspera

1. 在虚拟机终端里,先新建一个文件夹:

mkdir ~/Aspera    #先建立一个放工具的文件夹
cd ~/Aspera   #进入该文件夹
wget https://d3gcli72yxqn2z.cloudfront.net/downloads/connect/latest/bin/ibm-aspera-connect_4.2.8.540_linux_x86_64.tar.gz  #从官网地址下载
tar xvf ibm-aspera-connect_4.2.8.540_linux_x86_64.tar.gz    #解压,注意版本号要对应
bash ibm-aspera-connect_4.2.8.540_linux_x86_64.sh # 解压后得到一个脚本文件,运行该脚本,即可完成自动安装

注意上面的链接是截止2024.5.9的最新下载Aspera的链接,可以去https://www.ibm.com/aspera/connect/查看最新版本(选择IBM Aspera Connect下面的Linux系统,复制链接,见下图),同时更改上面代码里的版本号即可。

安装完毕:
在这里插入图片描述

2. 添加环境变量:

echo 'export PATH=~/.aspera/connect/bin/:$PATH' >> ~/.bashrc # 所有安装文件都在~/.aspera/connect目录下,在 ~/.bashrc添加环境变量  (cd /home/qiime2/.aspera/connect) 
source  ~/.bashrc  # 使环境变量生效
which ascp # 查看ascp可执行文件所在的路径,应该是:~/.aspera/connect/bin/ascp

在这里插入图片描述
用以下指令查看程序能否正常运行

ascp -h

说明能正常运行:在这里插入图片描述

如果出现’GLIBC_2.28’ not found的错误,参考本号内的上一篇文章《冒险升级ubuntu系统解决sk-learn和glibc版本低的问题》

二、导入密钥文件

安装完Aspera如果直接爬取数据,会出现找不到密钥文件的错误:Private key file not found at path /home/qiime2/.aspera/connect/etc/asperaweb_id_dsa.openssh

IBM官网写的,Aspera 4.2版本之后需要用微软加的OpenSSH。所以我们要先下载OpenSSH再导入密钥文件。

我参考了很多文章,整合了很完整的导入密钥文件的做法,如下:

1. 下载OpenSSH:
打开电脑设置,搜索“可选功能”-管理可选功能
在这里插入图片描述点击上方添加功能,输入OpenSSH,添加OpenSSH服务器(一般电脑自带OpenSSH客户端)
在这里插入图片描述待安装好后,按win+R输入命令services.msc,打开服务窗口双击这条,设置启动状态为为自动
在这里插入图片描述
2. 制作密钥文件
在windows系统里新建一个txt文档,输入以下key,再重命名为asperaweb_id_dsa.openssh,把该文件放到共享文件夹里:

-----BEGIN DSA PRIVATE KEY-----
MIIBuwIBAAKBgQDkKQHD6m4yIxgjsey6Pny46acZXERsJHy54p/BqXIyYkVOAkEp
KgvT3qTTNmykWWw4ovOP1+Di1c/2FpYcllcTphkWcS8lA7j012mUEecXavXjPPG0
i3t5vtB8xLy33kQ3e9v9/Lwh0xcRfua0d5UfFwopBIAXvJAr3B6raps8+QIVALws
yeqsx3EolCaCVXJf+61ceJppAoGAPoPtEP4yzHG2XtcxCfXab4u9zE6wPz4ePJt0
UTn3fUvnQmJT7i0KVCRr3g2H2OZMWF12y0jUq8QBuZ2so3CHee7W1VmAdbN7Fxc+
cyV9nE6zURqAaPyt2bE+rgM1pP6LQUYxgD3xKdv1ZG+kDIDEf6U3onjcKbmA6ckx
T6GavoACgYEAobapDv5p2foH+cG5K07sIFD9r0RD7uKJnlqjYAXzFc8U76wXKgu6
WXup2ac0Co+RnZp7Hsa9G+E+iJ6poI9pOR08XTdPly4yDULNST4PwlfrbSFT9FVh
zkWfpOvAUc8fkQAhZqv/PE6VhFQ8w03Z8GpqXx7b3NvBR+EfIx368KoCFEyfl0vH
Ta7g6mGwIMXrdTQQ8fZs
-----END DSA PRIVATE KEY-----

把文件从共享文件夹移动到官方指定文件夹(套用代码注意更改共享文件夹名字sf_qiimeshare和用户名文件夹qiime2,其他部分都一样):

mv  /media/sf_qiimeshare/asperaweb_id_dsa.openssh   /home/qiime2/.aspera/connect/etc/asperaweb_id_dsa.openssh

查找一下密钥文件的位置(这个很重要,后面代码都会用到):

find ~ -name asperaweb_id_dsa.openssh

可以的,很正确的:在这里插入图片描述

三、利用Aspera下载SRA数据(批量下载直接跳转至下一节)

参考了好几篇攻略,可用以下代码(以提取SRR1342456号码下的数据为例):

对于双端序列,用下指令,注意修改_1和_2,代表两个序列(如果是单端序列则去掉_1):

ascp  -v -Q -T -l 200m -P 33001 -k 1-i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/SRR134/006/SRR1342456/SRR1342456_1.fastq.gz  ./

还可以用下面这个代码,双端序列会生成一个文件夹里两个.fastq.gz如下图(单端序列则生成一个)

ascp  -v -Q -T -l 200m -P 33001 -k 1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:vol1/fastq/SRR134/006/SRR1342456/   ./ 

在这里插入图片描述

上述代码需要修改的只有末尾数字部分(前面的200m最大可填500m,代表下载速度)
难点是006这个三位数,对于示例样本编号为SRR+7位数,三位数取00和样本号最后一位;对于样本编号为SRR+8位数,取0和样本编号最后两位;对于样本编号为SRR+6位数,则去掉这个三位数(SRR134/006/SRR134246 改为 SRR134/SRR134246)

对于.fastq.gz文件,使用以下代码解压缩,生成.fastq文件,即可进行后续分析

gzip -d SRR1342456_2.fastq.gz

以上方法适合数据少,单次下载。

四、Aspera批量下载SRA数据

Aspera下载fastq文件真的巨巨巨巨巨快,下载一百多条估计也只要几分钟,但中间会有数据下载失败的情况,解决方法都放在了本小节后面。

1. 批量导出Accession list
在网址NCBI网址上搜索项目号:
在这里插入图片描述
点击Accession list即可下载序列号:
在这里插入图片描述
2. 利用cat指令生成idname文件

在虚拟机终端输入:

cat idname  #点击回车后,把Accession list数据复制下来,再按ctrl+C保存文件

注意每行不能有空格,否则后续运行脚本可能会出错。

我选的这个项目里一共有16条序列号:在这里插入图片描述

3. 制作批量运行的脚本
输入以下代码,进行脚本编辑

vim Download.sh

在弹出来的框框里,复制粘贴以下内容,以下脚本能自动根据SRR号的位数下载对应数据。运行前注意修改密匙存放路径和自己的项目路径

date
## 目录设置
mkdir -p  ~/Aspera/raw/fq/  #这个文件可以修改,是存放下载数据的地方
cd  ~/Aspera/raw/fq/
pwd

## 密匙路径
openssh=/home/qiime2/.aspera/connect/etc/asperaweb_id_dsa.openssh

cat ~/Aspera/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

在末尾输入:w保存文件,再输入:q退出文件。

两种方法可运行上面这个脚本:

方法一(以下代码Ctrl+C和关闭终端都不会导致程序停止,log_Download是文件日志,会保存运行出错时的信息等等):

nohup bash Download.sh >log_Download 2>&1 &  

方法二(以下代码可以直接运行脚本,我喜欢用这个方法):

sh Download.sh

可以使用以下代码查看程序运行进程:

ps -aux | grep "Download.sh"  #查看进程

在这里插入图片描述

一共16个文件,三四分钟就下载好了,存在了Aspera/raw/fq文件夹里。但是漏掉了4个文件,找出这4个文件。我自己是利用tree指令,比对的有点麻烦,大家可以了解一下:

sudo apt-get install tree #安装tree
tree /home/qiime2/Aspera/raw #查看文件夹结构

在这里插入图片描述

找出遗漏的文件,用cat指令重新输入几个文件的SRR号码,注意不要留多余空格:

cat >idname

重新运行程序(这个命令可直接运行程序)

sh Download.sh

在这里插入图片描述
中间出现了一次Error: Client unable to connect to server (check UDP port and firewall),查了发现是本地服务器开启防火墙导致33001端口没有打开。
可以用以下指令打开:

sudo iptables -I INPUT -p udp --dport 33001 -j ACCEPT
sudo iptables -I OUTPUT -p udp --dport 33001 -j ACCEPT

在这里插入图片描述
注意上面指令要提前用cd退回初始文件夹,运行完后再进入Aspera文件夹,运行之前的脚本sh Download.sh继续下载文件。

【注意:如果需要下载很多条数据,真的要好好检查、反复操作好几遍!!】

最后文件夹里终于有16个完整的项目了:
在这里插入图片描述

4. 批量操作文件夹(批量移动、解压缩)
现在得到的是如图fq文件夹里有16个文件夹,每个文件夹里有两个.fastq.gz文件:
在这里插入图片描述
在这里插入图片描述

将fq文件夹下的所有.fastq.gz文件都移动到/home/qiime2/Aspera/raw文件里:

find /home/qiime2/Aspera/raw/fq/ -name "*.fastq.gz" | xargs -i cp {} /home/qiime2/Aspera/raw/

最后得到raw文件夹下16×2=32个fastq.gz文件:
在这里插入图片描述
进入raw文件夹并解压缩所有fastq.gz文件:

cd ~/Aspera/raw
ls *.fastq.gz | xargs -n1 gzip -d   #批量解压缩所有文件

在这里插入图片描述
最后得到是在一个文件夹里的32个fastq文件(双端的)。

  • 41
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
好的,下面是三种下载NCBI GEO数据方法方法一:使用wget命令下载GEO数据 1. 打开NCBI GEO网站(https://www.ncbi.nlm.nih.gov/geo/); 2. 在搜索框中输入GEO数据的ID,如GSE12345; 3. 在搜索结果页面中点击“FTP”按钮,进入FTP页面; 4. 复制FTP链接,如ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/suppl/GSE12345_RAW.tar; 5. 在Linux终端中输入wget命令下载数据,如:wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/suppl/GSE12345_RAW.tar。 方法二:使用rsync命令下载GEO数据 1. 打开NCBI GEO网站(https://www.ncbi.nlm.nih.gov/geo/); 2. 在搜索框中输入GEO数据的ID,如GSE12345; 3. 在搜索结果页面中点击“FTP”按钮,进入FTP页面; 4. 复制FTP链接,如ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/suppl/GSE12345_RAW.tar; 5. 在Linux终端中输入rsync命令下载数据,如:rsync -avP rsync://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/suppl/GSE12345_RAW.tar . 方法三:使用Aspera Connect下载GEO数据 1. 打开NCBI GEO网站(https://www.ncbi.nlm.nih.gov/geo/); 2. 在搜索框中输入GEO数据的ID,如GSE12345; 3. 在搜索结果页面中点击“FTP”按钮,进入FTP页面; 4. 点击“Aspera Connect”按钮,下载安装Aspera Connect客户端; 5. 在Linux终端中输入ascp命令下载数据,如:ascp -QT -l 300m -P 33001 -i /path/to/aspera/connect/etc/asperaweb_id_dsa.openssh era-connect://ftp.ncbi.nlm.nih.gov/geo/series/GSE12nnn/GSE12345/suppl/GSE12345_RAW.tar .。 以上是三种下载NCBI GEO数据方法,希望能帮到您。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值