
這幾年做酶工程的人估計都和我一樣被同一個問題折磨過文獻里看起來很有道理的突變位點做出來效果卻一言難盡瘋狂跑定點突變體力活干到懷疑人生。AI輔助蛋白質(zhì)工程真正落地之后其實是把“設(shè)計突變方案”從一門手藝變成了半自動流程。我現(xiàn)在的日常是把“提高這個酶在60℃下的熱穩(wěn)定性活性別掉”這樣一句話需求丟給系統(tǒng)它會在幾小時內(nèi)產(chǎn)出一份排序好的候選突變清單包括單點突變、組合突變、引物建議還能直接對接后端的建庫和篩選。這篇文章就把這套流程從思路到工具、從代碼到坑完整拆開講一遍適合正在做酶工程、合成生物學(xué)或者結(jié)構(gòu)生物學(xué)想把AI真正用進實驗里的人。1. 整體思路從一句話需求到一版突變方案1.1 先搞清楚AI在流程里替代了什么很多人一聽到“AI設(shè)計酶”第一反應(yīng)是讓AI憑空生成一個酶。但實際做酶工程的時候大部分需求根本不是“無中生有”而是在現(xiàn)有酶的基礎(chǔ)上做幾處點突變把某個性能調(diào)一調(diào)。這種場景下傳統(tǒng)做法靠的是經(jīng)驗老師傅會去比對同源序列、翻晶體結(jié)構(gòu)、找文獻里報道過的熱點位點然后手工挑出二三十個突變位點做實驗。這個過程極其依賴個人積累而且經(jīng)常漏掉一些真正有效的突變。我搭這套AI輔助流程時最先想清楚的不是“AI能預(yù)測多準(zhǔn)”而是“AI應(yīng)該替代流程里的哪一段”。仔細(xì)拆下來真正耗時的是這幾件事收集和閱讀文獻、分析結(jié)構(gòu)、篩選候選位點、評估突變效果、設(shè)計實驗方案。AI能穩(wěn)定替代的是中間三段也就是知識檢索、候選生成和初步評分。最后的實驗驗證AI替代不了也不應(yīng)該替代。這樣想之后整個系統(tǒng)就不是一個“黑箱預(yù)測器”而是一個輔助決策工具它輸出的是候選人名單最終判斷還是人在做。1.2 “提高熱穩(wěn)定性”這句話怎么翻譯成目標(biāo)函數(shù)項目標(biāo)題里寫的“一句話協(xié)助設(shè)計”聽著很輕松但實際問題就出在“一句話”本身。因為計算機不會理解“熱穩(wěn)定性好一點”這種模糊表達(dá)。它需要的是一個可計算的目標(biāo)函數(shù)或者至少是一組帶權(quán)重的打分標(biāo)準(zhǔn)。以“提高熱穩(wěn)定性”為例我在流程里會把它拆成幾個可量化的指標(biāo)折疊自由能變化ΔΔG負(fù)值越大代表突變后蛋白越穩(wěn)定這是最常用的穩(wěn)定性指標(biāo)。分子內(nèi)疏水核心的堆積質(zhì)量熱穩(wěn)定蛋白通常有更緊實的疏水核心。表面電荷和極性殘基分布高溫下脫酰胺、氧化這類化學(xué)降解往往和表面殘基有關(guān)。與目標(biāo)溫度有關(guān)的虛擬篩選閾值比如要求60℃下仍保持活性那么就要關(guān)注該溫度附近的構(gòu)象柔性。這一步我會用大語言模型把用戶的話解析成結(jié)構(gòu)化參數(shù)然后映射到上面的指標(biāo)上。但這里有個關(guān)鍵點不能讓大模型自己定義一切。解析出來的結(jié)果必須經(jīng)過校驗比如用戶說“熱穩(wěn)定性”時必須確認(rèn)到底要Tm、T50還是長期儲存穩(wěn)定性這幾個目標(biāo)對應(yīng)的篩選策略完全不一樣。我踩過的坑就是直接把“耐熱”理解成ΔΔG結(jié)果實驗測的是T50兩者相關(guān)性并不總是很好。1.3 我最終采用的管線長什么樣跑過幾輪實驗之后我把整個流程固定成了四條串聯(lián)的步驟這也是我認(rèn)為最容易復(fù)制的結(jié)構(gòu)。第一步是自然語言解析用大模型把“一句話需求”轉(zhuǎn)成目標(biāo)函數(shù)和約束條件。比如“提高熱穩(wěn)定性保持活性”會轉(zhuǎn)成“最小化ΔΔG同時懲罰活性位點附近的突變”。第二步是候選突變空間生成這一步我看著結(jié)構(gòu)結(jié)合序列保守性和分子動力學(xué)模擬結(jié)果圈出可能有效的位點范圍一般控制在20到50個位點而不是全序列掃描。第三步是多維度打分把FoldX、Rosetta、ESM序列模型的分?jǐn)?shù)整合成一個排序。第四步是輸出實驗方案包括Top N單點突變、組合突變組合方式、引物設(shè)計方案和96孔板布局建議。這條管線真正的價值在于“可解釋”。每個最終輸出的突變位點系統(tǒng)都會附帶一段理由比如“該位點位于柔性loop突變到纈氨酸后填充了疏水空腔FoldX預(yù)測ΔΔG為-0.8 kcal/mol”。這樣實驗人員拿到方案后仍然有自己的判斷空間而不是面對一個不知道從哪里冒出來的黑箱結(jié)果。1.4 為什么不干脆讓大模型直接給突變位點有人會問既然大模型這么厲害直接把“酶序列”和“需求”丟給它讓它輸出突變列表不就行了我試過效果很不穩(wěn)定。主要原因是大模型并沒有真正理解酶的結(jié)構(gòu)和物理化學(xué)規(guī)律它只是在做模式補全。它可能給出看起來合理的突變但稍微一查就會發(fā)現(xiàn)有些突變位點根本在活性中心附近或者突變到了高度保守的關(guān)鍵殘基上實驗一做就失活。所以我的選擇是讓大模型做“翻譯”和“解釋”不讓它做“預(yù)測”。真正的打分和篩選必須交給專門的結(jié)構(gòu)計算工具和序列模型。換句話說大模型是前臺它負(fù)責(zé)理解人話并包裝結(jié)果物理模型是后臺它負(fù)責(zé)算能量和結(jié)構(gòu)實驗數(shù)據(jù)是裁判它負(fù)責(zé)告訴所有人誰對誰錯。這套組合比任何單一模型都靠譜。2. 核心細(xì)節(jié)解析與工具選型要點2.1 結(jié)構(gòu)預(yù)測和能量計算AlphaFold、FoldX、Rosetta怎么分工做突變設(shè)計第一步是拿到可信的三維結(jié)構(gòu)。如果沒有晶體結(jié)構(gòu)我用AlphaFold2或ESMFold做預(yù)測。兩者分工明確AlphaFold2精度更高但速度慢適合對單個序列深入分析ESMFold速度快適合批量處理多個同源序列或做大規(guī)模掃描。實測下來對于大多數(shù)酶來說AlphaFold2預(yù)測的結(jié)構(gòu)足夠用來做后續(xù)突變設(shè)計但需要注意預(yù)測結(jié)構(gòu)里有些loop區(qū)域其實并不確定這些區(qū)域做能量計算時需要特別小心。拿到結(jié)構(gòu)之后就輪到能量計算工具登場。我常用的工具組合是FoldX和Rosetta再加一個EvoEF作為交叉驗證。下面這個表是我自己在不同場景下的選型標(biāo)準(zhǔn)工具主要輸入擅長場景典型耗時我的使用場景AlphaFold2氨基酸序列高精度結(jié)構(gòu)預(yù)測分鐘到小時無晶體結(jié)構(gòu)時的基礎(chǔ)模型ESMFold氨基酸序列快速結(jié)構(gòu)預(yù)測秒級批量掃描同源序列FoldX結(jié)構(gòu)文件單點突變ΔΔG快速計算秒級每個突變候選突變的初篩Rosetta結(jié)構(gòu)文件精細(xì)能量計算和構(gòu)象采樣分鐘到小時對Top候選做復(fù)核EvoEF結(jié)構(gòu)文件蛋白質(zhì)穩(wěn)定性快速評估秒級每個突變和FoldX結(jié)果交叉對比ESM序列序列適應(yīng)度估計秒級判斷突變是否符合進化規(guī)律選型邏輯不復(fù)雜先用AlphaFold2把結(jié)構(gòu)定下來再用FoldX快速跑幾百個單點突變的打分最后用Rosetta對排序前20的突變做精細(xì)驗證。FoldX雖然快但它的能量函數(shù)比較簡單碰到極性殘基或特殊化學(xué)環(huán)境容易失真所以設(shè)計流程里不能只依賴單一工具至少要有兩個獨立方法互相印證。2.2 突變位點候選空間怎么圈定如果把序列上每個位點都突變成其他19種氨基酸假設(shè)一個酶有400個殘基總共就是7600個單點突變。FoldX跑起來倒是很快但這些突變里絕大多數(shù)是無效甚至有害的直接全掃浪費計算資源而且會產(chǎn)生大量假陽性。我現(xiàn)在的做法是先縮小候選位點范圍。判斷標(biāo)準(zhǔn)可以分成三類保守性極度高的位點直接排除這些往往是功能關(guān)鍵殘基突變大概率失活?;钚晕稽c一定距離內(nèi)的殘基保留但增加懲罰一般我會設(shè)一個6埃甚至更嚴(yán)格的距離閾值。表面高柔性區(qū)域、內(nèi)部疏水空腔附近、亞基界面這些地方則重點保留因為它們是穩(wěn)定性調(diào)節(jié)的主要區(qū)域。實際操作中我會結(jié)合序列同源比對和分子動力學(xué)模擬。比如用MD跑幾十納秒統(tǒng)計每個殘基的均方根漲落也就是柔性值。那些柔性高但離活性位點遠(yuǎn)的loop區(qū)域往往是通過引入疏水殘基或剛性氨基酸來提升熱穩(wěn)定性的關(guān)鍵位置。這個圈定過程如果純靠人工要好幾天用腳本輔助幾十分鐘就能完成。2.3 打分模型里如何兼顧“活性別掉”單看穩(wěn)定性打分是不夠的因為很容易出現(xiàn)“突變后蛋白變得很穩(wěn)定但完全沒有活性”的結(jié)果。我見過不少這類的設(shè)計測Tm時很漂亮一測酶活直接歸零。所以打分模型必須加入活性約束。我常用的一個簡化打分公式如下score w1 × stability_score w2 × conservation_score - w3 × activity_risk其中stability_score來自FoldX或Rosetta預(yù)測的ΔΔG負(fù)值越穩(wěn)定則得分越高conservation_score來自同源序列比對估計突變后的氨基酸是否符合該位置的進化偏好activity_risk是突變位點到活性中心的距離懲罰距離越近風(fēng)險越高。權(quán)重w1、w2、w3需要根據(jù)具體酶系手動調(diào)一般w1在0.5到0.7之間w2在0.2到0.3之間w3是反向懲罰項沒有固定標(biāo)準(zhǔn)但我會讓它足以壓過那些靠近活性位點的“高穩(wěn)定性突變”。這樣設(shè)計的核心思想是把穩(wěn)定性預(yù)測當(dāng)作主要目標(biāo)把保守性當(dāng)作安全網(wǎng)把活性風(fēng)險當(dāng)作一票否決項。雖然保守性高的位點突變后不一定失活但至少說明進化上這些殘基很難被替換突變風(fēng)險高。對工業(yè)酶改造來說安全第一實驗成本不允許承擔(dān)太多失活風(fēng)險所以保守性分?jǐn)?shù)在初篩里權(quán)重必須夠重。2.4 多輪迭代時的組合突變策略單點突變實驗做幾輪之后必然要面對組合突變的問題。很多人以為兩個有益單突變加在一起酶就會變得更好但真實情況經(jīng)常是負(fù)協(xié)同甚至互相抵消。我做組合突變設(shè)計時從不把單點突變分?jǐn)?shù)簡單相加而是采用“逐步疊加”策略第一輪選Top 5單點突變?nèi)繂为殞嶒?。第二輪按實驗驗證的正向結(jié)果做兩兩組合。第三輪再把表現(xiàn)最好的兩三個組合做三突變疊加。這里AI能幫上忙的是組合爆炸問題。三個位點各有幾種候選氨基酸時組合數(shù)可能超過一千種實驗不可能全部做。我會先用Rosetta做雙突變掃描再把預(yù)測結(jié)果和上一輪實驗數(shù)據(jù)合并用一個小型機器學(xué)習(xí)模型回歸出組合效應(yīng)。這個方法雖然簡單但比單純按ΔΔG相加靠譜得多。本質(zhì)上組合突變預(yù)測是在擬合一個非線性的能量面單點近似只在突變位點彼此很遠(yuǎn)時成立。3. 實操過程完整跑一輪熱穩(wěn)定性突變方案3.1 輸入輸出示例為了把流程講清楚我拿一個比較典型的場景舉例工作對象是一個來自中溫菌的脂肪酶目標(biāo)是一句話“提高這個酶在60℃下的熱穩(wěn)定性同時保持原有催化活性?!毕到y(tǒng)最后輸出的一張示意表單大概長這樣排名突變FoldX預(yù)測ΔΔG (kcal/mol)保守性風(fēng)險距活性中心距離 (?)AI推薦理由1G44A-0.82低18位于柔性loop增加局部剛性2V180I-0.65低24增強疏水核心堆積3S227A-0.51中15減少極性表面降低脫酰胺風(fēng)險4T118V-0.47中22填充內(nèi)部空腔5N94A-0.38高12穩(wěn)定性得分正但風(fēng)險偏高建議謹(jǐn)慎這里要特別說明表中的ΔΔG數(shù)值是演示用示意數(shù)據(jù)不是從真實實驗中測出來的。真正跑流程時每個數(shù)值都會附上對應(yīng)的工具版本和參數(shù)方便溯源。輸出表單的最后系統(tǒng)還會給出一個建議先單獨測試這5個單點突變?nèi)缓髢?yōu)先組合G44A和V180I因為這兩個位點相距較遠(yuǎn)負(fù)協(xié)同概率相對低。3.2 用一段Python把打分流程串起來整套流程的代碼并不復(fù)雜核心邏輯可以濃縮成偽代碼。我用Python寫的骨架大致是下面這個樣子def design_mutants(sequence, structure, request_text): target parse_request(request_text) candidates select_candidate_positions(sequence, structure, target) results [] for pos, original_aa in candidates: for new_aa in all_amino_acids(): if new_aa original_aa: continue ddg run_foldx(structure, f{original_aa}{pos}{new_aa}) conservation query_esm_log_likelihood(sequence, pos, new_aa) activity_risk calculate_active_site_penalty(pos, new_aa) score 0.6 * (-ddg) 0.2 * conservation - 0.2 * activity_risk results.append({ mutation: f{original_aa}{pos}{new_aa}, score: score, ddg: ddg, conservation: conservation, }) results.sort(keylambda x: x[score], reverseTrue) return results[:10]實際運行的時候有幾個細(xì)節(jié)必須注意。第一select_candidate_positions不能全序列隨機選要用保守性篩掉高度保守位點。第二run_foldx要對原始結(jié)構(gòu)做修復(fù)比如補缺失原子、加氫否則算出來的ΔΔG會有很大噪聲。第三conservation不是直接的百分比而是一個序列似然分?jǐn)?shù)來自ESM模型數(shù)值越高代表該突變越符合同源蛋白的進化規(guī)律。我一開始直接用同源比對保守性百分?jǐn)?shù)效果差一些后來換成ESM的log-likelihood排序穩(wěn)定性明顯改善。打完分之后我不會馬上輸出Top10而是會把結(jié)果再做一次過濾。比如把所有突變成半胱氨酸的突變?nèi)刻蕹驗橛坞x半胱氨酸容易形成錯誤的二硫鍵導(dǎo)致蛋白聚集。另外如果某個位點在多個候選突變里反復(fù)出現(xiàn)我也會額外留意這類位點往往是影響穩(wěn)定性的“熱點位點”價值比較高。3.3 從突變方案到引物設(shè)計與建庫AI輸出一版突變方案只是萬里長征第一步。要真正把方案變成實驗數(shù)據(jù)還需要把突變轉(zhuǎn)成引物和文庫。我們實驗室目前的做法比較實際Top10單點突變用商業(yè)引物合成一次大概兩周組合突變?nèi)绻麛?shù)量少于50個也是逐個合成點突變體不做大文庫。如果要規(guī)模化標(biāo)準(zhǔn)流程是設(shè)計一段包含突變位點的寡核苷酸通過PCR方式引入突變。這一步有一個容易被忽略的坑引物設(shè)計軟件往往只管Tm值匹配不會考慮密碼子偏好。如果突變后的密碼子在大腸桿菌里是稀有密碼子表達(dá)水平可能會大幅下降。所以我的方案輸出里會強制檢查突變后密碼子的適應(yīng)指數(shù)任何低于閾值的密碼子都會做同義密碼子替換保證氨基酸不變但表達(dá)系統(tǒng)更友好。文庫構(gòu)建方面如果只是驗證AI方案的幾十個突變體用普通的96孔板手工操作就夠。如果要做飽和突變比如某個位點所有19種氨基酸都測一遍那就建議上液體處理工作站。我們用的是聲控移液設(shè)備一次能精確分配納升級液體極大減少誤差。建庫結(jié)束后用NGS做一輪質(zhì)控確認(rèn)突變分布正確這一步很關(guān)鍵因為PCR擴增容易出現(xiàn)偏好性。3.4 一輪迭代大概需要多久很多朋友關(guān)心AI輔助設(shè)計到底能省多少時間。按我自己的統(tǒng)計從拿到目標(biāo)序列到最后拿到一輪實驗數(shù)據(jù)最快的話三周能閉環(huán)。時間分布大概是AI設(shè)計和打分最多一兩天引物合成兩到三天克隆和轉(zhuǎn)化四到五天蛋白表達(dá)和粗酶液篩選一周數(shù)據(jù)處理和反饋到AI模型再做下一輪設(shè)計三到四天??偣踩茏笥摇O啾葌鹘y(tǒng)隨機突變加上定向進化篩選這個周期已經(jīng)快了不少。傳統(tǒng)方法先構(gòu)建隨機突變庫再篩選幾千個克隆光篩選就要好幾個月。AI輔助的好處不是一次就能拿到完美突變體而是能快速把候選空間從幾千幾萬壓縮到幾十讓后續(xù)每一輪實驗都在更高質(zhì)量的基礎(chǔ)上迭代。我自己的體會是三輪左右的“設(shè)計-驗證-反饋”閉環(huán)基本可以找到明顯提升熱穩(wěn)定性的組合突變這個成功率已經(jīng)讓我很滿意了。4. 常見問題與排查技巧實錄4.1 預(yù)測提升實驗卻不變先查這五個方向AI給的Top1突變實驗測出來熱穩(wěn)定性沒有任何提高這種情況我遇到太多了。遇到這種問題我的排查順序是這樣的先確認(rèn)結(jié)構(gòu)模型質(zhì)量。如果是AlphaFold預(yù)測的結(jié)構(gòu)重點看突變位點附近的pLDDT置信度。如果置信度很低說明這個區(qū)域本身就不確定所有能量計算都不可靠。再檢查突變前結(jié)構(gòu)是否做過能量優(yōu)化。很多工具要求先跑一輪最小化直接拿原始PDB算ΔΔG會有大量假陽性。然后復(fù)核打分?jǐn)?shù)值。FoldX的ΔΔG單次計算波動不小我一般會重復(fù)跑3次取平均值少于0.3 kcal/mol的差異先視為噪聲。接著看實驗條件。熱穩(wěn)定性測定是T50還是Tm與AI優(yōu)化的目標(biāo)是不是同一個指標(biāo)經(jīng)常出現(xiàn)“預(yù)測的是折疊自由能實驗測的是催化活性隨溫度衰減”這類驢頭不對馬嘴的情況。最后才是懷疑氨基酸替換本身。同一個位點換成一個更大側(cè)鏈可能增加堆積也可能造成空間沖突需要看局部環(huán)境的實際三維排布。我建議不要一上來就怪AI。大部分失敗其實出在結(jié)構(gòu)準(zhǔn)備和實驗檢測指標(biāo)不匹配上這兩點找準(zhǔn)了成功率會明顯提升。4.2 突變體表達(dá)量下降甚至完全包涵體穩(wěn)定性設(shè)計有一個隱藏風(fēng)險預(yù)測時看的是成熟蛋白的折疊穩(wěn)定性但蛋白在大腸桿菌里表達(dá)時還要經(jīng)歷翻譯和折疊過程。一個突變能把成熟態(tài)變得更穩(wěn)定卻可能讓折疊中間態(tài)更容易聚集最終表現(xiàn)為包涵體。我設(shè)計的突變體里確實碰到過幾次這種問題。排查方法很簡單先做小規(guī)模誘導(dǎo)表達(dá)實驗做全菌和上清的電泳對比確認(rèn)目標(biāo)蛋白是否在上清中。如果表達(dá)量明顯下降優(yōu)先做兩件事一是降低誘導(dǎo)溫度比如從37℃降到25℃給折疊過程爭取時間二是共表達(dá)分子伴侶比如GroEL-GroES系統(tǒng)幫助新生肽鏈正確折疊。如果還不行就得回到設(shè)計端把那個突變從候選里去掉換一個保守性更好的位點。從AI設(shè)計角度后來我加入了一個“表達(dá)友好度”過濾項突變后的密碼子適應(yīng)指數(shù)過低直接降權(quán)。這項過濾不能完全避免表達(dá)問題但至少把經(jīng)典翻譯瓶頸堵住了一部分。4.3 問題排查速查表下面把我在項目中遇到的高頻問題整理成一個速查表方便大家對照現(xiàn)象可能原因排查與解決預(yù)測ΔΔG很好但Tm沒變結(jié)構(gòu)模型置信度低檢查pLDDT改用實驗結(jié)構(gòu)多個工具打分矛盾輸入結(jié)構(gòu)準(zhǔn)備不一致統(tǒng)一做能量最小化加氫突變體不表達(dá)密碼子不友好換成高適應(yīng)指數(shù)同義密碼子表達(dá)量正常但無活性突變靠近活性位點檢查距離加入活性風(fēng)險懲罰組合突變效果差位點間負(fù)協(xié)同用雙突變掃描替換單點相加實驗和預(yù)測趨勢相反目標(biāo)指標(biāo)不一致確認(rèn)測的是Tm還是T50這張表基本覆蓋了我自己跑項目時八成以上的問題。很多問題在第一次遇到時會讓人覺得AI“不靠譜”但排查過后會發(fā)現(xiàn)絕大多數(shù)都是工程細(xì)節(jié)沒校準(zhǔn)而不是預(yù)測原理有問題。4.4 我的實操心得先跑通手動閉環(huán)再談全自動最后說點大實話。項目標(biāo)題里提到“自動化”但我不建議一開始就上一整套自動化平臺。先手動跑通兩三輪“AI設(shè)計-手工驗證-數(shù)據(jù)反饋”的閉環(huán)比直接買設(shè)備裝工作站重要得多。原因很簡單自動化只是把流程放大不能矯正錯誤。如果你一開始打分邏輯就有問題全自動只會讓你更快地做出錯誤突變庫成本更高。我的做法是先把所有環(huán)節(jié)做成半自動AI生成方案后我用表格管理突變和實驗結(jié)果每輪實驗后手動更新數(shù)據(jù)庫。跑了三四輪之后積累了足夠的正負(fù)樣本再開始寫腳本把數(shù)據(jù)回灌到打分模型里逐步讓系統(tǒng)“記住”這個酶的特殊規(guī)律。到這時候上液體工作站才真正有意義。這個思路同樣適用于那些還沒接觸AI的實驗室先把最簡單的“AI設(shè)計、人工驗證”跑通成效一定比想象中快。這段時間用下來我個人最大的感受是AI輔助蛋白質(zhì)工程真正的價值不是替代經(jīng)驗而是把經(jīng)驗從少數(shù)人手里復(fù)制給所有人。以前一個新來的學(xué)生要花半年才能學(xué)會怎么挑突變位點現(xiàn)在有了這套流程他第一周就能提出一套有依據(jù)的候選方案第三周已經(jīng)開始做實驗驗證。做酶工程多年最大的瓶頸從來不是測活性而是把有限的人力從重復(fù)設(shè)計中解放出來。每次看到AI給出的突變方案在實驗里真正生效我都覺得這件事值得繼續(xù)做下去。