京橋のバイオインフォマティシャンの日常

データ分析、コマンドライン、プログラミングについての技術資料・自己アップデート・悩み事などをまとめています。最近、ディープラーニング関連のR言語の資料をまとめるべく注力してます。

【SRA Toolkitの続編】Mac版のSRA Toolkitを設定して、fastq-dumpの高速版「fasterq-dump」を試してみた件

f:id:skume:20220115213818p:plain

SRA Toolkitの設定

SRA Toolkitの設定は、以前の記事を参考のこと。

skume.net

Mac版のSRA Toolkitを設定すれば、 そのままの設定で、fasterq-dumpコマンドも実行できる。

fasterq-dumpコマンドで、FASTQファイルを高速に取得する

SRA toolsの2.9.1リリースで、fastq-dumpツールに代わる「fasterq-dump」ツールが利用可能になった。

その名の通り、fasterq-dumpコマンドは、一時ファイルやマルチスレッドを利用して、 より高速に動作し、SRAオブジェクトのFASTQファイルへの大規模な変換に適している。 コマンドのオプションは、従来のfastq-dumpコマンドといくつかの相違点があるので注意が必要である。

fasterq-dumpの基本形

まずは、fasterq-dumpの使い方を以下に示す。

fasterq-dump [ options ] [ SRA accessions(s) / ID ]

fastq-dumpでは、ペアリードを左端と右端に分離するためのオプション設定(--split-3)が必要であるが、 fasterq-dumpではデフォルト設定となっている。

fastq-dumpコマンドと同じく、SRAアクセッション番号を指定して実行する。 以下のコマンドは同等であるが、fasterq-dumpを使用した方が高速に実行される。

#fastq-dumpの実行例
fastq-dump [SRR_ID] --split-3 --skip-technical

#fasterq-dumpの実行例
fasterq-dump [SRR_ID]

以下に、Run ID: SRR17327096での実行結果を示した。

f:id:skume:20220109204940p:plain:w400
B

#プログレス表示にて実行
fasterq-dump SRR17327096 -p
#join   :|-------------------------------------------------- 100%   
#concat :|-------------------------------------------------- 100%   
#spots read      : 110,774
#reads read      : 221,548
#reads written   : 221,548

ls
#SRR17327096_1.fastq   SRR17327096_2.fastq

100MBくらいのサイズだとよく分からんけど、気持ち早い気がする。

複数のSRAオブジェクトに対する、fasterq-dumpの実行

シェルスクリプトで複数のファイルに対して処理する場合には、 以下のコードが使える。

while read line; do; 
  fasterq-dump -p $line; 
  done < ./SRR_Acc_ListR.txt

ここで、SRR_Acc_ListR.txtには、下記例のように、1行に1つずつ、SRR IDを記載した形とする。 この時の注意ポイントとして、txtファイルの最終行に、必ず空行を入れておくこと。

f:id:skume:20220105002840p:plain:w400

fasterq-dumpのオプション

 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) 
  -N|--rowid-as-name               use row-id as name 
  --skip-technical                 skip technical reads 
  --include-technical              include technical reads 
  -P|--print-read-nr               print read-numbers 
  -M|--min-read-len                filter by sequence-len 
  --table                          which seq-table to use in case of pacbio 
  --strict                         terminate on invalid read 
  -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 
  --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. 

補足

single-endか、paired-endの判定プログラム

fastq-dumpの-split-spotオプションを使う、シンプルな方法で、 SRAファイルがシングルエンドかペアエンドかを判断できる。

以下に、シェルスクリプトでの実行コードを示す。

srr="SRR17327096";
numLines=$(fastq-dump -X 1 -Z --split-spot $srr | wc -l);
if [ $numLines -eq 4 ];
then;
  echo "$srr is single-end";
else;
  echo "$srr is paired-end";
fi

fastq-dumpコマンドとの相違点

  • -Z(--stdout) オプションは、split-3とsplit-files では機能しない。 この場合、ツールはファイルの生成にフォールバックする。

  • --gzipや--bizp2のオプションがないので、ファイルを出力した後に別処理で圧縮する必要がある。

  • accessionには、-Aオプションがない。accessionまたは絶対パスを指定することになる。

  • fastq-dumpは複数のaccessionsを取らず、1つだけ取る。

  • -N(--minSpotId) と -X(--maxSpotId) オプションはない。

  • fastq-dumpは、Linux、MacOS、Windowsの3つのプラットフォームで利用できる。

参考資料

rnnh.github.io

www.biostars.org