美文网首页SRA数据下载rna_seq
linux025 SRA数据下载工具ascp的安装及使用

linux025 SRA数据下载工具ascp的安装及使用

作者: caoqiansheng | 来源:发表于2020-08-24 16:15 被阅读0次
    参考链接

    http://bioinfostar.com/2017/12/23/How-to-download-SRA-data-zh_CN/

    1 NCBI-SRA和EBI-ENA数据库

    SRA数据库: Sequence Read Archive:隶属NCBI (National Center for Biotechnology Information),它是一个保存高通量测序原始数据以及比对信息和元数据 (metadata) 的数据库,所有已发表的文献中高通量测序数据基本都上传至此,方便其他研究者下载及再研究。其中的数据则是通过压缩后以.sra文件格式来保存的。
    ENA数据库:European Nucleotide Archive:隶属EBI (European Bioinformatics Institute),功能同SRA,并且对数据做了注释,界面更友好,当然对于我们来说,最诱人的当属可直接下载fastq (.gz)文件这一项了。

    2 sra文件下载方式

    详见 Linux011 Sra toolkit安装及使用

    多数情况下,我们下载sra文件是为了获取相应的fastq或者sam文件,这样可以和自己的pipeline对接上,直接分析,所以

    • 找地方:用手头上的SRR (SRA Run)序列号去ENA搜索,如果有,就在这儿下;如果没有,就去SRA数据库下载
    • 选方法
      首选Aspera Connect软件,这是IBM旗下的商业高速文件传输软件,与NCBI和EBI有协作合同,我们可以免费使用它下载高通量测序文件,体验飞一般的感觉,速度可飚至300-500M/s。下载完成后,本地用fastq-dump提取fastq文件,用sam-dump提取SAM文件。
      其次,如果上述方法不奏效,优先使用sratoolkit中的prefetch命令
      最后,使用sratoolkit中的fastq-dumpsam-dump命令下载,如果fastq-dump不稳定,推荐大家尝试Biostar Handbook中的wonderdump脚本

    警告:尽量不要用wgetcurl去下载sra文件,某些情况下会导致下载的文件不完整

    3 安装方法

    3.1 进入Aspera Connect的下载页面,选择linux版本,复制下载地址
    # 下载软件,网速会比较慢,解压后bash运行
    wget https://download.asperasoft.com/download/sw/connect/3.10.0/ibm-aspera-connect-3.10.0.180973-linux-g2.12-64.tar.gz
    tar zxvf ibm-aspera-connect-3.10.0.180973-linux-g2.12-64.tar.gz
    bash ibm-aspera-connect-3.10.0.180973-linux-g2.12-64.sh
    # 去根目录查看是否有.aspera文件夹,如果看到.aspera文件夹,代表安装成功
    cd ~ 
    ls -a 
    # 永久添加环境变量,$需要转义一下,否则bashrc文件会有一长串的路径,但是不加也不影响
    echo "export PATH=\$PATH:/home/caoqiansheng/.aspera/connect/bin" >> ~/.bashrc
    source ~/.bashrc
    # 查看帮助文档
    ascp --help
    
    3.2 进入Aspera Connect的下载页面,选择linux版本,直接下载安装文件,并将其移动至home目录,然后解压,bash运行

    4 ascp用法

    ascp [参数] 目标文件 目标地址
    在线文档

    先了解几个ascp命令的常用参数
    -v verbose mode 唠叨模式,能让你实时知道程序在干啥,方便查错。有些作者的程序缺乏人性化,运行之后,只见光标闪,压根不知道运行到哪了
    -T 取消加密,否则有时候数据下载不了
    -i 提供私钥文件的地址,我也不知道干嘛的,反正不能少,地址一般是~/.aspera/connect/etc中的asperaweb_id_dsa.openssh文件
    -l 设置最大传输速度,一般200m到500m,如果不设置,反而速度会比较低,可能有个较低的默认值
    -k 断点续传,一般设置为值1
    -Q 不懂,一般加上它
    -P 提供SSH port,一般是33001,反正我不懂

    4.1 SRA数据库下载

    首先记住,数据的存放地址是ftp-private.ncbi.nlm.nih.gov,SRA在Aspera的用户名是anonftp,下载举例:
    如果我想下载SRR949627.sra文件,首先我需要找到地址,去ncbi ftp-private或者ncbi faspftp,一层层寻找,直至找到,然后记下链接地址,就可以开始下载了:
    ascp -v -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh -k 1 -T -l200m anonftp@ftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/SRR/SRR949/SRR949627/SRR949627.sra ~/biostar/aspera/
    * 注意:anonftp@ftp-private.ncbi.nlm.nih.gov后面是:号,不是路径/!
    * 一般来说,NCBI的sra文件前面的地址都是一样的/sra/sra-instant/reads/ByRun/sra/SRR/...,那么写脚本批量下载也就不难了!

    4.2 ENA数据库下载

    这里和上面不同,数据的存放地址是fasp.sra.ebi.ac.uk,ENA在Aspera的用户名是era-fasp,下载举例:
    同样,我还是下载SRR949627,方便的是ENA中可以直接下载fastq.gz文件,不用再从sra文件慢吞吞的转换了,那么地址呢,可以去ENA搜索,再复制下fastq.gz文件的地址,或者可以去ENA的ftp地址ftp.sra.ebi.ac.uk搜索,注意,是ftp,不是fasp!记下链接地址,就可以下载了:

    ascp -QT -l 300m -P33001 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR949/SRR949627/SRR949627_1.fastq.gz ~/biostar/aspera/
    

    注意:era-fasp@fasp.sra.ebi.ac.uk后面是:号,不是路径/!
    一般来说,EBI的sra文件前面的地址也都是一样的vol1/fastq/...,那么写脚本批量下载也就不难了!

    批量下载脚本

    #!/bin/bash
    # title: EMBL data download
    # author: qiansheng cao
    
    start_time=`date "+%Y-%m-%d %H:%M:%S"`
    logfile=$PWD/ascp_$(date +"%Y%m%d%H%M").log
    exec >$logfile 2>&1
    
    ## download,ascp必须使用绝对路径
    ## 下载路径的格式为 era-fasp@ftp.sra.ebi.ac.uk:vol1/fastq/SRR318/001/SRR3182431/SRR3182431_2.fastq.gz
    ## filereport_read_run_PRJNA310728_tsv.txt为EMBL数据库下载的含每个测序数据的下载地址的文件
    ## 首先找到以ftp开头的地址列,然后以";"分割,检索以_1.fastq.gz/_2.fastq.gz结尾的ftp地址,最后将ftp地址的第一个"/"替换为":"
    ascp=/home/caoqiansheng/.aspera/connect/bin/ascp
    cat filereport_read_run_PRJNA*_tsv.txt \
    | awk '{for(i=1;i<=NF;i++) if($i~/^ftp/)print $i}' \
    | awk 'BEGIN{FS=";"}{for(j=1;j<=NF;j++) if($j~/_[12].fastq.gz$/)print $j}' | sed 's#/#:#' | | while read id
    do
        $ascp -QT -l 300m -P33001 -i \
        ~/.aspera/connect/etc/asperaweb_id_dsa.openssh \
        era-fasp@${id} .
    done
    
    ## duration time
    end_time=`date "+%Y-%m-%d %H:%M:%S"`
    duration=`echo $(($(date +%s -d "${end_time}") - $(date +%s -d "${start_time}"))) \
    | awk '{t=split("60 s 60 m 24 h 999 d",a);for(n=1;n<t;n+=2){if($1==0)break;s=$1%a[n]a[n+1]s;$1=int($1/a[n])}print s}'`
    echo "duration time is: $duration"
    

    相关文章

      网友评论

        本文标题:linux025 SRA数据下载工具ascp的安装及使用

        本文链接:https://www.haomeiwen.com/subject/cbynjktx.html