2019 2/26 テストラン追加
2019 7/10 コメント追加
Fastqフォーマットのファイルは、シーケンスと品質の両方の情報を1つのファイルにまとめて含むため、DNAシーケンスを共有するための主要なファイルフォーマットとなっている(ref.1)。さらに、オーバーラップするペアを結合することによって獲得することができる潜在的により長い配列から得られるさらなる情報のために、ペアエンドシーケンシングがシーケンシングアプローチで支配的になった。たとえば、シーケンスリードアーカイブには、シングルリードライブラリの2倍のペアエンドライブラリが含まれている(2018年2月1日現在、SRAには2,233,015のペアエンドライブラリと1,110,884のシングルリードライブラリがあった)。
ペアエンドリードデータの結合(pear(ref.2)など)、DNA配列のアセンブリ(spadeやmeta-spades(ref.3)など)、リードのリファレンス配列へのマッピング(例えばbowtie2(ref.4))に使用される多くの下流ツール))は、ペアになったシーケンスが同期していることを要求する。特に、これらのツールでは、1つのペアエンドシーケンスランの2ファイルが(i)各ファイルで同数のリードを持ち、(ii)左右(好みの用語に応じて前後)で実行される必要がある。シーケンスは各ファイルで同じ順序で現れる。対照的に、いくつかのアップストリームアプリケーションは同期してペアエンドシーケンスを提供しない。例えば、シーケンスリードアーカイブ(SRA)からシーケンスを検索するために広く使用されているfastq-dumpは、ファイル内のシーケンスの順序を自動的には同期せず、いくつかのトリミングプログラムは順序付けられていないペアエンドリードをもたらす(fastq-dumpコマンドのドキュメント化されていないオプション--split-3を使い、おそらくシーケンスを順番に分割できるが(ref.5))。
シーケンステクノロジが向上するにつれて、fastqファイルのサイズは大きくなり、数十ギガバイトのファイルも珍しくない。これは、ペアエンドリードが同じ順序で行われるように、ペアリードの再同期をとるための課題をもたらす。著者らは、メモリと時間効率の良い方法で大きなfastqファイルを扱うため、fastq-pairを開発した。
スタンダード(ref.1 link)によると、fastqファイルのシーケンス識別子は、先頭の@記号で示される識別子行の空白以外のすべての文字で構成されている。順方向および逆方向のリードは、通常、シーケンスIDの末尾の/ fまたは/ rで識別され、左および右は通常、シーケンスIDの末尾の/ 1および/ 2で識別される。他のほとんどのソフトウェアがそうであるように、我々は現在すべてのfastqファイルがシーケンスもクオリティ情報もラップしないと仮定する、従って、各シーケンスは正確に4行(@記号で始まる識別子行、DNAシーケンス行、スペーサーという +で始まりDNA配列の終わりを示す行、そして品質スコア行(ref.1)で表される。
Fastq-pairは、2つのファイルのファイル名を指定することによってインスタンス化される。アルゴリズムは、最初のファイルのすべての識別子について、シーケンス識別子とファイル内の位置を含むオブジェクトのハッシュを作成する。これにより、シーケンス識別子、シーケンス、およびクオリティスコアを格納する簡単なソリューションと比較して、fastq-pairのメモリ要件が大幅に削減される。最初のファイルへのファイルポインタは、2番目のファイルが読み込まれている間はアクセス可能なままになる。2番目のファイルの各シーケンスについて、識別子がハッシュに存在する場合、2つのシーケンスとクオリティスコアは適切なペアのファイルに書き込まれる。識別子がハッシュに存在しない場合、シーケンスは適切なシングルトンファイルに書き込まれる。 2番目のファイルを反復処理した後、見られなかったシーケンスは適切なシングルトンファイルに書き込まれる。
(2段落省略)
注意点が1つある。fastq-pairはファイルストリームへのランダムアクセスに大きく依存しているため、圧縮ファイルを処理できない。少なくとも1つのファイルはメモリか一時ファイルのどちらかに解凍する必要し、fastq-pairをメモリ効率良く扱えるようにする必要がある。
結論:fastq-pairは、fastqファイルが多くの下流の処理ステップで要求されるのと同じ順序でリードを含むことを保証する迅速でメモリ効率の良いアプローチを提供する。
インストール
mac os 10.14でテストした(cmake version 3.13.2)。
依存
We use cmake (version 3 or higher) for fastq_pair.
本体 Github
git clone https://github.com/linsalrob/fastq-pair.git
cd fastq-pair/
mkdir build && cd build
cmake ..
make && sudo make install
> fastq_pair
$ fastq_pair
fastq_pair [options] [fastq file 1] [fastq file 2]
OPTIONS
-t table size (default 100003)
-p print the number of elements in each bucket in the table
-v verbose output. This is mainly for debugging
テストラン
ペアエンドfastqを指定するだけでランできる。
fastq_pair -t 1000 test/left.fastq test/right.fastq
Writing the paired reads to test/left.fastq.paired.fq and test/right.fastq.paired.fq.
Writing the single reads to test/left.fastq.single.fq and test/right.fastq.single.fq
Left paired: 50 Right paired: 50
Left single: 200 Right single: 25
ジョブが終わると、元のfastqと同じディレクトリに4つのfastqが出力される(同期したペア2fastq、シングルトン2fastq)。 動作は非常に高速。200MBx2のペアエンドfastqを使うと、2.7秒でジョブは完了した(*1)。
データによってはかなりリード数が減ってしまいます。注意して使って下さい。
引用
Fastq-pair: efficient synchronization of paired-end fastq files
John A. Edwards1 and Robert A. Edwards
bioRxiv preprint first posted online Feb. 19, 2019
*1
macbook pro 2015 15インチ上位モデル使用
まとめ
Splitting and pairing fastq files
https://edwards.sdsu.edu/research/sorting-and-paring-fastq-files/