NCBI-SRA和EBI-ENA数据库
SRA数据库: Sequence Read Archive:隶属NCBI (National Center for Biotechnology Information),它是一个保存大规模平行测序原始数据以及比对信息和元数据 (metadata) 的数据库,所有已发表的文献中高通量测序数据基本都上传至此,方便其他研究者下载及再研究。其中的数据则是通过压缩后以.sra文件格式来保存的,SRA数据库可以用于搜索和展示SRA项目数据,包括SRA主页和 Entrez system,由 NCBI 负责维护。SRA数据库中的数据分为Studies, Experiments, Samples和相应的Runs四个层次:
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 等同于批次的概念。
ENA数据库:European Nucleotide Archive:隶属EBI (European Bioinformatics Institute),功能等同SRA,并且对保存的数据做了注释,界面相对于SRA更友好,对于有数据需求的研究人员来说,ENA数据库最诱人的点应该是可以直接下载fastq (.gz)文件,由 EBI 负责维护。
两者在主要功能方面非常类似,同时数据互通。
sra文件下载方式
需要获取他人发表的公开测序数据,来帮助自己的研究领域,下载.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的链接,迅雷下载。
1. Aspera
Aspera Connect软件,这是IBM旗下的商业高速文件传输软件,随着高通量数据的大量产生,从而对于大文件快速传输的需求,开始应用到生物领域,与NCBI和EBI有协作合同,我们可以免费使用它下载高通量测序文件,体验飞一般的感觉,速度可飚至300-500M/s。下载完成后,本地用fastq-dump提取fastq文件,用sam-dump提取SAM文件。
传统的FTP、HTTP等数据传输协议都是基于TCP的,TCP在远距离数据传输中存在一些先天的不足,文件越大、距离越远,其丢包、延时等问题对于传输速度和效率的影响就越大。
Aspera的安裝:
下载链接点击此处查看
#download aspera lastest version:
wget https://download.asperasoft.com/download/sw/connect/3.8.1/ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.tar.gz
tar xzvf ibm-aspera-connect-3.8.1.161274-linux-g2.12-64.sh
#install aspera in server:
sh aspera-connect-3.8.1.161274-linux-g2.12-64.sh
查看是否有.aspera文件夹
cd # 去根目录
ls -a # 如果看到.aspera文件夹,代表安装成功
# 永久添加环境变量
echo 'export PATH=~/.aspera/connect/bin:$PATH' >> ~/.bashrc && cp ~/.bashrc~/.bash_profile
source ~/.bashrc ~/.bash_profile
# 查看帮助文档
ascp --help
ascp的用法(在线文档):ascp [参数] 目标文件 目标地址,
先了解几个ascp命令的常用参数
-v verbose mode 唠叨模式,能让你实时知道程序在干啥,方便查错。
-T 取消加密,否则有时候数据下载不了
-i 提供私钥文件的地址,免密从SRA和ENA下载,不能少,地址一般是~/.aspera/connect/etc中的asperaweb_id_dsa.openssh文件
-l 设置最大传输速度,一般200m到500m,如果不设置,反而速度会比较低,可能有个较低的默认值
-k 断点续传,一般设置为值1
-Q 用于自适应流量控制,磁盘限制所需
-P 用于SSH身份验证的TCP端口,一般是33001
ascp进行SRA数据库下载
ps:记住,SRA数据库的数据的存放地址是ftp-private.ncbi.nlm.nih.gov或者ftp.ncbi.nlm.nih.gov,SRA在Aspera的用户名是anonftp,下载范例:
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh [email protected]:/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976573/SRR2976573.sra ~/rawdata/ascp/
或者
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh [email protected]:/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976573/SRR2976573.sra ~/rawdata/ascp/
注意:[email protected]和[email protected]后面是“ : ”号,不是路径“ / ”!
熟悉的人应该知道,NCBI-SRA数据库的sra文件前面的地址都是一样的/sra/sra-instant/reads/ByRun/sra/SRR/...,可以根据需要下载的sra文件来编写脚本进行批量下载sra文件!
/sra/sra-instant/reads/ByRun/sra/{SRR|ERR|DRR}/
因为sra文件前面的地址是一样的,除了后两个字段,所以也可以通过把sra文件的id写到一个文档,使用ascp批量下载文档中所有的sra文件,举例如下:
SRR_Download_List中包含如下:
/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976568/SRR2976568.sra
/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976569/SRR2976569.sra
/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976570/SRR2976570.sra
/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976571/SRR2976571.sra
/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976572/SRR2976572.sra
/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976573/SRR2976573.sra
##使用 ascp批量下载该List下的sra文件:
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh --mode recv --host ftp-private.ncbi.nlm.nih.gov --user anonftp --file-list SRR_Download_List ~/rawdata/ascp/
或者,host不同的情况下:
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh --mode recv --host ftp.ncbi.nlm.nih.gov --user anonftp --file-listSRR_Download_List ~/rawdata/ascp/
sratoolkit进行SRA数据库下载
NCBI 开发了 sratoolkit 工具来帮助处理 SRA 数据,正确配置后可以很方便的下载 SRA 数据。可以直接从 NCBI 上下载。最新的源码可以在 Github 获得。
另外,如果你安装并设置了 Aspera Connect,那么 prefetch 会优先使用ascp方式来下载,如果没有安装或则ascp下载失败,则切换成 HTTP 方式下载 sra 数据。另外 fastq-dump 命令(大概的命令)也能从远端直接下载数据,加上-X 1参数,会预先下载最前的5个 reads,加上-Z参数,则会将这些 reads 打印到终端输出。
/path of sratoolkit/prefetch -t ascp -a “~/.aspera/connect/etc/asperaweb_id_dsa.openssh” SRR2976573
/path of sratoolkit/fastq-dump -X 5 -Z SRR2976573
ascp进行ENA数据库下载
从ENA数据库进行下载,ENA数据库的数据存放位置是fasp.sra.ebi.ac.uk,ENA在Aspera的用户名是era-fasp,[email protected]。如果要从ENA数据库下载SRR2976573,我们先搜索:
从截图中,我们可以发现我们可以自己设定显示哪些title(如:FASTQ files (Aspera)、FASTQ files (FTP)、NCBI SRA file (FTP)、NCBI SRA file (Aspera))在表格中,再点击下载TEXT,可以在本地保存需要的信息,以便后期的数据下载。
单个数据下载例子,可以是sra文件,也可以是fastq.gz文件:
####sra文件下载:
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh [email protected]:/vol1/srr/SRR297/003/SRR2976573 ~/rawdata/ascp/
####FASTQ文件下载;
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh [email protected]:/vol1/fastq/SRR297/003/SRR2976573/SRR2976573_1.fastq.gz ~/rawdata/ascp/
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh [email protected]:/vol1/fastq/SRR297/003/SRR2976573/SRR2976573_2.fastq.gz ~/rawdata/ascp/
批量从ENA下载数据,比如我们在ENA搜索SRP067062,我们得到如下截图:
结果设置显示项目,再下载TEXT,我们可以得到:
分为SRA文件的txt和FASTQ文件的TXT:
####ENA-Aspera-FASTQ.txt:
/vol1/fastq/SRR297/002/SRR2976562/SRR2976562_1.fastq.gz
/vol1/fastq/SRR297/002/SRR2976562/SRR2976562_2.fastq.gz
/vol1/fastq/SRR297/003/SRR2976563/SRR2976563_1.fastq.gz
/vol1/fastq/SRR297/003/SRR2976563/SRR2976563_2.fastq.gz
/vol1/fastq/SRR297/008/SRR2976568/SRR2976568_1.fastq.gz
/vol1/fastq/SRR297/008/SRR2976568/SRR2976568_2.fastq.gz
/vol1/fastq/SRR297/009/SRR2976569/SRR2976569_1.fastq.gz
/vol1/fastq/SRR297/009/SRR2976569/SRR2976569_2.fastq.gz
/vol1/fastq/SRR297/002/SRR2976572/SRR2976572_1.fastq.gz
/vol1/fastq/SRR297/002/SRR2976572/SRR2976572_2.fastq.gz
/vol1/fastq/SRR297/003/SRR2976573/SRR2976573_1.fastq.gz
/vol1/fastq/SRR297/003/SRR2976573/SRR2976573_2.fastq.gz
####ENA-Aspera-SRA.txt:
/vol1/srr/SRR297/002/SRR2976562
/vol1/srr/SRR297/003/SRR2976563
/vol1/srr/SRR297/008/SRR2976568
/vol1/srr/SRR297/009/SRR2976569
/vol1/srr/SRR297/002/SRR2976572
/vol1/srr/SRR297/003/SRR2976573
批量下载代码:
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh--mode recv --host fasp.sra.ebi.ac.uk --user era-fasp --file-list ENA-Aspera-FASTQ.txt ~/rawdata/ascp/
###上面代码下载FASTQ.gz文件,下面代码下载的是SRA文件;
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh --mode recv --host fasp.sra.ebi.ac.uk --user era-fasp --file-list ENA-Aspera-SRA.txt ~/rawdata/ascp/
遇到的问题
ascp下载ENA数据的时候有可能会出现Session Stop,解决方案:
第一、把ascp 的-l 不要设置的太大了,一般设置为500m就可以了;
第二、在root权限下设置udp端口
使用iptable设置如下:
iptables -I INPUT -p udp --dport 33001 -j ACCEPT
iptables -I OUTPUT -p udp --dport 33001 -j ACCEPT
总结
Aspera Connect的下载速度是最快的,相对于sratoolkit的套件下载和wget或者curl下载;并且Aspera的下载可以下载fastq文件和SRA文件,免去了SRA转至FASTQ的过程,该过程很耗时,特别耗时!
参考资料
https://blog.csdn.net/herokoking/article/details/78890567
https://ngs-data-for-pathogen-analysis.readthedocs.io/zh_CN/latest/chapter_01/01_get_data.html
https://anjingwd.github.io/AnJingwd.github.io/2017/08/06/SRA%E6%A0%BC%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%8A%A0%E9%80%9F%E4%B8%8B%E8%BD%BD%E6%89%93%E5%8C%85%E8%A7%A3%E5%86%B3/