Workflow Design工作流設計
整張地圖的收斂點:今天要開始做,第一步做什麼。
這章的頁面
這章在講什麼
前面十章都在回答「這是什麼、什麼時候不該用」。這章回答唯一剩下的問題:今天早上坐下來,第一個指令打什麼,以及為什麼是那一個。
這章的形狀你其實很熟。你在電催化那邊要交出一個結論,實際上是把「選泛函與贗勢 → 建 slab 與決定終止面 → 算中間態吸附能 → 用描述符畫火山圖 → 對到實驗 overpotential」串成一條有順序、每一步都能對 reviewer 交代的流程。這裡是同一件事,只是每一格的內容換過:起始結構取代 slab、力場取代泛函、跨 replica 的誤差棒取代收斂測試、變體排序取代火山圖、切割速率取代 overpotential。真正跨得過來的不是名詞對應,是一個更硬的體會:流程裡最便宜的決定,往往是影響半徑最大的那些。 選終止面不花機時,但選錯了後面所有吸附能一起錯;選起始結構不花機時,但它決定了你的逐殘基分析是隨機(ρ ≈ −0.03)還是弱訊號(Spearman +0.77)。
七步裡的算力幾乎全部集中在第 2 步(跑軌跡),但決定成敗的是第 1 步(決定要模擬哪個狀態、哪些條件)與第 5 步(凍結打分規則與驗證端點)。這兩步加起來的成本是幾個小時的思考,而它們的錯誤會在第 4 步、也就是你已經燒掉全部機時之後才引爆。 這章存在的理由就是把這件事在你按下第一個 job 之前講清楚。
一、 在碰任何變體之前,先把野生型跑到每個描述符都有跨 replica 的誤差棒。
二、 只有跨 replica CV 低於 10% 的聚合量可以進打分公式;其餘的可以畫、可以講故事,不可以進分數。
三、 在看到任何變體結果之前,把打分公式與驗證端點寫成檔案、存檔、標時間。
一頁全圖,加上三頁分別涵蓋七步的三個區段。Workflow 全圖給整條路線與上面那三條紀律,它的價值不在涵蓋得多完整,而在讓「第 1 步的錯誤會在第 4 步引爆」這件事被提前看見。從 PDB 到軌跡是第 1 到 2 步,給最小可行配置(5F9R 完整三元、AMBER 家族力場、菱形十二面體盒、HMR 配 4 fs、4 條真正獨立的 replica),以及算力加倍時的正確花法順序 —— 先加 replica,再加錯配底物條件,最後才加長度。分析與打分是第 3 到 5 步,把分析切成三層:QC 層只做二元閘門不打分、打分層只收 CV 低於 10% 的聚合量(BSA、總接觸、target-DNA 接觸、鹽橋)、機制敘事層可以講故事但不進分數;打分公式的形狀是「以 WT 為參考態、用 WT 的雜訊尺度無因次化、跨兩個底物條件取雙差」。驗證與實驗合作是第 6 到 7 步,界定端點必須是功能與動力學量,而 SPR 或 BLI 這類平衡結合只能當健康檢查閘門 —— 因為高保真變體的親和力本來就跟 WT 差不多,差別全在結合之後。
這章不重講任何一個分析在量什麼(在 Analysis),不重講生物學,也不替你選題(不在本站範圍內)。它有一個刻意的留白:它不保證這條流程會成功。 它保證的是,無論成不成功,你都會得到一個可以寫出來的結果。
教授可能問
七步裡哪一步最貴?哪一步最重要?為什麼不是同一步?點開看參考答案
最貴的是跑軌跡那一步,它吃掉幾乎全部 GPU 時數。最重要的是決定要模擬哪些狀態與條件(第 1 步)與凍結打分規則(第 5 步),兩者加起來不到一個下午。不是同一步的理由是影響半徑與成本無關:第 1 步選錯條件(例如只在 on-target 底物上比較 WT 與 eSpCas9(1.1)),你會燒完所有機時然後得到一個結構性的 null;第 5 步不凍結,你會得到一個自己都無法相信的漂亮相關。能把「成本」跟「重要性」這兩個軸分開來看,是這一章想訓練的判斷力。
「先把 WT 跑到有誤差棒」到底在做什麼?為什麼要浪費機時在一個你不打算比較的系統上?點開看參考答案
因為 WT 提供的不是比較對象,是尺規。你需要知道每一個描述符在「什麼都沒改變、只換亂數種子」的情況下會抖多大,才能判斷變體造成的差異是不是大於抖動。這件事在你的專案裡已經產出具體的分層:BSA 2.1%、總 protein–DNA 接觸 4.1%、target-DNA 接觸 9.4%、鹽橋 9.5%,這些可以承擔排序責任;protein RMSD 12.2%、non-target 接觸 17.7% 屬於邊緣;iRMSD 23.9%、DNA RMSF 59.1%、groove 接觸計數 145.5% 只能定性。沒有這把尺,你後面每一個「變體比 WT 低 8%」的敘述都無法判斷是訊號還是抖動。 這跟你先做收斂測試再算吸附能是同一個習慣,但不是同一種數學:ENCUT 收斂是決定論的、可單調逼近,跨 replica 的抖動是統計的,只能用獨立樣本去估,不能靠把一條軌跡拉長來消掉。
你的打分公式是雙差。物理上它消掉了什麼?點開看參考答案
消掉的是所有在兩個條件之間共通的系統性偏差:力場的參數化誤差、水模型的偏差、建系統時的建模決定、起始結構的細節、甚至 domain 定義的邊界選擇。這跟你在合金那邊用 reference-coded 的取代效應 ΔΔG 是同一個手法 —— 你不會直接比較兩個不同組成的絕對能量,你會固定參考態、比較「換掉這個元素造成的變化」,因為絕對值裡的共同誤差會在差值裡抵消。具體到這裡:先取「變體減 WT」消掉大部分模型偏差,再取「mismatched 底物減 on-target 底物」消掉那些跟錯配無關的變體效應,剩下的才是你真正想要的量 —— 這個變體對「面對錯配時的行為」改變了多少。
為什麼描述符預設等權?不加權看起來很懶。點開看參考答案
因為在你目前的樣本數下,任何權重都是從資料裡學出來的,而你的資料不夠支撐那個學習。四條 replica、少數幾個變體條件,去擬合三到四個權重,等於在雜訊裡找方向。等權不是懶,它是一個明確的先驗:我不知道哪個描述符更重要,所以不假裝知道。規則要寫死:任何非等權的選擇都必須寫在事前凍結的規格檔裡,並附上不依賴結果的理由(例如「鹽橋權重減半,因為它的 CV 9.5% 剛好在門檻上」)。事後調權重然後說「這樣效果比較好」,是這一整章最不能碰的紅線。
Reviewer 可能問
你說你事先凍結了打分公式。我怎麼知道你不是事後才說的?點開看參考答案
必須有不可事後偽造的證據,口頭承諾沒有意義。最低成本的作法是把規格檔放進版本控制、用有時間戳的 commit,並在論文裡指出對應的 commit 或提供該檔案的雜湊值;更強的作法是使用公開的預先登記平台。同時要說明凍結涵蓋的範圍:公式形狀、描述符清單、權重、成功判準、以及要用哪批資料驗證。沒有涵蓋到的自由度就是還沒凍結的自由度,要主動列出來,例如「我們沒有事先固定 equilibration 的截點,這一項採用一致的自動判準並在補充材料給出敏感度」。
你的 QC 閘門會不會把不利的軌跡篩掉?點開看參考答案
這一問直指一個非常容易發生的偏誤。防線有三層:第一,閘門的判準必須在看任何變體結果之前定義完成,而且只能依賴 WT 或依賴與結果無關的健康指標(例如溫度與能量穩定性、有沒有結構解離、補模區段的行為);第二,閘門對所有條件一視同仁,不能對變體用比 WT 更嚴的標準;第三,報告所有被淘汰的軌跡數與淘汰理由,並提供一次「全部保留」的敏感度分析。如果全部保留會改變結論,那結論就是脆弱的,這件事必須寫出來而不是隱藏。
CV 10% 這條線從哪裡來?是自然常數嗎?點開看參考答案
不是,它是一個約定的操作分界,這一點要誠實講。它的合理性來自兩個現實:你預期的變體效應量級與這個雜訊尺度可比,而 n = 4 之下 CV 本身的相對誤差就已經有大約四成,再細分沒有意義。可防守的做法是三件事:報連續的 CV 值而不是只報層級標籤、對門檻做敏感度分析(把線移到 5% 或 15%,看打分軸的組成與最終排序會不會變)、以及承認這條線是設計選擇而不是統計檢定的結果。把武斷的地方標成武斷,比替它編一個統計理由安全得多。
為什麼你的驗證端點不用結合親和力?SPR 是標準做法。點開看參考答案
因為端點必須跟被宣稱的機制對齊。高保真變體對 on-target 與 off-target 的結合親和力與 WT 相近,差別在結合之後的構形檢查點動力學 —— 用親和力當主要端點,等於選了一個在設計上就對這個效應不敏感的量測。可以承認 SPR 或 BLI 有明確的用途:當健康檢查閘門,確認變體沒有因為突變而根本綁不上去(那是另一種失敗模式,必須排除)。主要端點應該是功能與動力學量:切割速率、編輯效率、時間解析的 engagement。這個回答同時展示你懂那個標準做法、也懂它為什麼在這裡不適用,比單純說「我們不用 SPR」有力得多。
口試可能問
你為什麼設計成漏斗,而不是直接對少數幾個候選做最高精度的計算?點開看參考答案
因為兩件事的目標不同。漏斗的目的是在固定預算下最大化篩過的候選數,它接受每一層都有偽陰性,換取吞吐量;高精度計算的目的是對少數候選給出可信的答案。如果交付物是「便宜、可大量篩選的流程」,主結構就必須是漏斗。但漏斗有一個必須明講的代價:每一層的偽陰性是不可回收的 —— 被第一層刷掉的候選再也不會被看到,而你無從知道刷掉的裡面有沒有好的。緩解方式是在最前面幾層刻意寬鬆、把嚴格的判準留到後面,並且用少數已知答案的變體檢查每一層的通過率是否合理。
如果有人主張整條漏斗都用結合自由能排序,該怎麼回應?點開看參考答案
不要把它變成「誰對誰錯」,把它變成分工。可以這樣講:結合自由能在漏斗前段是有價值的排除工具 —— 一個綁不上去的變體不必進入後面昂貴的計算,這件事它答得又快又準。爭議只在於它能不能當專一性的排序軸,而這一點有具體的實驗依據:高保真變體對 on/off-target 的親和力與野生型相近,差別在檢查點的動力學。所以提議是把 ΔG 從「排序軸」降級成「可行性閘門」,並在後段加上一個檢查點層級的軸。重點不在刪掉任何一層,而在改變那一層的解讀 —— 而且可以提出一個雙方都同意的判準:如果 ΔG 排序與已知變體的功能排序對不上,那就是它不適合當排序軸的直接證據。
這條流程最可能在哪一步崩?你的停損條件是什麼?點開看參考答案
最可能崩在第 6 步:描述符跨 replica 都很穩,但跟功能排序完全對不上。這不是意外,是這條路線的主要風險,因為穩定性與敏感度可能是同一個機制的兩面。停損條件要在動手前寫成明文,例如:若在事先凍結的打分公式下,排序與已知變體的功能排序方向不符、且未能勝過免費的序列 baseline,則不再投入額外機時擴大變體數,轉為把研究交付物改成可靠性基準與起始結構污染的方法學報告。沒有停損條件的計畫,會用光所有算力去搶救一個早就該放棄的主線。
你把大部分心力放在紀律而不是新方法上。這篇論文的新穎性在哪?點開看參考答案
把新穎性放在別人沒有提供的東西上,而不是放在演算法上。這個領域的現況是多數 MD 論文不報獨立軌跡數與跨軌跡變異,所以「同一系統上、多條獨立軌跡、逐描述符的可重現性分層」本身就是領域缺的資料;起始結構對下游逐殘基分析的污染效應也是同樣的情況,而且它帶著一個會關閉的時間窗口(等 AI 預測結構被普遍接受之後,這個對照就變成常識,沒人會覺得值得發表)。要誠實補一句:這一類貢獻的天花板不高,它不會是改變領域的工作,但它在有限算力下能穩定交付、而且對後續使用者真的有用。 能講清楚自己的天花板在哪,比宣稱天花板不存在可信。
AI 對話練習
你是一位做 Cas9 計算篩選的 PI,務實、討厭空話,特別在意兩件事:取樣量夠不夠、對照組乾不乾淨。
我要向你報告我的 workflow 設計。你的任務是挑戰它,不是幫我補完。
規則:
- 先讓我完整講一次設計(我會講:起始結構、系統條件、replica 數與長度、QC 閘門、打分層用哪些描述符與公式形狀、驗證端點)。中途不要打斷。
- 講完之後,你只針對取樣量與對照組連續追問,一次一題,至少八題。追問要具體到數字,例如「你說四條 replica 夠,夠到什麼程度?你的哪一個描述符在四條之下的相對誤差是多少?」
- 如果我用「文獻上大家都這樣做」回答任何一題,直接駁回並要求我給出自己的數據或自己的推理。
- 至少要問我一次:「如果我只給你一半的機時,你的設計哪一格會先被砍?砍掉之後你失去的是哪一句宣稱?」
- 最後給我三個評分:設計的內在一致性、對失敗模式的預期、以及我對自己弱點的誠實度,各一到五分並附一句理由。
你扮演一位計算生物學背景的方法學審查者,主張變體篩選應該全程以結合自由能或 ΔΔG 排序。你的理由充分:這在該社群是有大量文獻支持、工具鏈成熟、而且結果可以量化成能量單位的標準做法。你只被具體的證據說服。
我的立場是:Cas9 的專一性主要由結合之後的構形檢查點動力學決定,所以平衡結合自由能可以當排除用的閘門,不能當專一性的排序軸。
規則:
- 你先用兩三句話說明這條排序軸的設計邏輯與理由。
- 我提出我的意見之後,你要真的抵抗:要求我拿出實驗證據、質疑我的替代方案有沒有經過驗證、指出我提議的檢查點指標在計算上的可靠度並不高。
- 至少要說一次:「那你的方法有比較準嗎?你有 benchmark 嗎?」
- 最後,如果我論證得夠好,請你提出一個雙方都能接受的具體修改,並且明確寫出「什麼樣的結果會讓我承認你是對的」與「什麼樣的結果會讓你承認我是對的」。
請用真實的方法學討論語氣,不要演成辯論賽。
你是一位設計過大規模計算篩選流程的研究員,專長是在固定預算下配置漏斗。
背景:我要篩選 Cas9 變體,目標是找出專一性更好的候選。我的算力是一張消費級 GPU 加上叢集上同時只跑得動個位數 job 的小額配額,儲存空間有限、存檔頻率是硬約束。已知的物理是專一性由結合之後的構形檢查點決定,而不是由平衡結合強度決定。
請帶我走一次設計:
- 先問我候選庫的規模、我能接受的總時程、以及我手上有幾個已知答案的變體可以拿來檢查閘門。
- 然後要求我提出一個分層方案。每一層我都必須回答四件事:這一層在防什麼(要擋掉哪一種候選)、單一候選的成本量級、預期通過率、以及這一層的偽陰性代價。
- 我提完之後你逐層挑戰,特別針對兩件事:有沒有哪一層其實在重複前一層已經做過的判斷(浪費),以及有沒有哪一層的判準跟它宣稱要防的東西其實無關。
- 要求我指出整條漏斗裡唯一一個不可逆的決定是哪一個。
- 最後給我一張表:層級、判準、成本量級、通過率假設、以及「如果這一層被證明無效,我損失什麼」。並標出哪一層我應該先用已知答案的變體去測試。