1論文あたりで用いられるデータが年々増加しており、論文の再実験をするためにFASTQをダウンロードするのもなかなか苦労しますよね。
以下の記事でENAからwgetを使ってfastqを取得する方法を紹介していますが、
rnakato.hatenablog.jp
今回はその高速版です。
ENAから fastqファイルを取得する
ここでは例として、Ahn et al., Nature, 2021の論文のRNA-seqデータ(paired-end)を使います。IDはPRJNA604380です。
ENA上で PRJNA604380を検索すると、以下のようなページになります。RNA-seqデータが18サンプル含まれています。
右側にある "Download All" をクリックすればダウンロードが開始されますが、めちゃくちゃ遅いです。しばしば途中でタイムアウトになり、うまくダウンロードされません。
FASTQのリンクをクリックすれば個別にダウンロードできますが、それでも遅いですし、サンプル数が多いと大変です。
ENAから wget を使ってfastqファイルを一括取得する
FTPリンクをファイルに保存し、wget -i
を使う方法をおさらいします。
画面上部 "Download report"の TSV をクリックすると、各サンプルの詳細をテキスト形式でダウンロードできます。ここでは "filereport_read_run_PRJNA604380_tsv.txt" という名前で保存されました。
$ head -n3 filereport_read_run_PRJNA604380_tsv.txt
study_accession sample_accession experiment_accession run_accession tax_id scientific_name fastq_ftp submitted_ftp sra_ftbam_ftp
PRJNA604380 SAMN13967826 SRX7659655 SRR10998571 9606 Homo sapiens ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_2.fastq.gz ftp.sra.ebi.ac.uk/vol1/srr/SRR109/071/SRR10998571
PRJNA604380 SAMN13967825 SRX7659656 SRR10998572 9606 Homo sapiens ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_2.fastq.gz ftp.sra.ebi.ac.uk/vol1/srr/SRR109/072/SRR10998572
ごちゃごちゃしていますが、サンプルの各種IDや生物種、FTPのURLなどが記載されています。
FTPのURLは7列目に記載されています。
$ cut -f7 filereport_read_run_PRJNA604380_tsv.txt
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/074/SRR10998574/SRR10998574_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/074/SRR10998574/SRR10998574_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/075/SRR10998575/SRR10998575_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/075/SRR10998575/SRR10998575_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/078/SRR10998578/SRR10998578_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/078/SRR10998578/SRR10998578_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/081/SRR10998581/SRR10998581.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/079/SRR10998579/SRR10998579_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/079/SRR10998579/SRR10998579_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/082/SRR10998582/SRR10998582.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/083/SRR10998583/SRR10998583.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/084/SRR10998584/SRR10998584.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/087/SRR10998587/SRR10998587.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/086/SRR10998586/SRR10998586.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/088/SRR10998588/SRR10998588.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/076/SRR10998576/SRR10998576_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/076/SRR10998576/SRR10998576_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/077/SRR10998577/SRR10998577_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/077/SRR10998577/SRR10998577_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_1.fastq.gz;ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/085/SRR10998585/SRR10998585.fastq.gz
paired-end のファイルがセミコロン(;) 区切りで記載されているので、セミコロンを改行に変換してファイル保存します。
$ cut -f7 filereport_read_run_PRJNA604380_tsv.txt | sed 's/;/\n/g' | grep -v fastq_ftp > ftp.txt
$ cat ftp.txt
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/071/SRR10998571/SRR10998571_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/072/SRR10998572/SRR10998572_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/073/SRR10998573/SRR10998573_2.fastq.gz
(中略)
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_1.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/080/SRR10998580/SRR10998580_2.fastq.gz
ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/085/SRR10998585/SRR10998585.fastq.gz
あとはこのファイルにwget -i
を実行すれば順番にダウンロードされます。
$ wget -i ftp.txt
aria2を使ってfastqファイルを一括取得する
wgetはやはり低速であり、ダウンロードに時間がかかるという点では改善されません。
ここではwgetよりも高速にダウンロードできるaria2を使ってみましょう。
curlやwgetの数倍速い 爆速ダウンローダー aria2を使う #Linux - Qiita
aria2がインストールされていない場合はインストールします。aptでもbrewでも入ります。
$ sudo apt install aria2
ひとつファイルをダウンロードしてみましょう。コマンド名はaria2c
です。元のFTP URLは受け付けないようですので、冒頭に "ftp://" を追加して実行してください。
$ aria2c -x 16 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR109/085/SRR10998585/SRR10998585.fastq.gz
-x 16
は使用するCPU数です。最大で16まで指定できます。
これにより、wgetよりも圧倒的に高速にファイルをダウンロードすることが可能です。
全ファイルをダウンロードしてみましょう。aria2cも "-i" オプションが使えますが、ここでは "ftp://"を追加しなければいけません。色々なやり方がありますが、ここではシンプルにfor文を使いましょう。
for url in $(cat ftp.txt); do
echo $url
aria2c -x 16 ftp://$url
done
これで全ファイルをダウンロードできます。
終わりに
- この方法をGEOやSRAで使えると楽なのですが、これらのデータベースではダウンロードURLが公開されていません。ariaやwgetを使いたい場合はENAを使いましょう。
- また、aria2cも時々ダウンロードに失敗することがあるようです。ダウンロード完了後には全てのファイルが揃っているか確認するようにしてください。