エンジン
テラバイト規模の生物学データを照会するために
BioQは、57.4億件のメタゲノムタンパク質と1.49億件のUniProtレコードを、データベースに取り込まずにそのまま検索して回答します。それを支える技術を、実測した数値とともに紹介します。
多くのツールは登録されたものを調べます。BioQは条件を満たすものを探します。
ポータルやBLAST型のツールが答えるのは「Xを見せて」と「Xに似たものは?」です。発見のための問いはデータセットをまたぐ条件なので、エンジンがレイヤー同士を結合して答えます。
UniProt P04637を表示
自分の配列に似た配列
土壌から採取されたタンパク質
タンパク質Aを含み、タンパク質Bを含まないアセンブリ
既知のドメインを持たない、土壌の大型タンパク質ファミリー
このIDを収録するデータベースと、そもそも調べていないデータベースをすべて
自分でやると、どれだけかかるか
実際の質問6つを、両方の方法で計測しました。ダウンロード時間は公開アーカイブから当社が実測した転送速度に基づくもので、お使いの回線によって異なる場合があります。
棒グラフは1ミリ秒から10時間までの対数目盛です。
あなたと1.15 TBの間にある5つの層
あなたの作業環境
どこでも同じ答えゲートウェイ
誰が、どれだけ質問できるかエンジン
22レイヤー中20が稼働中独自に構築したインデックス
≈107 GB、元データと照合済み公開データソース
丸ごとコピーせず、その場で読む速さを生んだ6つのインデックス設計
ファイル自身のフッターがインデックス
1.11 TBのparquetは、46,303個すべての行グループについて最小IDと最大IDをすでに保持しています。827 MBのフッターが2 MBのインデックスになります。
多数の同時読み出しに向けたレイアウト
1.287億件の代表配列をシーク可能なストアに書き直し、1回の照会で転送する量を最大242 MBから46 KBにしました。
gzipの中をランダムアクセス
通常のgzipは先頭から展開しなければなりません。ブロックインデックス付きのBGZFに書き直せば、どの座標も1回のシークで読めます。
1つの質問に1ブロック
シークできなかった26 GBのgzipを、5,773個の独立したブロックに分けました。失われたレコードは0件、インデックスは404 KBです。
双方向を、ぎっしり詰めて
46.2億ペアにわたるPfamのタンパク質→ドメイン、ドメイン→タンパク質の両インデックスを、66 GBから18 GBに詰め直しました。
データと同時に書くインデックス
後付けの疎インデックスは1時間以上かかりましたが、ビルド中に書けば追加コストはかかりません。102,074個の小さなファイルを4つにまとめました。
記憶する相同性検索
事前に構築したk-merインデックスでMMseqs2を実行します。結果はすべて、配列・パラメータ・データベースバージョンのフィンガープリントをキーにキャッシュされるため、同じ検索は即座に返り、いつ計算された結果かも示します。
インターネット経由の初回検索
0.04 s同じ検索の2回目以降
陽性対照
| Query | E-value | Identity |
|---|---|---|
| HIV reverse transcriptase | 1.3×10⁻¹³ | 36.7% |
| Human hemoglobin α | 1.1×10⁻¹¹ | 99.0% |
| E. coli β-lactamase | 2.6×10⁻³³ | 50.0% |
インデックスを慎重に作る理由
k-merインデックスのサイズは、元のデータベースの20–46倍になります。Swiss-Prot(575,748配列)は稼働中で、より大規模な配列データベースはインデックス作成中です。
1つの質問、すべてのレイヤー、ありのままの答え
/whereisは9つのレイヤーにそれぞれ期限を設けて並列に問い合わせ、各レイヤーが実際に何をしたかをそのまま報告します。インターネット経由で0.12–0.48秒で応答します。
GET /api/v1/whereis?id=MGYP000000149140found主張には独立したエビデンスが必要
関連を主張するには、別々のサンプリングに由来するアセンブリが少なくとも3つ必要です。すべての回答に判定が付きます。
母集団なしに比率は出さない
同じ重なりでも、母集団次第で1.000にも212.5にもなります。エンジンは母集団を推測しません。
負荷がかかるほど速く
シーク可能なストアでは、同時実行数が増えるほど中央値レイテンシが改善し、失敗は0件でした。
1秒あたりのクエリ数
中央値レイテンシ
提供開始前に、エンジンは実際の質問5つに正しく答えなければなりません
- KRAS:最も依存性の高い系統は膵臓
- TP53–MDM2の相互作用スコアが700以上
- RefSeqからSARS-CoV-2のスパイク遺伝子の塩基を取得できる
- ヘモグロビンの検索でそのホモログが見つかる
- 陰性対照で不在を証明できる
見つけ、測定し、設計で排除した「静かな誤答」
ウィンドウを区切った検索が395,688件の配列を見落とし、「見つかりません」と答えていました。
現在はすべての行グループを確認します。回帰テストは4/4で合格。
TrEMBLの19シャードのうち2つしか読み込まれていない状態では、レコードの89.2%が存在しないように見えるところでした。
カバレッジを報告し、不在を前提にしません。
オフバイワンエラーにより、すべてのタンパク質のドメインが1行ずつずれていたのに、合計値はすべて一致していました。
ビルド側が自己チェックし、読み込み側がロード時に長さを検証します。
検証器が、両側とも空のときに「一致」と記録していました。
検証器は、何かを見つけてからでなければ比較しません。
実際には212.5倍の濃縮が、1.000と報告されていました。
母集団が明示されない限り、比率は出しません。
AlphaFoldの「残基数」は実は原子数で、7.8倍大きすぎました。
Cαレコードから再構築し、対照4/4に合格。
すべてのレイヤーが守る5つのルール
- すべての回答に出所を付ける。
- インデックスは元データと照合する。自分自身とは照合しない。
- 一部しか読み込めていなければ、理由を添えて503を返す。黙って「なし」とは答えない。
- ビルドは合計値をアサートする。
- 陽性対照なしに完了とはしない。
テストスイートは、意図的に壊した契約13件をすべて検出します。
次の段階:タンパク質言語モデルによる意味検索
Swiss-Protの全575,748タンパク質をESM-2 (650M)で埋め込み表現に変換し(GPU 1枚で47.6分)、遠縁ホモログでMMseqs2と比較しました。
MMseqs2でアラインメントできないペア
MMseqs2でアラインメントできるペア
両者は互いを補うため、まずMMseqs2で検索し、ESM-2で再ランキングする構成にします。まだ提供していません。