Workflow 全圖The whole workflow at a glance
今天要開始做 Cas9 MD,從哪一步下手、每一步的產出是什麼。
01一句話只有一句
從一顆 PDB 到一張能排序變體的分數表,中間有七步。
02Why should I care?我為什麼要讀這頁
因為你手上已經有零件了,缺的是組裝順序,而順序錯了是用 GPU-hour 付學費。
你的專案已經替這句話付過一次錢。第一輪完整三元複合體用 Chai-1 預測結構當起點,整批 replica 跑完之後才發現逐殘基接觸的 top-8 在 replica 之間 0/8 共享、ρ ≈ −0.03,等於擲骰子。換成 5F9R 晶體起點重跑,同一套分析變成 3/8 共享(450、695、765)、pairwise Jaccard 0.48、Spearman +0.77。決定這個結果的是第 1 步的一個選擇,但你是在第 4 步才知道。那些 GPU 小時不算白花,它們買到了「元兇是起始結構不是 metric」這個結論,但同樣的學費不必付第二次。
這條流程跟你熟的 DFT 流程是同構的:
差別只有一個,而且很致命。DFT 那條線上最會擋住你的是系統誤差,而它可以用 ENCUT 與 k-mesh 一個維度一個維度掃出來,掃到平坦就安全。MD 這條線上最會擋住你的是統計誤差,沒有任何單一參數可以掃,只能靠獨立 replica 的數量去壓。你在 DFT 世界養成的「收斂測試做完就安心」的直覺,在這裡會直接害你——它會讓你以為跑久一點就會穩,而事實是同樣長度、只換亂數種子,某些量可以差到一倍以上。
MD 當然也有系統誤差,就是力場本身,而且它有兩個惡劣的性質:跑再多 replica 都不會縮小,也沒有 ENCUT 那種可以掃到收斂的旋鈕。所以這條線上你要分開處理兩件事——統計誤差用 replica 壓,系統誤差只能靠「所有比較都在同一套設定內」讓它盡量在取差時消掉,剩下的寫進 limitations。 把兩者混為一談,是這一頁後面所有規則的反面教材。
03What這是什麼
七個步驟。每一步的輸入、輸出、成本量級如下。
| # | 步驟 | 輸入 | 輸出 | 成本量級 |
|---|---|---|---|---|
| 1 | 系統建立 | PDB/預測結構、序列、底物設計 | 可跑的 topology + 座標 + 溶劑盒 | GPU ≈ 0;人力 0.5 到 3 天 |
| 2 | Simulation | 上一步的系統 | n 條獨立軌跡(每條數十到上百 ns) | 全流程主要開銷,數十到數百 GPU-hour;wall time 數天 |
| 3 | Analysis | 軌跡 | 每條 replica 一組 metric 值 | CPU 分鐘到小時等級 |
| 4 | Benchmark | 步驟 3 的逐 replica 值 | 每個 metric 的跨 replica CV 與可用層級 | 幾乎為零,只是統計 |
| 5 | Validation 設計 | 步驟 4 的可用 metric 清單 | 凍結的打分公式 + 驗證端點 + 校準集 | 零算力,但要跟實驗端談 |
| 6 | Ranking | 變體軌跡 + 凍結公式 | 排序表 + 每個變體的誤差棒 | 若只用聚合量近乎零;加 FEP 則 ≈ λ 視窗數 × 一條軌跡 × 變體數 |
| 7 | Experimental Collaboration | 排序表(未看過答案) | 預測力的量化證據 | wall time 以週到月計 |
因為驗證端點決定了打分公式該長什麼樣,而打分公式必須在你看到任何變體結果之前就凍結。順序反過來寫(先排序、再去找一個能驗證它的實驗),就是 reviewer 最會抓的那種事後合理化。這一步不花算力,卻是全流程唯一沒有備援的一步。
每一步的失敗模式,以及它會在哪一步爆炸:
- 系統建立 — 失敗模式:起始結構用了低信心的預測模型、缺失片段亂補、質子化狀態沒查、底物設計選了看不到效應的序列。引爆點在第 4 步:CV 分析會告訴你逐位點量全是雜訊,但你已經燒完算力了。
- Simulation — 失敗模式:replica 數不足、把一條長軌跡切成幾段假裝成獨立樣本、只跑 on-target 底物。引爆點在第 6 步:排序出來的差異落在誤差棒裡面。
- Analysis — 失敗模式:WT 與變體用了不一樣的 fit selection 或不一樣的接觸定義、把 QC 用的量拿去打分。引爆點在 reviewer 手上,通常是被要求補一張你補不出來的對照圖。
- Benchmark — 失敗模式:n = 2 就下結論。引爆點在你自己加到 n = 4 的那一天(你的專案:逐殘基一致性從 6/8 掉到 3/8)。
- Validation 設計 — 失敗模式:驗證端點選了平衡結合。引爆點是整篇稿子:全綠也只證明你擅長預測結合。
- Ranking — 失敗模式:看過結果才決定權重。引爆點在審稿意見第一條。
- Experimental Collaboration — 失敗模式:沒有 blind、樣本數太小、實驗端量的不是你要的東西。引爆點是下一輪 grant。
04Why為什麼重要
因為你的交付物不是一條軌跡,是一條流程。
methodology paper 的可信度單位是 pipeline,不是單一數字。同一個 HNH 距離分布,放在「我跑了一條軌跡看到 HNH 會動」裡面是軼事,放在「四條獨立 replica、CV 已量化、metric 分層規則事先凍結、對三個已知功能結果的變體做過校準」裡面才是證據。中間差的全部是流程設計,不是計算精度。
第二個理由是成本結構。這是一個 funnel:上游的候選空間是 10⁴ 量級(SpCas9 有 1368 個殘基,只算單點取代就是 1368 × 19 ≈ 2.6 × 10⁴;一旦允許雙點就直接跳到 10⁸),下游是實驗端一輪能做的十幾到幾十個。每往下一層,單位成本可以貴一個量級,但通過的數量要少一個量級。流程設計的本質就是決定「哪個判準放在哪一層」。把貴的判準放太上游,你會算不完;把不可靠的判準放太下游,你會把真正有效的變體篩掉,而且永遠不會知道。
第三個理由最尖銳:能不能量到專一性,在第 1 步的底物設計就決定了;排序軸長什麼樣,在第 5 步就鎖死了。兩者都不在第 6 步。 以平衡結合 ΔG 為排序軸的變體篩選漏斗在文獻與實務上都很常見,典型組合是序列設計模型、蛋白–核酸親和力預測器,一路到 MM-PBSA 與 FEP。但高保真變體(SpCas9-HF1、eSpCas9(1.1)、HypaCas9)對 on-target 與 off-target 的結合親和力跟 WT 差不多,差別在 HNH 構形檢查點的動力學。Chen 等人量到的落差很極端:刪掉整個 REC3 domain(ΔREC3)讓 cleavage rate 掉了約 1000 倍,而對 on-target 底物的結合親和力仍接近 WT。注意這是 domain 刪除、不是點突變,所以 ΔREC3 本身不是你會拿去篩的候選;它的價值在於把結合強度與切割能力可以完全脫鉤這件事證得最乾淨。一個對親和力幾乎不變、對速率變一千倍的擾動,用 ΔG 軸排序看不到。 這不是精度問題,是量錯了東西——ΔG 是態函數,它決定平衡常數,不含決定速率的能障。ΔG 可以當粗篩,不能當專一性 ranker。
05How怎麼做
先跑 WT,跑到你知道自己的誤差棒為止,再碰任何變體。
這是整頁最重要的一句操作指令。以下是可以照做的順序,假設你手上是一張本機消費級 GPU,加上一個資料中心級 GPU 佇列(同時可跑的 job 數與家目錄容量都有硬性上限——先查清楚你自己的這兩個數字,它們會直接決定排程與輸出設定)。
第一階段:把 WT 跑到有誤差棒(約 1 到 2 週 wall time)
- 起始結構直接用完整 R-loop 三元複合體的晶體座標(5F9R,Jiang 等人 2016)。不要用預測結構當 production 起點,理由見上面那個 0/8 對 3/8。
- 建系統、選力場、選盒型——細節見從 PDB 到軌跡。
- 跑 4 條獨立 replica,不同亂數種子、獨立生成初速。佇列的並行上限會決定這要分成幾批送。
- 每條至少跑到你的目標量在後半段不再單調漂移。你自己的參考點是 4 × ~87 ns,535,265 atoms。
第二階段:算出「哪些數字可以用」(約 1 天,不用新算力)
-
對每個候選 metric,算跨 replica 的 CV。你已經有的結果直接當模板:
- 🟢 CV < 10%:BSA 2.1%、總 protein–DNA 接觸 4.1%、target-DNA 接觸 9.4%、鹽橋 9.5%
- 🟡 marginal:protein RMSD 12.2%、non-target 接觸 17.7%
- 🔴 noise:interface iRMSD 23.9%、DNA RMSF 59.1%、groove 距離 48%、逐位點距離 38 到 46%、groove 接觸計數 145.5%
-
只有綠燈的量可以進打分公式。 黃燈當敘事的輔證,紅燈只能畫圖不能算分。
先把 CV 的定義釘死:它是四條 replica 各給一個值之後,那四個值的標準差除以平均值,衡量的是單條軌跡的雜訊,不是平均值的誤差(平均值的相對誤差是 CV/√n,n = 4 時剛好是 CV 的一半)。而 10% 這條線是本專案的約定,不是從任何原理推出來的——真正的判準是「平均值的誤差要小於你想偵測的變體效應」,而那個效應量目前還沒量過。所以 10% 是保守的起手,不是定律。
第三階段:凍結規則(半天,零算力)
- 寫下打分公式、權重、以及「什麼叫做贏」的判準,存成有時間戳的檔案(git commit 或 OSF 都可以)。細節見分析與打分。
- 同時把驗證方案敲定:主要端點必須是功能/動力學量,並跟實驗端要 3 到 5 個已知功能結果的變體當校準集。見驗證與實驗合作。
第四階段:才開始跑變體
- 底物要選得看得到效應。 eSpCas9(1.1) 在 on-target 底物上是 null,本來就該 null——要看專一性效應必須用 mismatched 底物。這一條可以省掉整整一輪算力。
- 每個變體同樣 4 條 replica。這是成本的主要來源,也是唯一不能省的地方。
成本的量級感(請自己 benchmark 校準)
我沒有你機器上的實測值,所以以下只有量級,不是數字。 五十萬原子等級的 explicit-solvent 系統跑在單張現代資料中心 GPU 上,公開 benchmark 大致落在每天數十 ns。但這個量級對 timestep(2 fs 還是 HMR 4 fs)、precision 模式、輸出頻率極度敏感——任何沒有一併說明這些設定的 ns/day 都不能搬來排自己的程,因為光是換 timestep 就能差兩倍。
所以第一件事是:跑一個 1 ns 的計時 job,把你自己的 ns/day 量出來,之後所有排程都用那個數字推。用「每天數十 ns」粗估的話,單條 ~87 ns 是單卡數天,4 條在並行上限只有個位數的情況下是約一到兩週——這個估計應該在你拿到計時結果的那天就被取代。
家目錄配額通常只有百 GB 量級。500k 原子的系統,若每 10 ps 存一幀全原子座標,一條 100 ns 軌跡就是量級 GB 級的檔案,四條再乘四。建系統時就決定輸出頻率與是否只存 solute,不要等到 job 因為寫不進去而死掉。這個決定改起來要重跑。
06When什麼時候用
- 當你要做的是「排序一批變體」而不是「解釋一個變體」時。 這條流程的每一個設計都是為了讓不同變體之間的比較站得住腳。
- 當你已經有或即將有實驗合作者時。 沒有第 7 步,這條流程產出的是一個永遠無法證偽的分數。
- 當「便宜」是硬約束時。 整條流程的分層邏輯就是為了把貴的東西擋在下游。
- 當你要寫的是 methodology paper 時。 這時候 pipeline 本身就是結果,CV 分析與 blind test 不是補充材料,是主圖。
- 當團隊需要對排序軸取得共識時。 把 kinetics 盲區放進流程圖裡談,比零散的文字往返更容易對焦——它讓每個方法學選擇落在流程的哪一層變得可見。
07When NOT什麼時候別用
- 當你的問題是化學鍵斷裂時,這整條流程量不到。 古典力場沒有電子,磷酸二酯鍵的斷裂、Mg²⁺ 的配位變化、質子轉移全部不在它的能量函數裡。怎麼看出它壞了: 你發現自己在解釋一個需要談 transition state 的現象,卻只有 RMSD 和接觸數可以講。那時候要換的是方法(QM/MM 或 constant-pH),不是加長軌跡。
- 當算力只夠 n = 1 或 n = 2 時,不要走完整條流程。 你會拿到一張看起來很漂亮、但無法計算誤差棒的排序表。你自己的數據就是證據:n = 2 時逐殘基一致性看起來 6/8,加到 n = 4 掉到 3/8。小 n 會系統性高估一致性。 這種情況下,正確的做法是縮小系統或縮短長度來換 replica 數,而不是縮 replica 數來換長度。
- 當一個序列層級的方法就能回答問題時,不要跑 MD。 ESM-2 與 thermoMPNN 在幾小時內就能篩掉明顯去穩定或明顯違反保守性的候選,成本比 MD 低幾個量級。怎麼看出你浪費了: 你的 MD 排序結果跟一個免費的序列分數高度相關,那 MD 沒有帶來新資訊。順帶一提,序列層級的語言模型分數與結構/序列設計模型的分數,彼此相關性很低,這代表它們是正交的先驗,值得都放在上游。
- 當你的驗證端點只有平衡結合數據時,不要用這條流程宣稱專一性。 這是最容易踩、也最貴的一個坑,整頁的驗證與實驗合作都在講它。怎麼看出它壞了: 你的結論句寫成「我們的分數與 K_D 有良好相關」,但你的標題寫的是 specificity。
- 當底物設計會讓效應必然為 null 時,不要進 Simulation。 在 on-target 底物上比較高保真變體與 WT,就是在量一個設計上就該是零的差。怎麼看出來: 你的 Δ(變體 − WT) 全部落在跨 replica 誤差棒裡,而且沒有任何方向性。
- 當你還沒凍結打分公式時,不要開始看變體結果。 一旦看過,你就再也無法誠實回答「權重是事前還是事後決定的」。這一步沒有補救方法,只能重來。
08Project Lens跟我的 project 多相關
為什麼不是更低: 因為這一頁就是這個 project 本身。你的目標不是解釋 Cas9,是產出一條「便宜、高效率、可大量篩選」的 workflow 並寫成 methodology paper——那條 workflow 的骨架就是這七步。其他每一頁(RMSF、接觸圖、MM-PBSA、CV 分析)都是這張圖上的一個零件,而零件的價值取決於它被放在哪一層。
三個具體理由:
- 你已經付過一次順序錯誤的代價。 Chai-1 起點跑完四條 replica 才發現逐殘基指標是隨機的(0/8、ρ ≈ −0.03),換 5F9R 晶體起點才救回來(3/8、Jaccard 0.48、Spearman +0.77)。這是「第 1 步的決定在第 4 步引爆」最直接的實證,而這張全圖的存在就是為了讓這件事在動手前被看見。
- 你的 CV 分層結果已經自動決定了流程的形狀。 綠燈只有聚合量(BSA 2.1%、總接觸 4.1%、target-DNA 接觸 9.4%、鹽橋 9.5%),紅燈是所有逐位點量(最誇張的 groove 接觸計數 145.5%)。這不是理論偏好,是你自己機器上量出來的約束,它直接把「打分層只能用聚合量」寫死了。
- kinetics 盲區必須在流程層級處理,不能在單一分析頁處理。 任何以平衡結合為單一排序軸的漏斗,每一層都可以做得很紮實,問題仍然出在整條軸;要討論這件事,需要的是一張能標出排序軸位置的流程圖,而不是對單一步驟的反駁。
風險要誠實講: 這條流程目前還沒有閉環。第 7 步的實驗校準尚未取得,所以整條 pipeline 的預測力目前是零證據——不是負面證據,是還沒有證據。這正是為什麼驗證與實驗合作是這一章最不能跳過的一頁。
09Reviewer Thinkingreviewer 會問什麼
你的 pipeline 有幾個可調參數?你怎麼避免過擬合到你自己的測試集?點開看參考答案
把可調的東西全部列出來:metric 選擇、權重、CV 閾值、軌跡長度、replica 數、底物設計。然後說明哪些是在看到變體結果之前就凍結的,凍結的證據是什麼(時間戳的 commit)。最誠實也最有力的答法是給出自由度計數:如果你有 5 個候選 metric 和 8 個變體,光是權重就足以湊出任何想要的排序,所以唯一的防線是預先登記。承認這件事比假裝沒有這個問題強。
為什麼是這七步?換個順序會怎樣?點開看參考答案
關鍵在兩處。第一,Benchmark(CV 分析)必須在 Ranking 之前,否則你會用雜訊排序;第二,Validation 設計必須在 Ranking 之前,否則你會挑一個剛好能驗證你結果的實驗。其他步驟的順序基本上由資料依賴決定,沒有選擇餘地。這一問要準備一個具體的反例:如果先排序再選驗證端點,你會很自然地選 SPR,因為那最容易拿到,而那恰好是唯一無法驗證專一性的端點。
你的成本宣稱有實測支撐嗎?點開看參考答案
「便宜」是這個 project 的賣點,所以 reviewer 會查。要準備的是每一層的實測 wall time 與 GPU-hour,而不是引用別人論文的 benchmark。我目前只能給量級(500k 原子在單張現代資料中心 GPU 上大約每天數十 ns),這點必須在投稿前補上你自己叢集上的實測計時數據,否則「便宜」只是形容詞。
這條 pipeline 跟已經發表的 Cas9 MD 研究有什麼不同?點開看參考答案
不要答「我們跑得更久」或「系統更完整」,那是軍備競賽——文獻上已經有每系統 3 條 × 微秒級的 Cas9 MD。真正的差異點是可靠性分層:多數研究報的是軌跡上的逐殘基觀察,你報的是每個 metric 的跨 replica CV,並據此決定它能不能進打分。講這一段之前先自己查一次最新文獻確認沒被搶先;穩妥的講法是「我們把 metric 的可重現性當成一級結果報告」,而不是宣稱首創。
如果第 7 步的實驗結果顯示你的分數沒有預測力,這篇 paper 還有價值嗎?點開看參考答案
有,但必須事先設計成有。如果你的主張是「我們建立了一套可靠性分層的流程,並誠實報告哪些量可以用、哪些不行」,那麼一個 null 的預測結果仍然是有用的資訊——它排除了一整類描述符。如果你的主張是「我們的分數能預測專一性」,null 就是致命的。這個選擇要在寫第一句 abstract 之前做,不是在拿到實驗數據之後。
10Common Mistakes最常犯的錯
- 先跑變體再跑 WT 的可靠性分析。 後果:拿到一堆無法判斷是否顯著的 Δ 值,而且不知道該補長度還是補 replica。正解:WT 四條 replica 跑完、CV 算完、metric 分層確定,才動變體。
- 把一條長軌跡切成四段當作四條 replica。 後果:四段之間高度相關,CV 被系統性低估,你會以為自己的量比實際可靠。正解:獨立初速、獨立亂數種子、最好連溶劑化都重做一次。
- 用預測結構跑完整條 pipeline。 後果:逐殘基層級的結論全部是隨機的(你自己的 0/8、ρ ≈ −0.03)。正解:預測結構用來做 QC 與挑區域,production 用晶體座標;沒有晶體時,把結論限制在聚合量層級。
- 在 on-target 底物上比較高保真變體。 後果:花完整輪算力得到一個設計上就該是 null 的結果。正解:底物設計要跟你想量的效應匹配,專一性效應需要 mismatched 底物。
- 成本只算 GPU-hour,不算 wall time 與人力。 後果:排程時被佇列的並行上限與家目錄配額卡住,實際交付時間是估計的三倍。正解:三種成本分開估,並在計畫書裡都寫出來。
- 把 QC 用的量(RMSD、RMSF)拿去打分。 後果:這些量的跨 replica CV 落在 12% 到 59%,排序結果不可重現。正解:QC 層、打分層、敘事層三層分開,只有綠燈量能打分。
- 等到寫稿才想驗證。 後果:只能用手邊拿得到的數據(通常是平衡結合),而那無法驗證專一性。正解:第 5 步就跟實驗端敲定端點與校準集。
11Further Reading讀哪幾篇
12Summary三句話
這條 workflow 有七步,主要開銷集中在第 2 步,但決定成敗的是第 1 步與第 5 步這兩個幾乎不花算力的決定。核心紀律只有三條:先把 WT 跑到有誤差棒、只讓跨 replica CV 低於 10% 的聚合量進打分公式、在看到任何變體結果之前凍結打分規則與驗證端點。這張圖的價值不在於它涵蓋得多完整,而在於它讓「第 1 步的錯誤會在第 4 步引爆」這件事在你按下 sbatch 之前就被看見。