分析與打分Analysis and ranking

把軌跡變成一個能排序變體的分數,而且要能防守。

L6Project Lens★★★★★更新 Wed Aug 05 2026 08:00:00 GMT+0800 (台北標準時間)

01一句話只有一句

軌跡變成分數之前,先決定哪些數字有資格被打分。

02Why should I care?我為什麼要讀這頁

因為這一頁是你的 project 從「有趣的觀察」變成「可以排序的方法」的那一步,而它有一個只能做一次的動作:凍結打分公式。做錯了不能重來,因為你已經看過答案了。

先看你手上有什麼。同一批 4 條 replica、同一個 5F9R 系統,各個量的跨 replica CV 是:

  • 🟢 BSA 2.1%、總 protein–DNA 接觸 4.1%、target-DNA 接觸 9.4%、鹽橋 9.5%
  • 🟡 protein RMSD 12.2%、non-target 接觸 17.7%
  • 🔴 interface iRMSD 23.9%、DNA RMSF 59.1%、groove 距離 48%、逐位點距離 38 到 46%、groove 接觸計數 145.5%

這張表已經替你做完一半的決定了。一個 CV 145.5% 的量,意思是它的標準差比它的平均值還大——你拿它排序變體,排出來的順序跟擲骰子的差別,只在於擲骰子比較誠實。

先把定義釘死,否則後面每一條規則都會被誤用。這裡的 CV 是四條 replica 各給一個值之後,那四個值的標準差除以平均值。三件事要一起記住:

  1. 它量的是單條軌跡的雜訊,不是平均值的誤差。 平均值的相對誤差是 CV/√n,n = 4 時剛好是 CV 的一半。
  2. 這些 CV 自己也有誤差棒。 從 4 個點估標準差,相對誤差就有 1/√(2(n−1)) ≈ 40%。所以這張表是三檔紅綠燈,不是小數點後一位的排名——12.2% 與 17.7% 在 n = 4 之下分不太開,別拿它們的先後順序講故事。
  3. 10% 這條紅線是本專案的約定,不是從任何原理推出來的。 真正的判準是「平均值的誤差要小於你想偵測的變體效應」,而那個效應量到今天還沒量過。10% 是保守的起手;等第一批變體的效應量出來,這條線應該回頭重訂,而且要在規格檔裡留下改過的紀錄。

用你熟的話講:這相當於你不會拿一個還沒對 ENCUT 收斂的能量差去比較兩個表面。差別在於,DFT 的收斂測試會給你一條明顯變平的曲線,你一眼就知道該停在哪;MD 的「收斂」沒有這種曲線,它只有跨 replica 的散布,而你必須先花錢跑出那個散布才知道自己能不能用這個量。CV 分層就是 MD 版的收斂測試,而且它是事後的——這就是為什麼從 PDB 到軌跡裡的 replica 數決定會在這裡引爆。

03What這是什麼

三層。層與層之間的界線由 CV 決定,不由「這個 metric 聽起來多高級」決定。

Three tiers of trajectory analysis: a quality-control gate that outputs pass or fail, a scoring tier restricted to aggregate metrics with low cross-replica variation, and a mechanism tier that may be described but never ranked.
示意圖(向量繪製) 分析要分三層,差別在「這一層被允許輸出什麼」:QC 層只輸出通過或不通過(不是低分),打分層只收跨 replica CV 低於 10% 的聚合量,機制敘事層可以講故事但不可以給名次。中間那條紅色虛線是由資料畫出來的,不是由 metric 高不高級畫出來的。

第一層 · QC(不打分)

用途是回答一個二元問題:這條軌跡能不能進入下一層。 內容包括溫度、密度、盒體積、總能量的平穩性,protein RMSD 的平台,RMSF 的形狀是否合理(高峰落在末端與 loop、核心是平的),核酸鹼基配對與 R-loop 是否維持,以及 Jiang 等人在 5F9R 報的 30° DNA 彎折有沒有在軌跡裡崩掉——這是少數從起始晶體結構直接帶來、可以逐幀對照的幾何量,很適合當免費的健康檢查。

QC 層的輸出是通過/不通過,不是分數。一條軌跡被判定為「還沒平衡」,它就整條不進入打分,而不是給它一個比較低的分數。 這一點常被搞混,混了之後你的分數裡就混進了「這條軌跡品質比較差」這個與突變無關的維度。

第二層 · 打分(只用綠燈)

目前只有四個量夠格:BSA(2.1%)、總 protein–DNA 接觸(4.1%)、target-DNA 接觸(9.4%)、鹽橋(9.5%)。它們的共通點很明確——全部是聚合量。逐位點、逐殘基、逐 groove 的版本全部落在紅燈區。

這不是巧合。聚合等於在空間上做平均,而空間平均與時間平均、系綜平均一樣會壓低變異。你的資料把這件事量化得很乾淨:同一批 protein–DNA 接觸,聚合成一個總數 CV 是 4.1%,拆成 groove 的逐位點計數就變成 145.5%。「拆得更細 = 資訊更多」在有雜訊的系統裡是錯的,拆細只是把訊噪比拆掉。

第三層 · 機制敘事(可以講,不進分數)

HNH 距離PCADCCM、逐殘基接觸圖。這一層是你 paper 裡最好看的圖,也是向別人解釋機制時唯一用得上的語言,但它的 CV 進不了打分層。

這兩件事不衝突,前提是你在文字裡把它們分開。 「HNH 在變體 A 的軌跡裡停留在 undocked 構形的時間比較長」是一個定性的機制敘述,可以寫;「變體 A 的 HNH 距離分數是 0.73,排第二名」是一個定量宣稱,不可以寫,因為那個數字的跨 replica 散布還沒有小到能支撐排序。

Horizontal bar chart of cross-replica coefficient of variation for 13 interface metrics from the 5F9R Cas9 ternary complex, four independent replicas of about 87 ns.
真實數據 13 個介面 metric 在四條獨立軌跡之間的變異係數。左側綠色四項(BSA 2.1%、總接觸 4.1%、target 接觸 9.4%、鹽橋 9.5%)是唯一能拿來打分的;右側紅色全部是雜訊。積分型的聚合量穩、逐點型的離散量不穩。

04Why為什麼重要

因為 reviewer 不會問「你的分數是多少」,會問「你怎麼知道換一組 replica 這個排序不會翻」。

分層的本質是把這個問題提前到打分之前回答。你不是在挑「最有生物意義的 metric」,你是在挑「訊噪比足以支撐排序的 metric」——這兩件事在一個 500k 原子、4 條 replica 的系統裡經常不是同一批。最有機制意義的量(HNH 距離、逐殘基接觸)恰好是最吵的,這很不公平,但它就是你的資料說的話。

第二個理由是打分公式的自由度遠多於你的資料點。假設你有 4 個綠燈 metric,那麼光是「每個要不要納入」就有 2⁴ 種、「方向符號」再乘 2⁴、權重是連續的、還有「用哪個底物條件」「取不取 log」「用平均還是中位數」。對照之下你能拿到的校準資料點大概是 3 到 5 個已知功能結果的變體。在這個比例下,任何事後調整都能湊出你想要的排序。 這不是道德問題,是自由度計數問題——就算你完全誠實,事後選擇也會系統性地高估預測力。

第三個理由是排序軸的方向。若一條篩選漏斗全程以平衡結合 ΔG 排序,就會遇到一個結構性問題:高保真變體(SpCas9-HF1、eSpCas9(1.1)、HypaCas9)對 on/off-target 的結合親和力與 WT 差不多,差別在 HNH 構形檢查點的動力學。Chen 等人量到刪掉整個 REC3 domain(ΔREC3)讓 cleavage rate 掉了約 1000 倍,而對 on-target 底物的親和力仍接近 WT——那是 domain 刪除、不是點突變,所以 ΔREC3 不會出現在你的候選清單裡,但它把「結合強度與切割能力可以完全脫鉤」證得最乾淨。這代表打分公式的形狀不能是「單一條件下的親和力代理量」,不管你用多精確的方法去算那個代理量。

這一頁真正要你記住的事

分數的可信度來自分層規則與凍結時機,不來自 metric 本身多聰明。一個用等權重、只用四個聚合量、事前凍結的公式,比一個用十個高級描述符、事後調權重的公式強得多——強在它可以被防守。

05How怎麼做

打分公式:一個可以直接用的版本

Five-stage chain turning trajectories into a variant score: per-replica time average, subtraction of the wild-type reference with a two-substrate double difference, normalisation by the wild-type noise, a weighted sum with pre-frozen weights, and an error bar taken across replicas.
示意圖(向量繪製) 打分公式的五個階段,右欄是每一階段最常見的致命錯誤。兩個關鍵:replica 要留到最後才平均(那個散布是你唯一的誤差來源),以及第 2 階段必須跨 on-target 與 mismatched 兩個底物取雙差,否則專一性變體在設計上就會量成 null。

對每個變體 v、每條 replica r、每個綠燈 metric m

Step 1 · 時間平均。 丟掉 equilibration,取 production 段的平均,得 xv,r,m。這裡每條 replica 給一個數,不要在這一步就把 replica 平均掉——那個散布是你後面唯一的誤差來源。

Step 2 · 對 WT 取差。

Δv,r,m = xv,r,m − ⟨xWT,m

WT 必須用完全相同的設定跑。這就是吸附能的參考態問題ΔEads 的絕對值會隨你選 gas-phase 分子還是化學勢當參考而變,但只要所有表面用同一個參考態,相對排序不受影響;一旦每個表面各用各的參考態,整張圖就沒有意義。WT 就是這裡的參考態,它一旦選定,這一批比較裡不能換。

Step 3 · 用雜訊尺度無因次化。

zv,r,m = Δv,r,m / σWT,m

分母用的是 WT 自己的跨 replica 標準差,不是變體之間的散布。這個選擇很關鍵,理由有二:第一,z 的物理意義變成「這個變化等於幾個雜訊單位」,你一眼就能看出 |z| < 1 的變體根本不該進排序;第二,如果用變體之間的散布當分母,分母會隨著你納入哪些變體而變,那是循環的。

Step 4 · 加權求和。

Sv = Σm wm · sm · ⟨zv,r,mr

sm = ±1 是方向符號,wm 是權重。兩者都必須在看到變體結果之前決定。

Step 5 · 誤差棒。 對 replica 做 bootstrap,或直接傳遞 SE = σ/√n沒有誤差棒的排序表等於沒有排序表,而且要在圖上畫出來,不是塞在補充材料。

方向符號必須來自機制,而且必須是雙差

這是整套設計最容易被忽略的一步。問題長這樣:on-target 底物上「介面總接觸下降」算好還是壞?

答案是單一條件下這個問題沒有答案。你要的專一性變體,定義上是「保住 on-target、削弱 mismatched」。所以打分量必須是雙差(double difference):

Sspecv = Δv(mismatched) − Δv(on-target)

這一點有直接的實證:eSpCas9(1.1) 在 on-target 底物上是 null——而且它本來就該 null,這一類變體的設計目標本來就是保住 on-target 行為。在單一 on-target 條件上打分,你會把所有真正的專一性變體都判成「跟 WT 沒差」。這條規則的代價是每個變體要跑兩組條件,成本直接乘二,但這是不能省的乘二。

這對你也不陌生:你不會用絕對吸附能排序催化劑,你會用相對於某個 reference 的 ΔΔG,或用對 scaling relation 的偏離量。同樣的邏輯,同樣的理由——絕對值裡的系統誤差在取差時會消掉。

權重怎麼定才不是事後湊的

三個可辯護的選項,按防守難度由易到難:

  1. 等權重(wm = 1/M)。 最保守,也最好防守:「我們沒有任何先驗資訊可以決定權重,所以不假裝有。」這應該是你的預設。
  2. 反變異加權(wm ∝ 1/CVm²)。 在「事前可決定」這一點上它是合法的,因為 CV 只用了 WT 的資料,完全沒碰到變體資訊。但先注意一個很容易漏掉的重複計算:Step 3 已經把每個 metric 除以 σWT,m,那本身就是一次反變異縮放;再乘上 1/CV² 等於對同一件事罰第二次,高 CV 的量會被壓得比它該被壓的還低。要用就必須在規格檔裡明寫「這是刻意的二次降權,理由是我們認為高 CV 的量連方向都不穩」。沒有這句話,就回到第 1 項。
  3. 由校準集擬合權重。 以 3 到 5 個校準變體來說,這是不可以做的——待定參數比資料點還多。誠實的說法是:這個規模的校準集只夠校準方向與尺度(我的分數是不是至少把已知的高保真變體排在 WT 之上),不夠擬合權重。要擬合權重,你需要的資料點數量是另一個量級。

有效自由度:四個 metric 不等於四個獨立軸

BSA 與總 protein–DNA 接觸幾乎在量同一件事——介面埋得多深。把它們當兩個獨立軸加總,等於偷偷把這件事的權重變成兩倍。

做法: 算四個綠燈 metric 在 WT replica 之間(以及跨變體之後)的相關矩陣,報出來。如果 BSA 與總接觸的相關係數是 0.9 以上,就明說「我們的四個 metric 對應大約兩個有效自由度」,並考慮把高度相關的合併成一個複合軸。這一步不用算力,只需要誠實。

凍結:具體怎麼做

  1. 寫一個 scoring_spec.yaml:綠燈 metric 清單、CV 閾值、方向符號、權重、底物條件配對、誤差估計方法、以及「什麼結果算成功」的判準。
  2. git commit,把 commit hash 抄進 lab notebook;要更強的證據就用有第三方時間戳的服務。
  3. 變體的分析腳本讀這個檔,不接受命令列覆寫。這一條是工程紀律,也是你日後唯一的證據。
  4. 允許事後修改,但不允許隱藏。 如果後來發現公式有缺陷,改,然後在 paper 裡同時報原始版本與修改版本的結果,並說明修改當下你已經看過什麼。同時報兩個版本的人不會被質疑;只報一個版本的人會。

06When什麼時候用

  • 當你手上有 WT 的多條 replica、要決定哪些量能用時。 這是分層的入口,也是唯一該做這件事的時機。
  • 在跑任何變體之前。 公式凍結必須發生在這裡,晚一步就沒有補救。
  • 當要決定各類指標該落在哪一層時。 三層架構是一個很好的溝通工具:它讓「ΔG 類指標適合放在粗篩層而不是排序層」變成可以指著圖談的結構問題,而不是立場之爭。
  • 當要回答「這個差異顯著嗎」時。 z 值就是答案:|z| < 1 的差異連提都不該提。
  • 當算力不足以跑更多變體、必須決定先跑哪幾個時。 分層告訴你哪些量能區分,也就告訴你哪些變體值得花錢。

07When NOT什麼時候別用

  1. 不要把 CV > 10% 的量放進打分公式,不管它多有機制意義。 為什麼會壞: CV 給的是單條軌跡的雜訊尺度,除以 √n 之後才是你排序時實際承受的雜訊;當它與你想偵測的變體效應同量級,排序就是在對雜訊排序。你的 groove 接觸計數 CV 是 145.5%,標準差比平均值還大。怎麼看出它壞了: 做 leave-one-replica-out——每次拿掉一條 replica 重算排序,比較 Spearman。如果拿掉任一條 replica 排序就大幅重排,這個 metric 沒有資格打分。這個檢查不用新算力,而且幾乎沒人做。
  2. 不要在單一 on-target 條件上打專一性分數。 為什麼會壞: 專一性變體的設計目標就是在 on-target 上不改變行為,所以你量到的必然接近 null。怎麼看出它壞了: 所有變體的 Δ 都落在誤差棒內,而且沒有任何方向性——這正是 eSpCas9(1.1) 在 on-target 上的結果。正解: 雙差設計,每個變體跑 on-target 與 mismatched 兩組。
  3. 不要在看過變體結果之後調整權重、增減 metric、或改變方向符號。 為什麼會壞: 自由度遠多於資料點,事後選擇必然高估預測力,而且你無法量化高估了多少。怎麼看出它壞了: 這個沒辦法從結果看出來——這正是它危險的原因,也是唯一防線只能是事前凍結的原因。
  4. 不要用 MM-PBSA 或 FEP 的絕對值當唯一排序軸。 為什麼會壞: ΔG 是態函數,它決定平衡常數、不含決定速率的能障;HNH docking 的檢查點是速率問題,再精確的結合自由能計算也量不到它。Chen 等人的 ΔREC3 是最好的反例:切割速率差約 1000 倍,on-target 親和力接近 WT。怎麼看出它壞了: 你的 ΔG 排序與已知的高保真變體排名沒有相關性,而且你會發現自己在解釋「為什麼機制上該有差的變體算出來沒差」。正解: ΔG 當粗篩留在上游,專一性排序另設軸。
  5. 不要把逐殘基的「一致性看起來不錯」當成可靠性證據,除非你檢查過 n 的影響。 為什麼會壞: 小 n 會系統性高估一致性。你的數據:n = 2 時逐殘基 top-8 看起來 6/8 共享,加到 n = 4 掉到 3/8。怎麼看出它壞了: 把一致性指標當作 n 的函數畫出來,如果它隨 n 單調下降而還沒變平,你看到的是取樣不足不是重現性。
  6. 不要在 metric 高度相關時假裝有多個獨立軸。 為什麼會壞: 加總會偷偷放大共同成分的權重,而你以為自己在做多證據整合。怎麼看出它壞了: 算相關矩陣;若前一個主成分就解釋了絕大部分變異,你的「四個軸」其實是一個軸加一點雜訊。
  7. 不要用 QC 層的量當分數。 為什麼會壞: RMSD 與 RMSF 的用途是判斷軌跡品質,把它們當分數等於把「這條軌跡跑得好不好」混進「這個突變效應多大」。怎麼看出它壞了: 你的分數與軌跡長度、與 equilibration 丟棄量高度相關。

08Project Lens跟我的 project 多相關

★★★★★Priority 5/5

為什麼不是更低: 因為 project 的交付物就是「一個能排序變體的分數」,而這一頁定義了那個分數。前面所有的算力最終都匯流到這裡,後面的驗證也只能驗證這裡定義出來的東西。

  • 分層規則已經有實證基礎,不是理論偏好。 你自己 4 條 replica 的 CV 表(綠燈 2.1% 到 9.5%、紅燈到 145.5%)直接把「打分只能用聚合量」寫成了硬規則。文獻上少見有人把整張表報出來,所以 metric 選擇多半還是品味問題;你有這張表,所以你的選擇是資料驅動的。可防守的講法是「把 metric 的跨 replica 可重現性當成一級結果報告,並提供一張可重用的分層表」;任何比這更強的原創性宣稱,都要先自己查一次文獻確認沒有人做過。
  • 雙差設計有直接的實證理由。 eSpCas9(1.1) 在 on-target 上的 null 結果,換成一條「專一性打分必須是兩個底物條件的差」的設計規則。這條規則會讓成本乘二,但它把整個打分框架從「量不到」變成「量得到」。
  • 凍結時機是零成本、不可逆、且唯一防線。 沒有其他任何投入能像它一樣,用半天的工夫換掉一整類審稿攻擊。

風險要誠實講: 這一頁描述的是應然,不是已然。目前打分公式尚未凍結、校準集尚未取得、metric 之間的相關矩陣也還沒算。也就是說這套框架的預測力目前是零證據——不是負面證據,是還沒有證據。而且有一個結構性限制沒解:綠燈的四個量全部是平衡態的介面聚合量,它們與「動力學檢查點」的關聯尚未建立。這是這條 workflow 目前最大的科學缺口,也是驗證與實驗合作存在的理由。

09Reviewer Thinkingreviewer 會問什麼

你的權重是在看到結果之前還是之後決定的?點開看參考答案

唯一能防守的回答是「之前,這是 commit hash」。如果沒有事前凍結,第二好的回答是完整揭露:報告等權重版本與你實際使用版本的結果,讓讀者自己判斷差多少。最糟的回答是「我們選了物理上最合理的權重」——那句話在 reviewer 耳裡等同於「我們調過了」。

你的四個 metric 之間相關性多高?有效自由度是多少?點開看參考答案

準備好相關矩陣與主成分分析。BSA 與總 protein–DNA 接觸幾乎必然高度相關,主動說出來並說明你怎麼處理(合併、或降權、或明示「四個 metric 約等於兩個有效軸」)。這一問答不出來,reviewer 會合理懷疑你的多 metric 整合只是同一個量算了四遍。

為什麼不直接用 MM-PBSA 或 FEP?那才是標準做法。點開看參考答案

答案要分兩段。第一段承認:ΔG 類方法在粗篩層有價值,你並不排斥它們。第二段給機制理由:結合 ΔG 是態函數、不含決定速率的能障,而高保真變體的機制是構形檢查點的動力學——Chen 等人的 ΔREC3 量到切割速率差約 1000 倍而 on-target 親和力接近 WT。把這一問當成展示你懂得比 reviewer 深的機會,不要當成防守。

你怎麼確定分數的差異超過雜訊?點開看參考答案

兩個具體檢查:第一,z 值本身就是以 WT 雜訊為單位的,|z| < 1 直接排除;第二,leave-one-replica-out 重算排序,報 Spearman 的分布。這兩個都不需要新算力,而且能把「顯著嗎」從形容詞變成數字。

你的方向符號依據是什麼?如果反過來,排序會不會剛好變對?點開看參考答案

這一問是在測你有沒有事後翻轉符號。要準備的是機制論證:為什麼在 mismatched 底物上介面接觸下降代表專一性提升。以及一個誠實的補充——雙差設計讓符號問題大幅減輕,因為你比較的是兩個條件之間的差異,而不是單一條件的絕對方向。

10Common Mistakes最常犯的錯

  • 把所有 replica 先平均掉再算 metric。 後果:散布消失,誤差棒無從估計,整套框架垮掉。正解:每條 replica 一個值,最後才聚合。
  • 用變體之間的散布做無因次化。 後果:分母隨納入哪些變體而變,分數不可比也不可重現。正解:分母用 WT 的跨 replica 標準差。
  • 在單一 on-target 條件上比較高保真變體。 後果:全部 null,浪費整輪算力。正解:雙差,兩個底物條件。
  • 把 HNH 距離做成一個定量分數放進排序。 後果:那一層的 CV 進不了打分(逐位點距離 38 到 46%),排序不可重現。正解:HNH 距離放機制敘事層,用定性語言講,不給名次。
  • 看到排序不符合預期就加一個 metric。 後果:不可逆地污染整套分析,且無法量化污染程度。正解:事前凍結;若真的要改,同時報改前改後。
  • 四個相關的 metric 直接等權加總。 後果:共同成分被放大,等於把一個量算了兩次。正解:報相關矩陣,必要時合併。
  • 報排序表卻不畫誤差棒。 後果:第一位與第五位可能完全重疊,而讀者無從得知。正解:每個變體的分數都帶 bootstrap 或 σ/√n,畫在主圖上。
  • QC 沒過的軌跡給低分而不是剔除。 後果:軌跡品質這個與突變無關的維度混進分數。正解:QC 是二元閘門,不是連續分數。

11Further Reading讀哪幾篇

2017Enhanced proofreading governs CRISPR–Cas9 targeting accuracy
Chen J.S. et al. · Nature doi:10.1038/nature24268
這篇定義了你的分數必須預測什麼。它用 smFRET 把「結合之後、切割之前」的構形檢查點抓出來,並示範了一個對 on-target 親和力幾乎沒影響、卻讓 cleavage rate 差約三個量級的擾動(ΔREC3),直接說明為什麼打分軸不能是單一條件下的親和力代理量。
2022Structural basis for mismatch surveillance by CRISPR–Cas9
Bravo J.P.K. et al. · Nature doi:10.1038/s41586-022-04470-1
讀它是為了設計你的 mismatched 底物條件。它告訴你錯配在不同位置會造成什麼結構後果,這決定了你的雙差設計該選哪些錯配位置才看得到訊號。
2021Enhanced specificity mutations perturb allosteric signaling in CRISPR-Cas9
Nierzwicki Ł., East K.W., Morzan U.N., Arantes P.R., Batista V.S., Lisi G.P., Palermo G. · eLife doi:10.7554/eLife.73601
這篇把高專一性突變的效應描述成 allosteric signaling 的擾動,正好落在你的三層架構裡「機制敘事層」與「打分層」的接縫上。讀它是為了知道那條接縫目前在文獻上被推進到哪裡。

12Summary三句話

分析要分成三層:QC 層做二元閘門不打分、打分層只收跨 replica CV 低於 10% 的聚合量(BSA、總接觸、target-DNA 接觸、鹽橋)、機制敘事層可以講故事但不進分數。打分公式的形狀是「以 WT 為參考態、用 WT 雜訊尺度無因次化、跨兩個底物條件取雙差」,權重預設等權,任何非等權的選擇都必須寫在事前凍結的規格檔裡。這套框架的可信度不來自 metric 多聰明,而來自分層由資料決定、公式在看到答案之前就鎖死。

地圖上的鄰居

這頁用到的名詞