111-来吧,加速你的下载

刘小泽写于19.5.3

软件环境

原始数据一般是以SRR格式存放,这个文件一般都要几个G,于是下载器首选ascp,但是直接使用ascp下载又需要配置一些参数,对于新手来说,最好是能提供一个ID,然后直接就下载,这个就需要用到prefetch 与 ascp的组合

prefetch是sratools中的一个小工具,因此直接用conda下载就好

conda install -c daler sratoolkit
prefetch -h # 可以显示帮助文档就说明安装成功
# 如果要下载数据比如SRR文件,直接加ID号,指定输出目录就好
prefetch SRRxxxxxxx -O PATH

默认情况下,prefetch是利用https方式去下载原始数据,这个就像直接从网页下载一样,速度有一定的限制。因此我们需要先安装一款叫做"aspera"的下载工具,它是IBM旗下的商业高速文件传输软件,与NCBI和EBI有协作合同

wget http://download.asperasoft.com/download/sw/connect/3.7.4/aspera-connect-3.7.4.147727-linux-64.tar.gz
tar zxvf aspera-connect-3.7.4.147727-linux-64.tar.gz
#安装
bash aspera-connect-3.7.4.147727-linux-64.sh
# 然后cd到根目录下看看是不是存在了.aspera文件夹,有的话表示安装成功
cd && ls -a
# 将aspera软件加入环境变量,并激活
echo 'export PATH=~/.aspera/connect/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 最后检查ascp是不是能用了
ascp --help

ascp安装成功后,prefetch就会默认将下载方式从https转移到fasp,说明开启加速模式

一般ascp没有什么问题,出问题主要是:

ascp: Failed to open TCP connection for SSH, exiting.

Session Stop  (Error: Failed to open TCP connection for SSH)

# 官网给出的解决办法是:https://support.asperasoft.com/hc/en-us/articles/216126918-Error-44-UDP-session-initiation-fatal-error
On many Linux systems the default firewall can be configured with iptables. You will have to allow all incoming and outgoing traffic on UDP port 33001 (or whatever your Aspera UDP port is), which you can do with the following commands:
# 使用下面这两个命令(但需要管理员权限)
# iptables -I INPUT -p tcp --dport 33001 -j ACCEPT
# iptables -I OUTPUT -p tcp --dport 33001 -j ACCEPT

数据下载

一般原始数据都存放在GEO中,举个例子:

  1. 打开https://www.ncbi.nlm.nih.gov//geo/query/acc.cgi?acc=GSE52778> (这里注意链接是有规律的,只需要改变最后的ID号就能获取其他的GEO数据)

  2. 点击SRA这里的SRP033351

  3. send to => Run Selector => Go

  4. 下载Accession List,然后就得到了一个文本文件,里面会列出和红框部分一样的SRR ID号,供后续使用

  5. 下载代码

    wkd=/home/project/test
       
    cd $wkd/raw
    #简单测试几个
    cat >SRR_Acc_List.txt
    SRR1039508
    SRR1039509
    SRR1039510
       
    cat SRR_Acc_List.txt |while read i
    do prefetch $i -O `pwd` && echo "** ${i}.sra done **"
    done
    # 一般2.6G文件下载2分钟左右
    
  6. 下载成功会有提示,并且可以看到,这里是用fasp下载的

    2019-xxxxxxxx prefetch.2.9.1:  fasp download succeed
    2019-xxxxxxxx prefetch.2.9.1: 1) 'SRR1039508' was downloaded successfully
    2019-xxxxxxxx prefetch.2.9.1: 'SRR1039508' has 0 unresolved dependencies
    ** SRR1039508.sra done **
    

补充于19.9.5

不要轻易改变prefetch+ascp版本

发现问题

之前一直使用prefetch + ascp组合下载原始数据,但是换了一个新的服务器后,重新配置发现:怎么着都会默认使用https下载。因为可以下载,所以排除了网络的问题以及数据ID号的问题

# 例如:
prefetch SRR1039508 -O ./
# 2019-09-05T02:06:26 prefetch.2.10.0: 1) Downloading 'SRR1039508'...
# 2019-09-05T02:06:26 prefetch.2.10.0:  Downloading via https...

看下当前的软件版本:

ascp -A
# Aspera Connect version 3.9.6.173386
# ascp version 3.9.1.168302
prefetch -V
# prefetch : 2.10.0 ( 2.10.0-1 )

我猜想是不是由于软件版本不对

尝试

我一直使用conda安装sratools来配置prefetch ,使用源代码安装ascp 这种组合方式来尝试,并且都是使用的最新版

其中prefetch最新版本是2.10.0,ascp的最新版本是3.9.6

保持ascp不变,首先改变一下prefetch的版本

conda install sra-tools=2.9.6 -y
# 目前sra-tools有12个版本,这里降一个版本

好,然后再次进行数据下载,例如:

prefetch SRR1039508 -O ./

# 2019-09-05T02:11:03 prefetch.2.9.6: 1) Downloading 'SRR1039508'...
# 2019-09-05T02:11:03 prefetch.2.9.6:  Downloading via fasp...

好,问题解决,就是prefetch的版本太高,导致它和ascp的配合出现了问题

还有一丁点内容

如果不想使用源代码安装ascp,还可以使用conda安装,目前conda只有一个老版本3.7.7。不过只要能正常使用就一切OK啦

conda install -c hcc aspera-cli -y

结论

  • 如果之前用过某个软件,一般情况不要更换版本,用着顺手就行。

  • 如果来到一个新的服务器,需要自己重新配置,发现原来的软件不能正常使用,可以首先降级 ,因为最新版总会有一些bug存在

  • 不同版本(由高到底)ascp-3.9.6ascp-3.8.1ascp-3.7.7
    prefetch-2.10.0XX
    prefetch-2.9.6OKX
    prefetch-2.9.1
Yunze Liu
Yunze Liu
Bioinformatics Sharer

Co-founder of Bioinfoplanet(生信星球)

Next
Previous

Related