一、簡介
1.NCBI-SRA 數據庫
SRA: Sequence Read Archive: It belongs to NCBI (National Center for Biotechnology Information), is a database storing high throughput sequencing (HTS) raw data, alignment information and metadata. Almost all HTS data in published publications will be asked uploading to here, and stored as .sra compressed file format.
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 等同于批次的概念。
2.EBI-ENA 數據庫
ENA: European Nucleotide Archive: It belongs to EBI (European Bioinformatics Institute), although it has the same funtion with SRA, more annotations and friendlier website make it preferable. What’s more, you could download directly fastq.gz files from it.
ENA數據庫:European Nucleotide Archive:隸屬EBI (European Bioinformatics Institute),功能等同SRA,并且對保存的數據做了注釋,界面相對于SRA更友好,對于有數據需求的研究人員來說,ENA數據庫最誘人的點應該是可以直接下載fastq (.gz)文件,由 EBI 負責維護。
兩者在主要功能方面非常類似,同時數據互通。
二、數據下載
1. 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腳本也方便下載數據;
1.1 Aspera
Aspera Connect軟件,這是IBM旗下的商業高速文件傳輸軟件,隨著高通量數據的大量產生,從而對于大文件快速傳輸的需求,開始應用到生物領域,與NCBI和EBI有協作合同,我們可以免費使用它下載高通量測序文件,體驗飛一般的感覺,速度可飚至300-500M/s。下載完成后,本地用fastq-dump提取fastq文件,用sam-dump提取SAM文件。
傳統的FTP、HTTP等數據傳輸協議都是基于TCP的,TCP在遠距離數據傳輸中存在一些先天的不足,文件越大、距離越遠,其丟包、延時等問題對于傳輸速度和效率的影響就越大。
(1)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.tar.gz
#install aspera in server:
sh ibm-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 [參數] 目標文件 目標地址
常用參數
-v
verbose mode 嘮叨模式,能讓你實時知道程序在干啥,方便查錯。
-T
取消加密,否則有時候數據下載不了
-i
提供私鑰文件的地址,免密從SRA和ENA下載,不能少,地址一般是~/.aspera/connect/etc中的asperaweb_id_dsa.openssh文件
-l
設置最大傳輸速度,一般200m到500m,如果不設置,反而速度會比較低,可能有個較低的默認值
-k
斷點續傳,一般設置為值1
-Q
用于自適應流量控制,磁盤限制所需
-P
用于SSH身份驗證的TCP端口,一般是33001
(2)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 anonftp@ftp.ncbi.nlm.nih.gov:/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 anonftp@ftp-private.ncbi.nlm.nih.gov:/sra/sra-instant/reads/ByRun/sra/SRR/SRR297/SRR2976573/SRR2976573.sra ~/rawdata/ascp/
注意:anonftp@ftp-private.ncbi.nlm.nih.gov和anonftp@ftp.ncbi.nlm.nih.gov后面是“ : ”號,不是路徑/
!
熟悉的人應該知道,NCBI-SRA數據庫的sra文件前面的地址都是一樣的/sra/sra-instant/reads/ByRun/sra/SRR/...,可以根據需要下載的sra文件來編寫腳本進行批量下載sra文件!
/sra/sra-instant/reads/ByRun/sra/{SRR|ERR|DRR}/<first 6 characters of accession>/<accession>/<accession>.sra
因為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/
(3)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
批量下載
cat sra.txt
SRR10951024
SRR10951025
SRR10951026
SRR10951027
SRR10951028
SRR10951029
SRR10951030
SRR10951031
SRR10951032
SRR10951033
SRR10951034
SRR10951035
SRR10951036
SRR10951037
SRR10951038
/path of sratoolkit/prefetch --option-file sra.txt
/path of sratoolkit/fastq-dump --fasta "default" SRR10951038/SRR10951038.sra
(4)ascp進行ENA數據庫下載
從ENA數據庫進行下載,ENA數據庫的數據存放位置是fasp.sra.ebi.ac.uk,ENA在Aspera的用戶名是era-fasp,era-fasp@fasp.sra.ebi.ac.uk。如果要從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 era-fasp@fasp.sra.ebi.ac.uk:/vol1/srr/SRR297/003/SRR2976573 ~/rawdata/ascp/
FASTQ文件下載;
ascp -v -QT -l 400m -P33001 -k1 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:/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 era-fasp@fasp.sra.ebi.ac.uk:/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