1.常規(guī)下載方式:prefetch
????對于常規(guī)下載sra數(shù)據(jù)來說,NCBI提供了它自己的一套工具(SRA-Toolkit),其中用prefetch來下載數(shù)據(jù),用fastq-dump來解壓數(shù)據(jù)。
1.1 首先需要獲取數(shù)據(jù)信息
????一般來說,我們需要下載的數(shù)據(jù)都是來自于文獻已經(jīng)發(fā)表的,在文獻中都會給一個GEO號,它長這個樣子GSE106826。 然后我們就可以直接到GEO DataSets中去搜索該數(shù)據(jù)集中的數(shù)據(jù)了。如下圖所示,直接點擊Search:

然后我們就可以轉(zhuǎn)到這個有文章title的界面,如下所示:

點擊進去就可以進入該GEO號對應(yīng)的數(shù)據(jù)集了:

那么我們的sra文件在哪里呢?可以看到下邊有一個
SRA SRP124852,沒錯,就是它了!點進去:
然后選擇任意一個連接點進去,進入到一個像這樣的界面:

點擊里邊的
All run, 最終,終于找到了我們所有sra信息所在的位置:
在這個頁面里,我們需要下載兩個table,就是Download下邊的兩個:
RunInfo Table 和 Accession List. 其中RunInfo Table會告訴你sample的信息,比如是什么細胞類型,來自什么組織;而Accession List則是儲存里我們sra文件的獲取序列號:
$ cat SRR_Acc_List.txt
SRR6283792
SRR6283793
1.2 然后用prefetch下載數(shù)據(jù)
??有了以上的sra Accession number,就可以直接用腳本命令下載數(shù)據(jù)了。
# 切換到SRR_Acc_List.txt所在的文件夾
$ ls
SRR_Acc_List.txt
# 然后用以下命令下載
$ prefetch `less SRR_Acc_List.txt`
#如果想要后臺運行可以使用nohup加&
#這樣即使退出終端也不會斷掉的
$ nohup prefetch `less SRR_Acc_List.txt` &
2. sacp ,飛一般的下載速度
2.1 安裝ascp
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
# install
bash aspera-connect-3.7.4.147727-linux-64.sh
# check the .aspera directory
cd # go to root directory
ls -a # if you could see .aspera, the installation is OK
# add environment variable
echo 'export PATH=~/.aspera/connect/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# check help file
ascp --help
2.2 了解數(shù)據(jù)儲存結(jié)構(gòu)
注意!最近突然發(fā)現(xiàn)以下這個路徑找不到文件了,可能NCBI儲存結(jié)構(gòu)已經(jīng)改變,請看后邊ENA部分!
??NCBI的ftp網(wǎng)站上可以找到我們想要的sra文件,如果你比較一下就會發(fā)現(xiàn),這些儲存的連接是有規(guī)律可循的,如下兩個文件:
ftp://ftp.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR690/SRR6904179/SRR6904179.sra ftp://ftp.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR690/SRR6904180/SRR6904180.sra你會發(fā)現(xiàn)它們前半部分都是一樣的,都以
ftp://ftp.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/開頭,而后邊緊跟的是SRR 序列號SRR6904179的前6位SRR690,然后就是序列號SRR6904179,再后邊就是序列號加一個后綴.sraSRR6904179.sra.
?? 由于最近NCBI的sra數(shù)據(jù)找不到具體儲存路徑了,所以就從ENA數(shù)據(jù)庫下載吧,ENA和NCBI存儲的數(shù)據(jù)是一樣的,所以不用擔(dān)心數(shù)據(jù)問題,而且ENA儲存的是fastq格式,更是省去了下載后從sra到fastq轉(zhuǎn)化這一步驟,簡直完美!
- ENA 的數(shù)據(jù)結(jié)構(gòu)是這樣的:
http://ftp.sra.ebi.ac.uk/vol1/fastq/SRR121/SRR121621/SRR121621_1.fastq.gz
http://ftp.sra.ebi.ac.uk/vol1/fastq/SRR121/SRR121621/SRR121621_2.fastq.gz
基本是和ncbi之前的存儲類似的,這里不再贅述。以下是下載一個文件的示例:
ascp -QT -l 300m -P 33001 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/SRR121/SRR121621/SRR121621_1.fastq.gz path/to/download_dir
- 需要注意,下載時文件地址前統(tǒng)一用
era-fasp@fasp.sra.ebi.ac.uk:開頭,后邊跟隨文件地址/vol1/fastq/SRR121/SRR121621/SRR121621_1.fastq.gz,中間是:連接,不是/,一定要注意??!
如果是下載多個文件的話,首先像用prefetch那樣拿到GEO序列號,然后用一個循環(huán)腳本就可以搞定了:
ftp='era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq'
mkdir sra # make a output directory
cat SRR_Acc_List.txt | while read i
do
SRR=$(echo ${i:0:6})
# ascp -QT -l 300m -P 33001 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh ${ftp}/${SRR}/${i}/{i}.fastq.gz ./sra 單端測序的話只有這一個文件
ascp -QT -l 300m -P 33001 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh ${ftp}/${SRR}/${i}/${i}_1.fastq.gz ./sra
ascp -QT -l 300m -P 33001 -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh ${ftp}/${SRR}/${i}/${i}_2.fastq.gz ./sra
done
實測ascp下載速度可達150M/s,如果你的網(wǎng)絡(luò)給力還可以更快!
3. wget 下載sra文件
??之前經(jīng)常使用prefetch下載sra文件,而且量比較大,但是經(jīng)常會出現(xiàn)time-out這種情況,會導(dǎo)致很多文件下載不下來,所以就考慮用wget試一下。但是這個真的不建議,除非你沒有辦法的情況下。wget很容易斷點導(dǎo)致數(shù)據(jù)不完整!
- 數(shù)據(jù)來源的話依然參考上邊ENA部分,腳本也基本相同,如下:
注意這次網(wǎng)址直接使用的是:http://ftp.sra.ebi.ac.uk/vol1/fastq
ftp='http://ftp.sra.ebi.ac.uk/vol1/fastq'
mkdir sra # make a output directory
cat SRR_Acc_List.txt | while read i
do
SRR=$(echo ${i:0:6})
# wget -c -t 0 -P ./sra ${ftp}/${SRR}/${i}/${i}.fastq.gz 單端只有一個文件
wget -c -t 0 -P ./sra ${ftp}/${SRR}/${i}/${i}_1.fastq.gz
wget -c -t 0 -P ./sra ${ftp}/${SRR}/${i}/${i}_2.fastq.gz
done
參數(shù)說明:
-c 自動斷點續(xù)傳,一定要加!否則數(shù)據(jù)會有不完整的情況
-t 配合-c參數(shù),設(shè)置為0表示連接失敗后無限次重新嘗試,直到成功為止
-P 表示把數(shù)據(jù)下載到指定文件夾下
?? 三種方法比較下,首先推薦ascp,速度是真的快??;其次是prefetch,速度一般般,很容易下載失敗,需要多次嘗試重新下載;最不推薦的是wget,但是如果以上兩種方式你都不適用,那就試試這個吧。