【fasterq-dumpの使い方】FASTQファイルを高速にダウンロードする

 

ぴよこ
FASTQファイルをダウンロードしたくてNCBIのサイトをうろうろしてるんだけど、全然見つからない(汗)
まさる博士
NCBIのSRAでは、FASTQファイルはブラウザからはダウンロードできないんだって

次世代シーケンサー(NGS)のデータ解析を始めるために、まずFASTQファイルを用意する必要があります。

しかしながら、NCBIのデータベースは登録されたシーケンスデータのFASTQファイルを直接ブラウザからダウンロードすることができないため、SRA Toolkitというツールを使ってコマンドライン上から取得する必要があります。

本記事ではSRA Toolkitを使って、公共のレポジトリからFASTQファイルを取得する方法を解説します。

fasterq-dumpとは

SRA Toolkitに含まれる「fasterq-dump」コマンドはSRA(Sequence Read Archive)アクセッションからFASTQ形式のデータを抽出します。fastq-dumpの後継であり、マルチスレッドを利用することにより、高速に動作します。

事前準備

本記事では、sra-toolsのdockerイメージを使ってコマンドを実行します。 dockerが使える準備ができていればそのままお進みください。dockerがまだ使える状態でない方は下記の記事からdockerをインストールしてから先に進みましょう!

関連記事

バイオインフォマティクスを始めるときに、初心者が最初にぶつかる壁が環境構築です。解析を行うためには非常にたくさんのソフトウェアをインストールして使わないといけないケースが多くあります。 この記事では、簡単にバイオイ[…]

Docker Desktop : version 4.19.0
fasterq-dump : version 3.0.1

fasterq-dumpの基本形

使い方は以下のように、fasterq-dumpの後にオプションとSRRアクセッション番号を指定するだけです。

fasterq-dump [オプション] [SRR_ID]

fasterq-dumpのオプション

fasterq-dumpの詳細なオプションは以下をご確認ください。

fasterq-dumpの詳細オプション

Usage:

  fasterq-dump <path> [options]

  fasterq-dump <accession> [options]

Options:

  -o|–outfile                      output-file

  -O|–outdir                      output-dir

  -b|–bufsize                     size of file-buffer dflt=1MB

  -c|–curcache                    size of cursor-cache dflt=10MB

  -m|–mem                         memory limit for sorting dflt=100MB

  -t|–temp                        where to put temp. files dflt=curr dir

  -e|–threads                     how many thread dflt=6

  -p|–progress                    show progress

  -x|–details                     print details

  -s|–split-spot                  split spots into reads

  -S|–split-files                 write reads into different files

  -3|–split-3                     writes single reads in special file

  –concatenate-reads              writes whole spots into one file

  -Z|–stdout                      print output to stdout

  -f|–force                       force to overwrite existing file(s)

  –skip-technical                 skip technical reads

  –include-technical              include technical reads

  -M|–min-read-len                filter by sequence-len

  –table                          which seq-table to use in case of pacbio

  -B|–bases                       filter by bases

  -A|–append                      append to output-file

  –fasta                          produce FASTA output

  –fasta-unsorted                 produce FASTA output, unsorted

  –seq-defline                    custom defline for sequence:  $ac=accession,

                                   $sn=spot-name,  $sg=spot-group, $si=spot-id, 

                                   $ri=read-id, $rl=read-length

  –qual-defline                   custom defline for qualities:  same as seq-defline

  -U|–only-unaligned              process only unaligned reads

  -a|–only-aligned                process only aligned reads

  -l|–row-limit                   limit rowcount per thread

  –disk-limit                     explicitly set disk-limit

  –disk-limit-tmp                 explicitly set disk-limit for temp. files

  –size-check                     switch to control: on=perform size-check

                                   (default),  off=do not perform size-check, 

                                   only=perform size-check only

  –ngc <PATH>                     PATH to ngc file

  -h|–help                        Output brief explanation for the program.

  -V|–version                     Display the version of the program then quit.

  -L|–log-level <level>           Logging level as number or enum string. One

                                   of (fatal|sys|int|err|warn|info|debug) or

                                   (0-6) Current/default is warn

  -v|–verbose                     Increase the verbosity of the program

                                   status messages. Use multiple times for more

                                   verbosity. Negates quiet.

  -q|–quiet                       Turn off all status messages for the

                                   program. Negated by verbose.

  –option-file <file>             Read more options and parameters from the file.

for more information visit:

   https://github.com/ncbi/sra-tools/wiki/HowTo:-fasterq-dump

   https://github.com/ncbi/sra-tools/wiki/08.-prefetch-and-fasterq-dump

fasterq-dump : 3.0.1

オプションはたくさんありますが、よく使うであろうものを2種類ピックアップしてご紹介します。スレッド数を増やすことで、より高速に処理することができます。dockerを利用しているので、dockerに割り当てているリソースを確認して、スレッド数を指定してください。

-e, –threads : スレッド数を指定
-p, –progress : 進捗を表示する

ペアエンドのFASTQファイル

実際に、SRR000001をダウンロードしてみましょう。fasterq-dump以降がFASQファイルを抽出するコマンドであり、「スレッド数を4」で「進捗表示あり」で実行します。
docker container run --rm -v $PWD:/output -w /output ncbi/sra-tools:3.0.1 fasterq-dump -e 4 -p SRR000001

うまくいけば、現在のフォルダにSRR000001.fastq, SRR000001_1.fastq, SRR0000001_2.fastqができているはずです。SRR000001はペアエンドでシーケンスされたデータであるため、SRR000001_1.fastq, SRR0000001_2.fastqの2つに分割されたデータができます。fasterq-dumpではペアエンドのデータを自動で認識してファイルを分割してくれます。

dockerコマンドのオプションについては、以下で補足しておきます。

–rm : コンテナが終了したら削除するオプション
-v $PWD:/output : ホストPCの現在のディレクトリ($PWD)をコンテナ内の/outputにマウントする(紐付ける)
-w /output : コンテナ内の作業ディレクトリを、/outputに指定する

シングルエンドのFASTQファイル

SRRのアクセッション番号を変えるだけで、他のFASTQファイルもダウンロードすることができます。

SRR24464805のデータで試してみましょう。こちらはシングルエンドのデータです。ターミナルで以下のコマンドを実行します。

docker container run --rm -v $PWD:/output -w /output ncbi/sra-tools:3.0.1 fasterq-dump -e 4 -p SRR24464805

実行が完了したら、シングルエンドのデータなので現在のフォルダにSRR24464805.fastqの1つのFASTQファイルがダウンロードできています。

さいごに

SRA Toolkitのfasterq-dumpを使って、自分の解析したいFASTQファイルをダウンロードしてみてください。 また、オプションも色々試してみると理解が深まると思います。