シークエンシングデータなどをDDBJのファイルサーバにアップしてDRAの登録申請を行う場合、D-wayのDRAで情報を記載後に実行する自動validationのステップがあります。このプロセスでは、ファイル受付サーバからのシークエンシングデータのロードにSRA Toolkitの"latf-load"というプログラムが使われているらしく(2023年5月現在)、DRA申請時のlog ファイルから確認することができます。
latf-loadはファイル読み出しの時にシークエンシングデータのタイプが申請内容とあっているかエラーチェックも行います。申請内容と一致していないfastqがロードされた場合、DRAでダウンロードできるlogにエラーが表示されます(似たコマンドにXMLを使う"fastq-load"や"illumina-load"、"abi-load"(SOLiD向け?*1)、他いくつかあるようです)。このコマンドはsra-toolsに含まれているので、ローカルマシンで予めシークエンシングデータのチェックを行ない、DRAの自動検証時にエラーが起きなさそうか確認することも可能です*2。簡単に試してみます。
インストール
SRA Toolkitはcondaで導入できるが、v.3.0.5にはこのコマンドは含まれない(v2.1.1では含まれていたので除外された理由があるのかもしれない)。ここから各プラットフォーム向けのバイナリをダウンロードできる。ダウンロードしてパスを通した(ubuntu18LTS使用)。
#Ubuntu
wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/3.0.5/sratoolkit.3.0.5-ubuntu64.tar.gz
tar -xvf sratoolkit.3.0.5-ubuntu64.tar.gz
cd sratoolkit.3.0.5-ubuntu64/bin/
> ./fastq-load -h
Usage:
fastq-load [options] -r run.xml -e experiment.xml -o output-path
-r|--run-xml path to run.xml describing input files
-e|--experiment path to experiment.xml
-o|--output-path target location
Options:
-i|--input-path input files location, default '.'
-u|--input-unpacked input files are unpacked
-t|--input-no-threads disable input files threaded caching
-f|--force force target overwrite
-n|--spots-number process only given number of spots from
input
-bE|--bad-spot-number acceptable number of spot creation errors,
default is 50
-p|--bad-spot-percentage acceptable percentage of spots creation
errors, default is 5
-x|--expected path to expected.xml
-s|--intensities [on off] load intensity data, default is
off. For Illumina: signal, intensity,
noise; AB SOLiD: signal(s); LS454:
signal, position (for SFF files this option
is ON by default).
-z|--xml-log <logfile> Produce XML-formatted log 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.
./fastq-load : 3.0.5
> ./latf-load -h
Usage:
latf-load [options] <fastq-file> ...
Summary:
Load FASTQ formatted data files
Example:
latf-load -p 454 -o /tmp/SRZ123456 123456-1.fastq 123456-2.fastq
-o|--output <path> Path and Name of the output database.
-q|--quality Quality encoding (PHRED_33, PHRED_64,
LOGODDS)
Options:
-t|--tmpfs <path-to-file> Path to be used for scratch files.
-Q|--qual-quant <phred-score> Quality scores quantization level, can be
number (0: none default, 1: 2bit, 2:
1bit), or string like
'1:10,10:20,20:30,30:-' (which is
equivalent to 1).
--cache-size <mbytes> Set the cache size in MB for the temporary
indices
--max-rec-count <count> Set the maximum number of records to
process from the FASTQ file
-E|--max-err-count <count> Set the maximum number of errors to ignore
from the FASTQ file
-p|--platform Platform (ILLUMINA, LS454, SOLID,
COMPLETE_GENOMICS, HELICOS, PACBIO,
IONTORRENT, CAPILLARY)
--max-err-pct acceptable percentage of spots creation
errors, default is 5
--ignore-illumina-tags ignore barcodes contained in
Illumina-formatted names
--no-readnames drop original read names
-a|--allow_duplicates allow duplicate read names in the same file
-1|--read1PairFiles <path-to-file> Default read number for this file is 1.
Processing will be interleaved with the
file specified in --read2PairFile|-r2
-2|--read2PairFiles <path-to-file> Default read number for this file is 2.
Processing will be interleaved with the
file specified in --read1PairFile|-r1
-z|--xml-log <logfile> Produce XML-formatted log 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.
./latf-load : 3.0.5
実行方法
fastqを指定する。ここではイルミナのNovaSeq6000で読まれたペアエンドのfastqを想定している。また、シークエンスプラットフォーム、クオリティエンコードタイプを指定する。
./latf-load -p ILLUMINA -o test -q PHRED_33 sample1_L01_1_1.fq.gz sample1_L01_1_2.fq.gz
-
-o Path and Name of the output database.
-
-q Quality encoding (PHRED_33, PHRED_64, LOGODDS)
-
-p Platform (ILLUMINA, LS454, SOLID, COMPLETE_GENOMICS, HELICOS, PACBIO, IONTORRENT, CAPILLARY)
このコマンドでエラーが出る場合、申請内容(-pと-qで指定した機種依存的なフォーマット、DRAではwebでの申請内容)と一致していない可能性があります。ただし、エラー情報はやや直感的な説明ではないようです。例えば":syntax error, unexpected fqENDLINE"というのは、fastq2行目の配列決定された塩基がおかしいとは限らず、fastq1行目のID行のフォーマットがおかしい可能性もあります。
自分はvalidation時に上記のエラーが発生しました。サブミットするfastqには前処理をかけていて、IDが標準的な書式から変化していたことが原因と考えました。通常SRA/ENA/DRAには生のプロセシングしていないリードを登録すると思いますが、そのデータはヒトゲノムのリードが含まれる可能性があるメタゲノムデータであったため、個人や地域特異的な多型プロファイルが利用されるリスクを予防する目的でフィルタリングしたリードをアップロードしました。そのプロセスによってfastqのIDが標準的な書式から変わっていたため、validationで":syntax error, unexpected fqENDLINE"が発生したと考えられます。スクリプトを書いてfastqのIDの余分な情報を修正して、ローカルでlatf-loadを走らせてエラーが発生しないことを確認後、アップロードしました。
参考までに例えばNovaSeq6000のfastqのID行は以下のようになっています*3。コロンはセパレータです。
@AXXXXX:7:XXXXXXX2:2:1101:26539:1110 1:N:0:1
左から
- AXXXXXは機種名
- 7はシーケンスラン(ラン番号)。同じイルミナラン内で生成されたリードは同じラン番号を持ちます。
- XXXXXXX2はフローセルのID
- 2はフローセル内のレーン番号
- 1101はタイル(セル)の番号
- 26539:1110はクラスターのX軸およびY軸の位置
- 1はリードの番号。ペアエンドのR2なら2。
- Nはリードがフィルタリングされたかどうか。NはNo。Yはフィルタリングされた低クオリティなリード。
- 0はコントロール番号。イルミナの制御的な目的。
- 1はサンプル番号、イルミナラン内の複数のサンプルを識別するため
(最後にindex配列がついている場合もあります)
間違っている点がありましたらお教えください。
引用
https://github.com/ncbi/sra-tools
*1
DRAにはSOLiDのカラースペースデータはもう提出できなくなっている。fastqかbamのみアップできる(fastqではカラースペースの情報を完全には保持できない)。
https://www.ddbj.nig.ac.jp/dra/datafile-e.html#SOLiD
*2
https://github.com/ncbi/sra-tools/issues/601
*3