引擎

為 TB 級生物資料查詢而打造

BioQ 不必把 57.4 億個總體基因體蛋白質與 1.49 億筆 UniProt 紀錄匯入資料庫,就能直接回答。以下介紹背後的技術,並附上我們實測的數字。

5.74B可依 ID 直接取得的總體基因體蛋白質
107 GB置於 1.15 TB 原始資料前端的索引
1.5M×「無 Pfam 結構域」判定加速:35.6 分鐘 → 1.4 ms
230 q/s64 位使用者同時連線時,中位數 165 ms

多數工具查的是已收錄的條目;BioQ 找的是符合條件的對象。

入口網站和 BLAST 類工具回答的是「給我看 X」和「哪些和 X 相似」。而探索型問題是跨資料集的條件,因此引擎會替您把各資料層串接起來。

查找

顯示 UniProt P04637

與我的序列相似的序列

從土壤採樣的蛋白質

條件

含有蛋白質 A 但不含蛋白質 B 的組裝

沒有已知結構域的大型土壤蛋白質家族

所有收錄這個 ID 的資料庫,以及所有根本沒查過的資料庫

自己動手要花多少功夫

我們用兩種做法為 6 個真實問題計時。下載時間依據我們從公開資料庫實測的傳輸速率,實際速度會因您的網路而異。

從 57.4 億個總體基因體蛋白質中,依 ID 取出一個
自己來≈3 h

下載 1.11 TB,再掃描 46,303 個未排序的列群組。

BioQ0.17 s

一次請求。叢集代表序列 0.17 秒;其他成員首次最長 14.5 秒。

64K×
這個蛋白質有哪些 Pfam 結構域?還是一個都沒有?
自己來≈7.5 h

下載 117.6 GB,再建置 66 GB 的正向索引(74 分鐘)。

BioQ40 ms

一次請求,透過網際網路約 40 ms。

678K×
含蛋白質 A、但缺少蛋白質 B 的組裝
自己來≈2.4 h

下載 26.1 GB 無法隨機存取的 gzip,每個問題都要解壓縮 112 GB。

BioQ≤1.5 s

一次請求只讀取一個 5 MB 區塊。

6K×
一筆 UniProt TrEMBL 紀錄的序列
自己來≈2.3 h

下載 40.6 GB,再把該筆紀錄之前的內容全部解壓縮。

BioQ76 s

該深度首次需 76 秒;之後每次重複都直接由快取回傳。

110×
544,891 條 RefSeq 序列中某一座標的鹼基
自己來≈1 h

下載 11.9 GB,再建置 BGZF 與 FASTA 索引(19 分鐘)。

BioQ0.07 s

一次請求;引擎內部耗時 1.7 ms。

51K×
哪些資料庫收錄了這個識別碼?哪些根本沒查過?
自己來≈3.3 h

下載 ≈1.2 TB 的封存檔,逐一檢查。

BioQ0.12–0.48 s

一次請求同時查詢 9 個資料層。

25K×

長條圖採用對數刻度,範圍從 1 毫秒到 10 小時。

您與 1.15 TB 之間的五個層級

您的工作環境

到哪裡都是相同的答案
Web appREST APIResearch agentMCP · Claude · ChatGPT

閘道

誰能查詢、能查多少
Google · email sign-inAPI keysDaily quotasParameter validationResponse scrubbing

引擎

22 個資料層中 20 個已上線
/whereis/search/lookup/domains/cooccur/depmap/affinity/interaction/dna+12

自建索引

≈107 GB,已與原始資料比對驗證
parquet footer indexseekable C2 storeBGZF + .gzi/.fai32 MB co-occurrence blocksTrEMBL offset indexPfam forward + invertedMMseqs2 k-mer index

公開資料來源

就地讀取,從不整份複製
UniProtMGnifyPfamPDBAlphaFold DBChEMBLDrugCentralGtoPdbClinVarSTRINGBioGRIDDepMapRefSeqGRCh38GRCm39

讓它變快的六個索引設計

檔案自帶的 footer 就是索引

1.11 TB 的 parquet 早已存有全部 46,303 個列群組的最小與最大 ID。這段 827 MB 的 footer 變成了 2 MB 的索引。

優化前1.11 TB
優化後25.5 MB

為大量並行讀取設計的資料佈局

將 1.287 億條代表序列改寫成可隨機存取的儲存格式:每次查找只傳輸 46 KB,而不是最多 242 MB。

優化前42.9 s
優化後168 ms

在 gzip 內隨機存取

一般 gzip 必須從頭解壓縮。改寫成帶區塊索引的 BGZF 後,任一座標只需一次定位。

優化前1.40 s
優化後1.7 ms

一個問題,一個區塊

無法隨機存取的 26 GB gzip 被切成 5,773 個獨立區塊,零筆紀錄遺失,索引為 404 KB。

優化前715 ms
優化後13.2 ms

雙向索引,緊密打包

涵蓋 46.2 億對的 Pfam 蛋白質→結構域、結構域→蛋白質索引,從 66 GB 重新打包成 18 GB。

優化前35.6 min
優化後1.4 ms

索引與資料同時寫入

事後補建的稀疏索引花了一個多小時;在建置時同步寫入則不需額外成本。102,074 個小檔案打包成 4 個。

優化前6,829 ms
優化後374 ms

有記憶的同源性檢索

MMseqs2 搭配預先建置的 k-mer 索引。每個結果都以序列、參數與資料庫版本的指紋為鍵存入快取,因此重複檢索會立即回傳,並標明結果的計算時間。

8.8–10 s

透過網際網路的首次檢索

0.04 s

再次執行相同檢索

陽性對照

QueryE-valueIdentity
HIV reverse transcriptase1.3×10⁻¹³36.7%
Human hemoglobin α1.1×10⁻¹¹99.0%
E. coli β-lactamase2.6×10⁻³³50.0%

為什麼我們審慎建立索引

k-mer 索引的大小是其資料庫的 20–46 倍。Swiss-Prot(575,748 條序列)已上線,更大的序列庫正在建立索引。

DB1.59 GB
Index73 GB

一個問題,所有資料層,誠實回答

/whereis 平行查詢 9 個資料層,每層各有時限,並如實回報每一層實際做了什麼。透過網際網路的回應時間為 0.12–0.48 秒。

GET /api/v1/whereis?id=MGYP000000149140found
MGnify C2已找到1.05 ms
MGnify proteins已找到2,017 ms
MGnify assemblies已找到103 ms
Pfam domains已檢索,不存在0.13 ms
UniProt TrEMBL不適用
Pfam domain index不適用
Structures不適用
Binding不適用
ClinVar不適用

結論需要獨立證據

一項關聯至少需要 3 個來自不同採樣批次的組裝。每個答案都附上判定。

testable · ≥3weak · <3no claim · 1 run

沒有背景集,就沒有比值

同樣的重疊,背景集不同,結果可能是 1.000,也可能是 212.5。引擎拒絕猜測背景集。

猜測1.000
明確指定212.5

負載越高,反而越快

在可隨機存取的儲存上,並行數越高,中位延遲反而越低,且零失敗。

每秒查詢數

1×5.4 q/s
32×138.9 q/s
64×230.2 q/s

中位延遲

1×179 ms
32×168 ms
64×165 ms

上線之前,引擎必須答對五個真實問題

  1. KRAS:依賴性最高的譜系是胰臟
  2. TP53–MDM2 交互作用分數至少 700
  3. 從 RefSeq 取回 SARS-CoV-2 棘蛋白基因的鹼基
  4. 血紅素檢索能找到其同源蛋白
  5. 陰性對照能證明「不存在」

我們發現、量化並從設計上消除的「靜默錯誤答案」

395,688

分段視窗檢索漏掉了 395,688 條序列,卻回答「查無資料」。

現在會檢查每一個列群組;回歸測試 4/4 通過。

89.2%

19 個 TrEMBL 分片只載入 2 個時,89.2% 的紀錄原本會看似「不存在」。

如實回報涵蓋範圍,絕不假定「不存在」。

+1

一個差一錯誤讓每個蛋白質的結構域都錯位了一列,所有總數卻都對得上。

建置程式自我檢查;讀取程式在載入時驗證長度。

∅ = ∅

驗證程式在兩邊都是空的時候記錄為「一致」。

驗證程式必須先找到內容,才能進行比較。

212.5×

實際 212.5 倍的富集被回報成 1.000。

未指定背景集時,不提供比值。

7.8×

AlphaFold 的「殘基數」其實是原子數,高了 7.8 倍。

改用 Cα 紀錄重建;4/4 對照通過。

每個資料層都遵守的五條規則

  1. 每個答案都附出處。
  2. 索引只與原始資料比對,絕不與自身比對。
  3. 只載入部分時回傳 503 並說明原因,絕不默默回答「無」。
  4. 建置必須斷言總數。
  5. 沒有陽性對照,就不算完成。

測試套件可抓出全部 13 個刻意破壞的契約。

試行中

下一步:以蛋白質語言模型進行語意檢索

我們用一張 GPU,在 47.6 分鐘內以 ESM-2 (650M) 為全部 575,748 個 Swiss-Prot 蛋白質產生嵌入向量,並在遠緣同源蛋白上與 MMseqs2 比較。

MMseqs2 無法比對的序列對

MMseqs240.7%
ESM-246.9%

MMseqs2 能比對的序列對

MMseqs286.8%
ESM-278.2%

兩者互補,因此規劃先用 MMseqs2 檢索,再以 ESM-2 重新排序。尚未上線。

看看它如何回答您的問題

免費帳戶即可使用完整引擎:所有資料層、AI 代理與 API。

免費開始API