はじめに
NGSデータ解析の最初のステップ、FASTQの品質管理。既存ツールには次のような課題があります。
インストールが面倒:JavaやC++のビルド環境が必要
データをサーバーに送る必要がある:クラウド型はプライバシー面で不安
環境構築で時間を取られる:研究に集中したい
そこで、ブラウザだけで完結するFASTQ品質管理エンジン GeekNome_QC を公開しました。
ブラウザにアクセスするだけで使える(インストール不要)
ファイルは一切アップロードされない(Zero-Upload)
fastpと同等の精度を保ちながら 5倍以上高速
WebAssembly + pthreads でブラウザ内マルチスレッド実行
公開URL: https://www.geeknome.com/geeknomeqc
なぜブラウザで動かすのか
既存のQCツール(fastp、Trimmomatic、Cutadapt)は素晴らしいツールですが、いくつかの理由からWeb環境に組み込むのは簡単ではありません。
依存関係が重い:C++のビルドチェーン、SIMDライブラリ、圧縮ライブラリなど
データの受け渡しが必要:サーバー型はゲノムデータを送信する必要がある
パラメータが固定されている:各フィルタの閾値をUIから変更できない
GeekNome_QCはこれらを解決するために、C11でゼロから書いた単一のエンジンとして設計しました。ブラウザでは WebAssembly と pthreads を使い、データは端末から一歩も出ません。
実装されているパイプライン
fastpと同じ順序で10のフィルタを適用します。順序を変えると測定可能な差が出るためです。
フィルタ 内容
01 アダプタートリミング 自動検出 + 20アダプター、cmplen/8 の許容誤差
02 5' 品質トリミング スライディングウィンドウ、Q≥20
03 3' スライディングウィンドウ 4 bpウィンドウ、w−1 バックトラック
04a Poly-G 最大5ミスマッチ、(i+1)/8 の許容誤差
04b Poly-X カウントで塩基を決定、Nは4塩基すべてにカウント
05 低品質%フィルタ Q15、低品質塩基が最大40%
06 平均品質フィルタ リードごとの最低平均品質
07 N塩基フィルタ リードあたり最大5つのN
08 最小長フィルタ 全トリミング後に最低100 bp
09 低複雑性フィルタ 隣接塩基変化の割合 ≥ 30%
10 レポート + FASTQ HTMLレポートとクリーンなFASTQ
実装のポイント
アダプター自動検出:ファイルを処理する前に、最初の16,384リードをスキャンして各アダプターの存在を測定します。どのアダプターも閾値を超えなければ、アダプタートリミングモジュールを完全に無効化します。これにより、短い4 bpの偶然の一致による約13,700の偽陽性を排除でき、fastpと同様の動作になります。
スライディングウィンドウ:3'トリミングはfastpの動作を忠実に再現。平均品質が閾値を超える最初のウィンドウを見つけた後、w−1 位置バックトラックします。この調整がないと、49%のケースでfastpより3 bp長いリードになります。
Poly-X:テールの主要塩基はA/T/C/Gのカウントで決定し、仮定しません。N塩基は4つの選択肢すべてに同時にカウントされます。
ベンチマーク結果
実際のIllumina UHRライブラリ(1,000,000リード、140.8 Mb)でfastp v0.23.4と比較しました。
指標 fastp GeekNome_QC Δ
出力リード数 924,061 924,047 −14 (−0.0015 %)
出力塩基数 133,388,689 133,388,727 +38
リテンション 92.406 % 92.405 % −0.001 pp
Poly-Xトリム 7,162 7,162 0(完全一致)
アダプタートリム 0 0 0
実行時間(8スレッド) 9.48 s 1.89 s 5.02倍高速
924,061リードのうち14リードの差(0.0015%) は、同じアルゴリズムの独立した2つの実装間では統計的なノイズと区別できません。fastpが破棄したリードをGeekNome_QCが保持しているものは1つもありません — リテンションは厳密な部分集合であり、偽陽性を導入していないことを確認しています。
スレッドスケーリング
スレッド数 実行時間 スピードアップ
1 約4秒 1.00×
8 1.89秒 約2.1×
16 1.86秒 約2.1×
スケーリングは約50%のシリアル分率(FASTQの読み込みと順序付き出力の書き込み)に制限されています。スレッドを8から16に倍増してもwall時間は改善しません。このシリアル分率はWebAssemblyバイナリではより小さくなります — 入出力はブラウザのメモリ上にあり、システムコールを経由しないためです。
使い方
https://www.geeknome.com/geeknomeqc にアクセスするだけです。
FASTQ / FASTQ.GZ をドラッグ&ドロップ
パラメータを調整(デフォルトでOK)
「Ejecutar QC」をクリック
クリーンなFASTQとHTMLレポートがダウンロードされる
ファイルは一切アップロードされません。 すべての処理はブラウザ内のWebAssemblyで完結します。サーバー側で動くコードは一行もありません。
対応していること
単一モード:1つのFASTQファイル
ペアエンドモード:R1とR2を順次処理
バッチモード:複数のFASTQを一括処理、結果はZIPでまとめてダウンロード
出力
クリーンなFASTQ:全フィルタを通過したリード
HTMLレポート:品質スコアの分布、GC含量、リード長、ポジション別の塩基組成、アダプター検出などのグラフ
PDFエクスポート:HTMLレポートをPDF形式で保存可能
多言語対応
インターフェースとレポートは以下の7言語に対応しています。
日本語 / 英語 / スペイン語 / ポルトガル語 / 中国語 / フランス語 / ドイツ語
Zero-Uploadの意味
このツールの最大の特徴は ファイルが一切サーバーに送信されない ことです。
医療機関や研究機関では、患者由来のゲノムデータを外部サーバーに送ることが法的・倫理的に難しいケースがあります
企業の研究部門では、競争上の理由から外部送信を避けたい場合があります
インターネット接続が不安定な環境でも、一度ページをロードすれば動作します
GeekNome_QCはこれらすべてのケースで、データを端末の外に出さずに品質管理を完了できます。
ライセンス
GeekNome_QCは GeekNome Research & Academic License (GNRAL) v2.5 の下で提供されています。
学術・非営利研究は無料
商用利用は別途ライセンスが必要
論文・学位論文での引用が必須
詳細は https://www.geeknome.com/license.txt をご覧ください。
まとめ
GeekNome_QCは、fastpと数値的に同等の精度を持ちながら、ブラウザだけで動き、ファイルをアップロードする必要がなく、5倍以上高速なFASTQ品質管理エンジンです。
環境構築なしで即使える
データは端末の外に出ない
10のフィルタをfastpと同じ順序で適用
924,061リードのうち14リード(0.0015%)の差
8スレッドで1.89秒(fastpは9.48秒)
リンク:
Webアプリ: https://www.geeknome.com/geeknomeqc
ライセンス: https://www.geeknome.com/license.txt
研究やパイプラインの一部として使ってみて、フィードバックをいただけると嬉しいです。
タグ: バイオインフォマティクス WebAssembly FASTQ ゲノム解析 QC
この記事が役に立ったら、いいねとストックをお願いします。質問やフィードバックはコメント欄でどうぞ。
Summary (English)
GeekNome_QC is a browser-based FASTQ quality-control engine written in
C11 and compiled to WebAssembly. It runs entirely client-side — no files
are uploaded — and processes a 1M-read Illumina UHR sample in 1.89 s
with 8 threads versus 9.48 s for fastp v0.23.4 (5.02× faster, 99.9985%
numerical parity). Try it at https://www.geeknome.com/geeknomeqc