.ORAフォーマットの設計上の検討事項と手法により、最大5Xゲノム圧縮効率を実現

Guillaume Rizk, Jennifer Del Giudice; published November 18, 2021

DRAGEN ORA(Original Read Archive)圧縮テクノロジーは、特に最新のイルミナシーケンスプラットフォームであるNovaSeq  6000、NextSeq 1000、NextSeq 2000システムにおいて、FASTQファイルとFASTQ.GZファイルの高い圧縮率を実現する完全ロスレスのゲノム圧縮テクノロジーです。最大5倍の比率で、FASTQ(FASTQ.GZ)と比較します(図1)。

図1:WESデータSRR85812288で使用されるDRAGEN ORA圧縮でNovaSeq 6000に到達した圧縮率の例

ハイスループット次世代シーケンサー(NGS)で生成されるデータ量が飛躍的に増加するにつれ、FASTQ.ORAフォーマットはストレージコストとストレージサーバーの維持に必要なエネルギーの両方を大幅に削減します。最大の影響を達成するためには、可能な限り広く採用される形式が必要です。採用に有利になるように、フォーマットの仕様をリリースしました(https://support-docs.illumina.com/SW/ORA_Format_Specification/Content/SW/ORA/ORAFormatSpecification.htm)。この記事では、NGSワークフローでの使用のために特別に設計されたフォーマットの特徴について説明します。

gzip圧縮とは異なり、DRAGEN ORAはゲノムデータに特化した圧縮テクノロジーです。高い圧縮率は、この記事でさらに検討する効率的なロスレスエンコーディング手法の結果です。

.ORA形式は、効率的なエンコーディングに加えて、ユーザーが他の利点を享受できるように設計されています。

  • ストリーミング。.ORAファイルをダウンロードする場合、リードの最初のブロックがダウンロードされるとすぐに解凍され、解析を開始できるため、ダウンロードが完了するまで待つ必要はありません。
  • 圧縮ファイル連結。このフォーマットでは、複数の.ORAファイルを同じファイルに書き込むことができます。この機能は、複数のFASTQ.ORAファイルの取り扱いを簡素化します。
  • 並行圧縮/減圧。フォーマットの設計により、両方のプロセスを加速するために、効率的なマルチスレッドによる圧縮/解凍の実装が可能になります。
  • メタデータの追加。このフォーマットでは、カスタムメタデータを追加できます。
  • 暗号化。このフォーマットでは、適切なキーなしでデータを読み取り不能にするために、オプションの暗号化レイヤーを使用できます。

プリアンブル

この新しい圧縮フォーマットの全体的な目的は、計算時間とコストを節約することです。すべての設計選択は、これらによって導かれます。

これにより、この形式は、学術研究によって生み出される多くの圧縮プロトタイプとは異なります。多くの場合、計算コストに関係なく、可能な限り高い圧縮率を達成したり、新しい圧縮方法の理論的可能性を探ったりするなど、何が不可能かの境界を探ることを目的としています。 Assembltrie 1またはlfqc 2は、高い圧縮率を目指していますが、高い計算コストを伴っています。

1 ORA圧縮フォーマットの目的

ORA圧縮フォーマットには、 完全なロスレス低コストのNGSワークフローへの統合という2つの必須要件があります。 

1.1  完全ロスレス

圧縮形式は、可逆性または可逆性である可能性があります。例えば、オーディオ、画像、またはビデオの場合、より大きな圧縮を可能にするために元のデータを変更することは許容されます。データ修正は必ずしもユーザーが認識できるわけではないため、これは理にかなっています。ゲノムデータ については、圧縮データで解析を行い、非圧縮データと同じ結果を得る必要があります。二次解析を開始する前に、ユーザーはこの要件が満たされていることに確信を持つ必要があります。これを実現する最善の方法は、完全にロスレスなフォーマットを持つことです。つまり、圧縮/解凍サイクルではデータバイト間を保存し、MD5などのチェックサムでロスレス性を簡単に検証できるようにする必要があります。

SPRING 3やORCOM 4などの既存のFASTQ圧縮フォーマットでは、圧縮を促進する効果的な手法であるため、リードを並べ替えることができます。しかし、FASTQにおける最初のリードオーダーには意味のある情報が含まれていないという前提で、これらのフォーマットの一部はロスレスであると主張しています。真正な議論がなされても、チェックサム検証はDNAシーケンスが保持されていることを確認するためにもはや使用できないため、DNAシーケンスの分野で情報が消失していないという証拠を提示することは困難です。さらに、チェックサムの保存は多くの場合、品質と規制要件の要件です。

これらの理由から、リードリオーダー法を選択せず、チェックサムの保存を必須にしました。

1.2  NGSワークフローへの低コストの統合

コストの節約が主要な要件であるため、圧縮率が非常に高く、大量のメモリやコンピューティングリソースを必要とする圧縮フォーマットは機能しません。当社の圧縮形式は、不当な追加コストを被らず、既存の解析ワークフローで可能な限り混乱を起こさないようにする必要があります。

これは以下を意味します。

  • メモリ使用量が少ない(圧縮/解凍が他のプロセスと並行して発生する場合、圧縮のためだけにより大きなシステムは不要)
  • ワークフロー全体を著しく減速させないのに十分な速さ
  • 一時的なディスクファイルなしで、その場で圧縮/解凍が可能
  • 大きなファイルに合わせて拡張可能
1.3 高い圧縮率

もちろん、圧縮率をできるだけ高くしたいと考えていますが、最初の2つの要件が満たされている限り(完全にロスレスで低コストの統合)です。

観察

当分野の学術研究では、FASTQファイルの圧縮はリファレンスフリー手法(リード間の類似性を探索する)またはリファレンスベースの手法(リードとリファレンスゲノム間の類似性を探索する)で実施できることが示されました。

リファレンスフリーメソッドは、特にリードリオーダーメソッドと組み合わせた場合、高い圧縮率を持つことができますが、実行時間やメモリ使用要件も高い傾向があります3,4

FQZip 5やLW-FQZip 6など、リファレンスベースの手法は原則としてより容易で、ゲノムにリードをアライメントし、位置と差異のリストを符号化します。また、高い圧縮率を達成するためにリード再注文を使用する必要はありません。これらは、良質なリファレンスが利用できる場合にのみ可能です。作成および保管されるデータの大部分はヒトのデータであり、今後もヒトのデータとなるため、非常に良好なリファレンスが利用できるリファレンスベースの方法を選択することは理にかなっています。

要件を考慮して、リファレンスベースの圧縮方法を選択しました。これは最も実用的な選択のようです。つまり、ヒトのリファレンスゲノムを用いて生成されたゲノムデータの大部分をカバーしながら、高速な実行と高い圧縮率を可能にします。

2 FASTQ.ORA圧縮フォーマットの説明

設計上の選択の多くは、速度と圧縮率のトレードオフが良好になるように行われました。このフォーマットは、イルミナのシーケンスデータの特性も考慮して最適化されています:低いシーケンスエラー率、インデルエラーなし、ショートリード。

.ORA圧縮形式は、すべてのイルミナプラットフォームで生成されたFASTQデータで動作 しますが、Novaseq 6000やNextSeq 1000/2000などの最近のイルミナプラットフォームで最も効率的です。

2.1 フォーマットレイアウト

ORAファイルはORAブロックのリストで構成されています(図2)。各ブロックにはリードが塊あり、減圧に必要なすべての情報を含む内蔵型ユニットです。したがって、ファイルヘッダー全体はありません。各ブロックには独自のヘッダーセクションがあります。このスキームでは、圧縮ファイル連結、並列圧縮/解凍、およびストリーミング機能(ブロックが転送されるとすぐに解凍を開始できます)が可能です。

各ブロックには、元のファイルと同じ順序で大量のリードが格納されます。ブロックはヘッダーから始まり、データセクションのリストが続きます。ヘッダーにはメタデータと各データセクションのサイズが格納されます。DNAシーケンス、クオリティスコア、リード名には別々のデータセクションがあります。

図2:.ORAファイルのレイアウト。50,000リードを含むブロックのリスト。各ブロックは個別に解凍できます。各ブロックはヘッダーから始まり、DNAシーケンス、リード名、およびクオリティスコア(以下に説明するように2つのセクションに分割)の異なるデータセクションが含まれます。

図2のORAファイルのレイアウトは、それぞれ50,000リードを含む一連のブロックを示しています。各ブロックは個別に解凍できます。各ブロックはヘッダーから始まり、DNAシーケンス、リード名、およびクオリティスコア(以下に説明するように2つのセクションに分割)の異なるデータセクションが含まれます。

2.2 ORAブロック
2.2.1 DNAシーケンスのエンコーディング

リファレンスベースのコンプレッサーがあるため、リードはまずリファレンスゲノムにマッピングされ、次にゲノム内の位置と差異のリストとしてコード化されます。マッピングアルゴリズムはフォーマット仕様の一部ではなく、実装に依存します。注意すべき点は、リードアライナーの選択は、圧縮速度と圧縮率において重要な役割を果たしていることです。ブロックヘッダーのビットフラグは、ブロック内のリードがすべて同じサイズであるかどうかを示します。そうでない場合、サイズのリストは別のデータセクションに保存されます。

シーケンスはカスタムバイナリ形式でエンコードされ、エントロピーコーダー、zstdライブラリー7でさらに圧縮されます

リードは、リファレンスゲノム上の位置(可能な場合は32ビットのアブソリュート位置または16ビットのオフセットを使用)と、必要に応じてミスマッチのリストでエンコードされます。各ミスマッチは1バイトでエンコードされ、ミスマッチの6ビットオフセット位置と2ビットの代替ヌクレオチドが加わります。より大きなオフセットが必要な場合、その間に"偽"のミスマッチを追加します。シーケンスの内容に応じて、ヌクレオチドあたり2または4ビットでエンコードされるクリッピングされた部分を許可します。マッピングされていないリードは生のコードで、ヌクレオチドあたり2または4ビットでコード化されます。

シンプルさとスピードのために、インデルシーケンスエラーは使用されません。インデルが最適なアライメントに必要であった場合、リードはより多くのミスマッチまたはクリップされた部分を使用してエンコードされます。インデルシーケンスエラーはイルミナのシーケンスデータでは稀なイベントであるため(0.03%未満)、これは圧縮率に大きく影響しません。最も重要なのは、インデルを省略することで、非常に高速なマッパーを使用できることです。

ORAフォーマットでは、リードに4つの異なるエンコーディングを使用します。位置のみを必要とする完全にマッピングされたリード、位置+ミスマッチリストを必要とするグローバルアライメント、位置+ミスマッチリスト+クリップシーケンスを必要とするローカルアライメント、およびマップされていないリードです。一部のフラグは、各リードに対して、使用されたエンコーディングの種類、位置の形式(絶対またはオフセット)、ミスマッチの数、およびクリップされた部分の長さを示します。

例として、一部のエンコーディングのビットサイズのリストを以下に示します。

  • オフセットタイプ位置での完璧なアライメント:4フラグビット + 16ポジションビット = 合計20ビット
  • アブソリュートタイプ位置での完璧なアライメント:4フラグビット + 32ポジションビット = 合計36ビット
  • グローバルアライメント、2ミスマッチ、アブソリュート位置:12フラグビット + 32ポジションビット +2*ミスマッチの場合は8ビット = 合計60ビット
  • ローカルアライメント、2ミスマッチ、10 ntクリップ部分:合計92ビット
  • マップされていない150-ntリード:300ビット

このバイナリ形式でリードをエンコードした後、zstdライブラリー7を使用してさらに圧縮します。

圧縮後(バイナリエンコーディング + zstd)、各ヌクレオチドは平均0.3~0.5ビット(生FASTQではヌクレオチドあたり8ビット、ジップFASTQでは約2ビット/ヌクレオチド)でコードされます。

2.2.2 クオリティスコアのエンコーディング

最近のシーケンサーからのデータの場合、クオリティスコアは最大4つの異なる値しか必要とせず、値0は未確定(N)塩基の品質スコアに使用されます。最初のステップとして、Nを含まないリードを区別します。そのため、品質値は3つしかなく、残りは3つしかありません。したがって、図2に示す2つのクオリティスコアセクションに対応する2つのクオリティスコアグループが結ばれます。

リードの大部分を表す3つの異なる品質値を持つグループでは、まず品質値あたり1.6ビット(log2(3) ≈ 1.58)で品質値をリエンコードし、次にレンジエンコーダーを使用し、4ビット値コンテキストモデルで前の30ウィンドウコンテキストにおける最高値品質スコアの数を示します。

シーケンサーの品質値のビニングスキームは、図3に示すように、圧縮ファイルで消費される相対的なスペースの品質フィールドに影響します。また、図4に示すように、圧縮率にも影響を及ぼします。

図3:NovaSeq 6000およびHiSeq TM 2000タイプのデータのDNAと品質の分布。Hiseq TM 2000装置では、品質スコアが40の異なる値にエンコードされており、品質がファイルサイズの大部分を占めます。NovaSeq 6000の場合、品質とDNAのスペースはほぼ同じです。 

図4:異なるシーケンサー上の生FASTQおよびgzippedファイルに対するFASTQ.ORAファイルのサイズ。DRAGEN ORAは、NovaSeq 6000またはNextSeq 1000/2000(圧縮率4~5倍対gzippedファイル)のように、品質スコアが2ビットエンコードされている最近のシーケンサーで最高の圧縮率を実現します。古いシーケンサーでは、品質スコアのロスレス圧縮はファイル内のスペースを多くとり、全体的な圧縮率を大幅に低下させます。

2.2.3 リード名のエンコーディング

リード名は、数字以外のフィールドから数字を分離するためにトークン化され、各トークンはブロックのすべてのリードで\\"列単位\\"に圧縮されます。数字フィールドは、前のリードからのオフセットとしてエンコードされ、zstdライブラリーでは数字以外としてエンコードされます。

いくつかの既存のFASTQ圧縮フォーマットは、すでにこのスキームの一部のバリエーションを使用しており、シンプルかつ効率的であることを示しています(例:Fqzcomp 8)。

2.2.4 完全性チェック

完全性チェックは圧縮フォーマットの重要な部分です。ORA形式では、圧縮ファイルの各ブロック内に2つのチェックサムが保存されます。

  • 圧縮データのチェックサム:これにより、ファイルを解凍する前にファイルの破損を確認することができます(圧縮されたファイルに変更はありますか?)。
  • 元の非圧縮データのチェックサム:減圧時にロスレスに減圧することを検証できます。

インテグリティチェックはユーザーが手動で起動できます(gzip --testに似ています)。当社の実装では、ファイルが圧縮されると常に完全な整合性チェックが自動的に実行されます(新しい圧縮ブロックが生成されると、すぐに解凍され、入力と比較されます)。

2.2.5 リファレンスゲノム

現在DRAGEN ORAで使用されているデフォルトのヒトリファレンスゲノムはhg38です。

このリファレンスは圧縮ツールに特有であり、解析に使用できるものとは完全に独立しています。圧縮と二次解析マッピングのために、リファレンスゲノムのバージョンが完全に異なる可能性があります。

さらに、.ORAフォーマットでは、必要に応じて他のリファレンスゲノムを使用できます(ただし、減圧時に圧縮時と同じリファレンスが必要になります)。

3 結果的な性能/設計の特徴

DRAGEN ORA圧縮ツールは、上記の厳しい要件を満たすように設計されています。この設計は高性能につながり、以下に説明するさまざまな便利な機能を可能にします。

3.1 bzip2との比較 / SPRING

表1では、DRAGEN ORAをbzip2およびSPRING 3と比較します。ここでは包括的な比較を行うつもりはなく、bzip2を選択しました。これは、より高い圧縮率を達成するgzipに代わる一般的な方法であり、最新のFASTQ圧縮フォーマットの1つとしてSPRINGが発表されています。SPRINGはデフォルトのオプションで使用されました。

試験は16スレッドで実施されます。入力としてFASTQ.GZファイルから圧縮し、FASTQに解凍します。

表1:さまざまなサイズのファイルでbzip2、gzip、SPRINGと比較したDRAGEN ORAのパフォーマンス

ファイルにSRR9613620(ヒトエクソームシーケンスデータ、FASTQ.GZ 6.3 GB)

ファイルにSRR9273189(FASTQ.GZを14.4 GBとしたヒトエクソームシーケンスデータ)

DRAGEN ORAは一貫して高速で(SPRINGよりも7倍以上速いテスト)、SPRINGよりも小さなファイラーサイズです。

特に、DRAGEN ORAのメモリ使用量はファイルサイズに依存しません。一方、SPRING 3などの他のコンプレッサーでは、入力ファイルのサイズに応じてメモリ要件が増大するため、大きなファイルで使用するのが面倒です。

3.2 pigz/gzipと比較した圧縮/解凍速度

表2に示す実験では、DRAGEN ORAの圧縮/解凍速度を、7 GBのFASTQ.GZファイルで16スレッドで実行されているgzipの並列バージョンであるpigzと比較します。このテスト では、DRAGEN ORAの圧縮はFASTQ.GZからFASTQ.ORA、解凍はFASTQ.ORAからFASTQです。

表2:ブタと比較したDRAGEN ORAスピード性能

DRAGEN ORAは、圧縮と解凍の両方でpigzよりも高速です。

DRAGEN ORA圧縮(FASTQ.GZ -> FASTQ.ORA)は、FASTQ.ORAに圧縮する前に入力ファイルを解凍する必要があるため、解凍ランタイムはDRAGEN ORA圧縮ランタイムの下限となります。

DRAGEN ORA圧縮時間は 106秒で、16スレッドで実行する とこの下限(97秒)に非常に近いことがわかります。

3.3  フォーマット仕様によって可能になる機能:ストリーミング、メタデータ、暗号化

.ORA形式はストリーミングの使用によく適応しています。.ORAファイルがダウンロードされると、最初のブロックが受信されるとすぐに解凍を開始できます。逆に、ローカルファイルを圧縮する場合、最初のブロックが圧縮されるとすぐに圧縮ファイルのアップロードを開始できます。 DRAGEN v 3.9は、AWS S3またはAzure Blob StorageからのORAファイルのストリーミングを特徴としています。

さらに、.ORA形式はAESを使用して暗号化をサポートできるように設計されており、ORA実装ではORAアーカイブ(https://support-docs.illumina.com/SW/ORA_Format_Specification/Content/SW/ORA/ORAFormatSpecification.htm)にカスタムメタデータを書き込むことができます。注:現在、これらの機能は、.ORA形式への圧縮の現在の実装では実装されていません(この記事の発行時点ではDRAGEN 3.9)。

ここでは、.ORAフォーマットがハイスループットのゲノムデータの管理要件にうまく対応していることを示しています。ゲノミクスコミュニティは、ゲノミクスを使用することによって大きな恩恵を受ける可能性があります。手法を説明し、仕様を共有することで、その採用を促進したいと考えています。

確認事項:Michael Ruehle氏とRami Mehio氏のご支援と、この記事をご覧いただき、ありがとうございます。

参考文献
  1. Ginart, A. A., Hui, J., Zhu, K., Numanagić, I., Courtade, T. A., Sahinalp, S. C., & David, N. T. ライトアセンブリによるハイスループットシーケンスデータの最適な圧縮表現。 Nat Commun 9, 566(2018年)
  2. Nicolae, M., Pathak, S., & Rajasekaran, S. LFQC:FASTQファイル用のロスレス圧縮アルゴリズム。 バイオインフォマティクス 31, 20, 3276-3281(2015年)
  3. Chandak, S., Tatwawadi, K., Ochoa, I., Hernaez, M., & Weissman, T. SPRING:FASTQデータ用の次世代コンプレッサー。 バイオインフォマティクス、35、15、2674-2676(2019)
  4. Grabowski, S., Deorowicz, S., & Roguski, Ł. ゲノムシーケンスからのデータのディスクベースの圧縮。 バイオインフォマティクス31、9(2015年)、1389-1395
  5. Zhang, Y., Li, L., Xiao, J., Yang, Y., & Zhu, Z. FQZip:FASTQ形式で次世代シーケンスデータをロスレスリファレンスベースで圧縮。 第18回アジア太平洋インテリジェント進化システムシンポジウム(2015年)第2巻(127~135ページ)の議事録。スプリンガー、チャム。DOI:10.1007/978-3-319-13356-0_11
  6. Huang, Z. A., Wen, Z., Deng, Q., Chu, Y., Sun, Y., & Zhu, Z. LW-FQZip 2:FASTQファイルの並列リファレンスベースの圧縮。 BMC bioinformatics, 18, 1, 1-8(2017年)
  7. https://tools.ietf.org/id/draft-kucherawy-dispatch-zstd-00.html
  8. Bonfield, J. K., & Mahoney, M. V. FASTQおよびSAMフォーマットシーケンスデータの圧縮。 PloS 1、8、3、e59190(2013年)