sra文件下载方式

NCBI-SRA和EBI-ENA数据库

SRA数据库: Sequence Read Archive:隶属NCBI (National Center for Biotechnology Information),它是一个保存大规模平行测序原始数据以及比对信息和元数据 (metadata) 的数据库,所有已发表的文献中高通量测序数据基本都上传至此,方便其他研究者下载及再研究。其中的数据则是通过压缩后以.sra文件格式来保存的,SRA数据库可以用于搜索和展示SRA项目数据,包括SRA主页和 Entrez system,由 NCBI 负责维护。

ENA数据库:European Nucleotide Archive:隶属EBI (European Bioinformatics Institute),功能等同SRA,并且对保存的数据做了注释,界面相对于SRA更友好,对于有数据需求的研究人员来说,ENA数据库最诱人的点应该是可以直接下载fastq (.gz)文件,由 EBI 负责维护。

两者在主要功能方面非常类似,同时数据互通。

需要获取他人发表的公开测序数据,来帮助自己的研究领域,下载.sra文件是为了获取该sra相对应的fastq或者sam文件,通过文件格式转换就可以和自己的pipeline对接上,用于直接分析,所以:

第一步,我们需要到SRA或者ENA上搜索我们选择好的SRR号或者SRS号或者SRP号,先在ENA上搜索,如没有再去SRA上搜索,因为ENA下载比SRA快。

第二步,下载数据,从 SRA 数据库下载数据有多种方法。可以用ascp快速的来下载 sra 文件,也可以用wget或curl等传统命令从 FTP 服务器上下载 sra 文件(但是wget和curl下载的sra文件有时候会不完整),另外NCBI的sratoolkit 工具集中的prefetch、fastq-dump和sam-dump也支持直接下载,另外biostar handbook中有一个wonderdump脚本也方便下载数据,我以前还用过迅雷下载sra文件,直接得到sra的链接,迅雷下载。

高通量数据分析时,需要从公共数据库如 NCBI、EBI 下载他人提交的高通量测序数据。NCBI SRA 数据库下载的方式有很多种,普通用户可能常用 Entrez 网页版 检索并下载,但对于大批量高通量数据用命令行可以简化复杂的鼠标操作,实现后台自动化下载。这里介绍一些常用的工具和快速方法。

​ 测序仪 basecalling 后转换成 fastq 格式的数据,包含序列信息和序列质量信息。而为了减少数据储存空间通常会进一步压缩成 .gz 格式。NCBI 开放高通量测序公共数据库后,为了进一步压缩文件大小,优化网络带宽,采用了 .sra 格式的文件。我们一般从 NCBI SRA 数据库下载的高通量测序数据均为 SRA 数据,需要通过 sra-tools 中的工具转换成 fastq 格式。SRA 是 Sequence Read Archive 的首字母缩写。

基本概念

SRA 与 Trace 最大的区别是将实验数据与 metadata(元数据)分离。metadata 是指与测序实验及其实验样品相关的数据,如实验目的、实验设计、测序平台、样本数据(物种,菌株,个体表型等)。metadata可以分为以下几类:

  • Study:accession number 以 DRP,SRP,ERP 开头,表示的是一个特定目的的研究课题,可以包含多个研究机构和研究类型等。study 包含了项目的所有 metadata,并有一个 NCBI 和 EBI 共同承认的项目编号(universal project id),一个 study 可以包含多个实验(experiment)。
  • Sample:accession number以 DRS,SRS,ERS 开头,表示的是样品信息。样本信息可以包括物种信息、菌株(品系) 信息、家系信息、表型数据、临床数据,组织类型等。可以通过Trace来查询。
  • Experiment:accession number 以 DRX,SRX,ERX 开头。表示一个实验记载的实验设计(Design),实验平台(Platform)和结果处理(processing)三部分信息。实验是 SRA 数据库的最基本单元,一个实验信息可以同时包含多个结果集(run)。
  • Run:accession number 以 DRR,SRR,ERR 开头。一个 Run 包括测序序列及质量数据。
  • Submission:一个 study 的数据,可以分多次递交至 SRA 数据库。比如在一个项目启动前期,就可以把 study,experiment 的数据递交上去,随着项目的进展,逐批递交 run 数据。study 等同于项目,submission 等同于批次的概念。

常用工具

命令行下下载 SRA 常用工具:

  • sra-tools:NCBI 官方开发的 SRA 工具,目前最新版为 2.10,注意:只能在 Linux 下运行,下载最大数据不超过20G。
  • asperasoft:IBM 开发的快速下载工具。目前 NCBI 计划将 SRA 数据移植到云平台空间,可能将来不再允许 aspera 下载。目前 EBI ENA 还是可以使用。
  • entrez-direct:NCBI官方开发的用于命令行的 entrez 工具。

sra-tools 是 NCBI 官方开发的 SRA 工具集,也是处理 SRA 数据处理的必备软件。常用的工具包括:prefetchfastq-dumpvdb-config等。目前最新版的 sra-tools 为 v2.10,版本更新会带来功能上的变化,如果希望获得最新的功能建议将版本更新到 v2.10。

SRA Toolkit - prefetch 快速下载NCBI SRA数据

#1. sratoolkit 配置

#1.1 sratoolkit 下载

首先,下载最新发布的sratoolkit(基于自己的系统选择版本):

  • CentOS Linux 64 bit architecture
  • Ubuntu Linux 64 bit architecture
  • MacOS 64 bit architecture
  • MS Windows 64 bit architecture
$ wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/2.9.6/sratoolkit.2.9.6-ubuntu64.tar.gz
$ tar zxvf sratoolkit.2.9.6-ubuntu64.tar.gz
$ cd sratoolkit.2.9.6-ubuntu64
#加入环境路径
$ echo 'export export PATH=$PATH:Y/home/ljh2/biosoft/sratoolkit.2.9.6-ubuntu64/bin' >> ~/.bashrc
$ source ~/.bashrc

#1.2 检查sratoolkit 的配置

$ prefetch -Vprefetch : 2.9.6

#2 sratoolkit 使用

#2.1 prefetch 下载SRA数据

使用命令行下载SRA、dbGaP和ADSP数据

  • SRP193866数据为例
$ prefetch SRR8956151
2019-04-29T09:11:25 prefetch.2.9.6: 1) Downloading 'SRR8956151'...
2019-04-29T09:11:25 prefetch.2.9.6:  Downloading via https...
2019-04-29T09:13:19 prefetch.2.9.6:  https download succeed
2019-04-29T09:13:19 prefetch.2.9.6: 1) 'SRR8956151' was downloaded successfully
2019-04-29T09:13:19 prefetch.2.9.6: 'SRR8956151' has 0 unresolved dependencies
  • 下载完成之后,SRR8956151.sra 保存在目录:/ncbi/public/sra
$ sudo updatedb
$ locate SRR8956151.sra
~/ncbi/public/sra/SRR8956151.sra

#2.2 prefetch 批量下载数据

  • SRA Run Selector 搜索SRP193866信息, 点击Accession List获取Run Accessions: SRR_Acc_List.txt

SRA Run Selector

  • SRR_Acc_List.txt
SRR8956146
SRR8956147
SRR8956148
SRR8956149
SRR8956150
SRR8956151
prefetch --option-file SRR_Acc_List.txt
  • prefetch -h查看帮助发现:
    如果安装了asperaprefetch默认调用aspera(Aspera 的核心是 fasp传输专利技术):
-t|--transport <value>           Transport: one of: fasp; http; both. (fasp only; http only; first try fasp (ascp), use http if cannot download using fasp). Default: both

#2.3 IBM Aspera 高速数据传输功能

  • 以最快的速度发送和共享大型文件和数据集。
  • 快速传输、分发和同步大型文件和数据集。
  • 全面自动统筹、监控和控制数据传输和工作流程。
  • 通过互联网近乎零延迟地交付任何规模的数据,以及几乎无限比特率的视频。

#2.4 Aspera 安装

$ wget https://download.asperasoft.com/download/sw/connect/3.9.1/ibm-aspera-connect-3.9.1.171801-linux-g2.12-64.tar.gz
$ tar zxvf ibm-aspera-connect-3.9.1.171801-linux-g2.12-64.tar.gz
$ bash ibm-aspera-connect-3.9.1.171801-linux-g2.12-64.shInstalling IBM Aspera Connect
Install complete.
#加入环境路径
$ echo 'export PATH=$PATH:/home/lujunhui2/.aspera/connect/bin' >> ~/.bashrc
$ source ~/.bashrc

#2.5 prefetch 调用Aspera

  • 数据下载速度真的快
$ prefetch SRR8956151
2019-04-29T16:20:27 prefetch.2.9.6: 1) Downloading 'SRR8956151'...
2019-04-29T16:20:27 prefetch.2.9.6:  Downloading via fasp...

SRA 数据库下载

NCBI 数据库目前有3个地址

  • ncbi.public
  • aws s3
  • google cloud public

注:用prefetch无法下载超过20G的数据,我们可以用wget

缺点:wget下载数据太慢了,推荐用aria2c下载网络数据能够极大的提高下载SRR数据的速度。

aria2

是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候,自动验证数据块。它可以通过多个来源或者多个协议下载一个文件,并且会尝试利用你的最大下载带宽。默认情况下,所有的 Linux 发行版都包括 aria2,所以我们可以从官方库中很容易的安装。一些 GUI 下载管理器例如 uget 使用 aria2 作为插件来提高下载速度。

Aria2 特性

  • 支持 HTTP/HTTPS GET
  • 支持 HTTP 代理
  • 支持 HTTP BASIC 认证
  • 支持 HTTP 代理认证
  • 支持 FTP (主动、被动模式)
  • 通过 HTTP 代理的 FTP(GET 命令行或者隧道)
  • 分段下载
  • 支持 Cookie
  • 可以作为守护进程运行。
  • 支持使用 fast 扩展的 BitTorrent 协议
  • 支持在多文件 torrent 中选择文件
  • 支持 Metalink 3.0 版本(HTTP/FTP/BitTorrent)
  • 限制下载、上传速度

1) Linux 下安装 aria2

我们可以很容易的在所有的 Linux 发行版上安装 aria2 命令行下载器,例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要输入下面的命令安装即可。对于 CentOS、 RHEL 系统,我们需要开启 uget 或者 RPMForge 库的支持。

# yum install aria2[Fedora 22 和 之后的系统]
# dnf install aria2[对于 suse 和 openSUSE]
# zypper install wget[Mageia]
# urpmi aria2[对于 Arch Linux]$ sudo pacman -S aria2

2) 下载单个文件

下面的命令将会从指定的 URL 中下载一个文件,并且保存在当前目录,在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)。

# aria2c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2[#986c80

3)续传未完成的下载

当你遇到一些网络连接问题或者系统问题的时候,并将要下载一个大文件(例如: ISO 镜像文件),我建议你使用 -c 选项,它可以帮助我们从该状态续传未完成的下载,并且像往常一样完成。不然的话,当你再次下载,它将会初始化新的下载,并保存成一个不同的文件名(自动的在文件名后面添加 .1 )。注意:如果出现了任何中断,aria2 使用 .aria2 后缀保存(未完成的)文件。

# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2[#db0b08

4) 每个主机使用两个连接来下载

默认情况,每次下载连接到一台服务器的最大数目,对于一条主机只能建立一条。我们可以通过 aria2 命令行添加 -x22 表示两个连接)来创建到每台主机的多个连接,以加快下载速度。

# aria2c -x2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2[#ddd4cd

fastq-dump: 一个神奇的软件

现在可以用fasterq-dump, 速度更快,请阅读2202年了,还用fastq-dump,快换fasterq-dump吧

做生信的基本上都跟NCBI-SRA打过交道,尤其是fastq-dump大家肯定不陌生.NCBI的fastq-dump软件一直被大家归为目前网上文档做的最差的软件之一",而我用默认参数到现在基本也没有出现过什么问题,感觉好像也没有啥问题, 直到今天看到如下内容, 并且用谷歌搜索的时候,才觉得大家对fastq-dump的评价非常很到位.

过滤

我们一般使用fastq-dump的方式为

fastq-dump /path/to/xxx.sra

但是这个默认使用方法得到结果往往很糟, 比如说他默认会把双端测序结果保存到一个文件里, 但是如果你加上--split-3之后, 他会把原来双端拆分成两个文件,但是原来单端并不会保存成两个文件. 还有你用--gzip就能输出gz格式, 能够节省空间的同时也不会给后续比对软件造成压力, 比对软件都支持,就是时间要多一点。

–gzip时间

没有gzip时间

但是很不幸运,这些东西在官方文档并没有特别说明,你只有通过不断的踩坑才能学到这些小知识。

我建议尽量去EMBL-EBI去下载原始数据,而不是这种神奇的sra格式,尽管有一些下载的数据其实就是从SRA解压而来。

不过要用fastq-dump,那就介绍几个比较重要的参数吧。我会按照不懂也加,不懂别加,有点意思,没啥意义这三个级别来阐述不同参数的重要级.

太长不看版

如果你不想了解一些细节性内容,用下面的参数就行了

fastq-dump --gzip --split-3 --defline-qual '+' --defline-seq '@\$ac-\$si/\$ri'   SRR_ID
# 建议加别名
alias fd='fastq-dump --split-3 --defline-qual '+' --defline-seq '@\\\$ac-\\\$si/\\\$ri' '

数据格式

不懂也加: reads拆分

默认情况下fastq-dump不对reads进行拆分, 对于很早之前的单端测序没有出现问题.但是对于双端测序而言,就会把原本的两条reads合并成一个,后续分析必然会出错.

常见的参数有三类:

  • --split-spot: 将双端测序分为两份,但是都放在同一个文件中
  • --split-files: 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads直接丢弃
  • --split-3 : 将双端测序分为两份,放在不同的文件,但是对于一方有而一方没有的reads会单独放在一个文件夹里

关于遇到的Rejected 35403447 READS because of filtering out non-biological READS就是因为原来是SE数据,但是用--split-3当作PE数据处理,出现的问题. 看起来好像有问题,但是对后续结果分析没有太多影响.

因此,对于一个你不知道到底是单端还是双端的SRA文件,一律用--split-3.

没事别加: read ID

默认双端测序数据拆分后得到两个文件中同一个reads的名字是一样的,但是加上-I | --readids之后同一个reads的ID就会加上.1和.2进行区分.举个例子

是否有-I参数 ID 1 ID 2
@SRR5829230.1 1 length=36 @SRR5829230.1 1 length=36
@SRR5829230.1.1 1 length=36 @SRR5829230.1.2 1 length=36

问题来了, 明明已经可以通过ID后面的"1"和"2"来区分ID, 加这个参数干嘛. 加完之后还会让后续的BWA报错.所以,没事千万别加

有点意义: 原始格式

默认情况下输出的文件的ID都是SRR开头,但其实原始数据名字不是这样子,比如说@ST-E00600:143:H3LJWALXX:1:1101:5746:1016 2:N:0:CCTCCTGA,@HWI-ST620:248:HB11HADXX:2:1101:1241:2082#0/1这种. 如果你想看到那种格式,而不是SRR,你需要怎么做呢?

可以通过如下三个选项进行修改

  • F|--origfmt: 仅保留数据名字
  • --defline-seq: 定义readsID的显示方式
  • --defline-qual: 定义质量的显示方式

其中fmt按照如下要求定义

fmt的写法

虽然看起来有点意思,但是对最后的分析其实没啥帮助.

没啥意义: fasta输出

如果下游分析只需要用到fasta文件,那么用--fasta就行. 当然了也有很多方法能够把fastq转换成fasta,比如说samtools.

过滤

我觉得这部分的参数都没有意义, 毕竟完全可以用专门的质控软件处理reads,不过--skip-technical,是唯一比较重要.

  • 根据ID: -N -X
  • 根据长度: -M
  • 多标签序列: --skip-technical, 这个是唯一有点意思的,就是说如果你原来建库测序使用了多个标签来区分序列, 默认不会输出这个标签. 但是如果不输出标签,我们怎么区分呢? 所以一定要显示声明

有点意思: 输出方式

这部分参数也很重要, 选择是否压缩,还是直接输出到标准输出

  • --gzip, --bzip2: 压缩方式
  • -Z | --stdout : 输出到标准输出
  • -O|--outdir : 输出到指定文件夹

SRA文件的下载(prefetch)和解压SRA文件(fastq-dump)相关推荐

  1. java csv文件tozip后损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...

    情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...

  2. Mac下压缩和解压rar文件的方法

    命令行 使用工具rarosx,下载地址 选择系统和版本,本文下载的是rarosx-5.4.0.tar.gz 解压缩:tar zxvf rarosx-5.4.0.tar.gz 其中 tar 是Mac 系 ...

  3. Android——SRT字幕文件的下载、解压、转换、显示

    SRT字幕文件的下载.解压.显示 简介 下载 创建文件夹 文件下载 下载调用以及文件解析调用 解析 ZIP文件解析 外部引用 转换 转换SRT字幕文件 获取SRT文件list实体数据 显示 字幕显示 ...

  4. C#利用自带的ZipFile压缩和解压zip文件,超级简单

    ZipFile类是.NET Framework 4.5发布的一个C#压缩文件和解压zip文件的一个类库,它支持.NET Framework 4.5以上版本,包括.NET Core1.0和.NET5以上 ...

  5. dd指令打包iso文件 linux_从零开始学Linux运维|33.文件的打包压缩和解压

    linux下打包文件常用的是tar命令 tar [选项] [文件] 常用参数 -c 创建压缩包-x 解压压缩包-t 查看压缩包内容-f 指定压缩包名字(压缩解压必选项)-v 显示所有过程-z gzip ...

  6. java代码实现文件或文件夹的压缩和解压

    这里写了个工具类,可以实现文件的压缩和解压功能. package com.cntaiping.tpi.common.utils;import java.io.BufferedInputStream; ...

  7. 压缩文件的分卷压缩和解压

    原理上是跟文件夹的分卷压缩是一样的,有些大的文件压缩后还是大,不方便拷贝,这就可以用到分卷压缩,然后再拷贝就方便很多了.我通过实例的方式去讲解实现方法. 例:Ubuntu下有一文件夹myfile,大小 ...

  8. linux系统如何解gz文件,Linux 系统 压缩和解压 gz 格式文件

    Linux 系统 压缩和解压 gz 格式文件 引言 前面我们说了在 Linux 系统上比较常用的打包压缩解压  tar   及 zip 文件 的命令,那 Linux 上还有什么使用比较广泛的压缩解压文 ...

  9. linux lzo 压缩文件,Linux常用压缩和解压命令

    .tar 解包 tar xvf filename.tar .tar 打包 tar cvf filename.tar dirname .gz 解压1 gunzip filename.gz .gz 解压2 ...

最新文章

  1. 最大数值(不能使用比较运算符)
  2. C#常量——const和readonly
  3. [推荐]在线测试你的网速
  4. [转]TensorFlow如何进行时序预测
  5. R语言 深圳 面授_「深圳侦探电话」用R语言实现深度学习情感分析
  6. F#与ASP.NET(1):基于事件的异步模式与异步Action
  7. boolean android.content.SharedPreferences.getBoolean(String key, boolean defValue)
  8. idea创建javaweb项目连接mysql【HTTP Status 500】
  9. 口罩人脸检测与分类开源代码汇总
  10. springboot security 安全
  11. 单片机(ISIS 7 Professional):简易8x8矩阵LED灯代码项目
  12. 可落地的DDD(5)-战术设计
  13. matlab将图像油画,photoshop图像滤镜——油画算法(含matlab与C代码)
  14. Windows10安装fiddler工具安装证书失败总结手机抓包总结
  15. 华为手机备忘录怎样设置每个月12号短信提醒要做的事
  16. [数据结构]基于二叉树的家谱系统
  17. 多可系统批量传输工具的使用
  18. C语言变量的存储方式和生存期
  19. 航海世纪服务器维护中,航海世纪2月28日例行维护公告
  20. 杀病毒软件和防火墙区别

热门文章

  1. 如何查看电脑上的mysql版本
  2. JavaScript延迟执行 setTimeout()
  3. HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ n
  4. Python--之网络爬虫
  5. Linux云服务器登录方式概述
  6. 天猫魔盒远程安装APP
  7. 大可乐android 4.3刷机包,大可乐2代MC002线刷刷机教程_大可乐MC002线刷rom系统刷机包...
  8. python - pyperclip模块
  9. 分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ
  10. 大数据预处理方法,来看看你知道几个