EVOLVEpro安裝使用教程-蛋白質語言模型驅動的快速定向進化

寫在前面:蛋白質是生命活動的基石,其功能和序列之間的復雜關系長期以來吸引著科學家們的關注。盡管深度突變掃描等實驗方法可以解析蛋白質突變的功能影響,但這些技術的應用范圍局限于序列空間的一小部分。近年來,基于蛋白質語言模型(PLM)的計算方法如ESM2模型取得了一些突破。然而,這些模型在零樣本預測中往往無法顯著提高蛋白質活性。為了解決這一問題,作者提出了EVOLVEpro,一個結合PLM和回歸模型的少樣本主動學習框架,用于蛋白質的快速優化。

主要研究思路:

1、蛋白質語言模型(PLM):使用大規模蛋白質序列數據庫(例如ESM2)進行訓練,理解蛋白質序列的內在規律;

2、頂層回歸模型:在實驗數據的支持下,學習蛋白質突變與功能的關系,預測最佳的突變方向;

3、主動學習策略:每一輪篩選最可能成功的突變,驗證實驗結果后更新模型,逐步優化蛋白質功能;

整個流程通過“少量實驗數據”+“AI預測”實現快速進化,極大減少了實驗的復雜性和時間成本。

一、Google Colab 使用教程

使用 EVOLVEpro 改善蛋白質活性的分步指南(作者用?DMS 工作一部分的小型數據集上進行模擬),參考教程見下述連接;

https://colab.research.google.com/drive/1YCWvR73ItSsJn3P89yk_GY1g5GEJUlgy?usp=sharing

二、本地服務器安裝教程

1、克隆項目代碼

先把代碼下載到本地:

git clone https://github.com/mat10d/EvolvePro.git
cd EvolvePro
2、創建并激活 EVOLVEpro 的核心環境

EVOLVEpro 需要一些依賴庫,官方提供了一個環境配置文件來一次性安裝它們。執行下面兩步:

conda env create -f environment.yml   # 創建環境,自動安裝所有必需的依賴
conda activate evolvepro              # 激活剛剛創建好的環境

這個環境包含了 EVOLVEpro 本身運行需要的核心庫。

3、創建并激活蛋白語言模型(Protein Language Models)環境

EVOLVEpro 使用了多種蛋白質語言模型(PLM),這些模型依賴和核心程序不完全相同,官方建議把它們放到一個單獨的環境中。這樣可以避免庫版本沖突,保證兩部分能正常運行。

運行下面命令安裝并配置這些模型:

sh setup_plm.sh      # 執行安裝蛋白語言模型的腳本
conda activate plm   # 激活專門的蛋白語言模型環境

激活plm的環境檢查是否安裝的是GPU版本的pytorch,如果默認安裝的是CPU版的話,可以重新安裝:

import torch
print(torch.cuda.is_available())
# Flase, 如果輸出為False,則執行一下兩部安裝GPU版本的pytorch
conda remove pytorch libtorch    # 卸載當前的 CPU 版本 PyTorch
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia   # 安裝PyTorch 2.5.1(支持 CUDA 12.1)

這個環境里包括:

  • 深度學習框架(如 PyTorch)

  • 通過 pip 安裝的蛋白語言模型(例如 ESM、ProtT5、UniRep、ankh、unirep)

  • 只能通過 GitHub 克隆源碼安裝的模型(例如 proteinbert、efficient-evolution)

為什么要分兩個環境?

將 EVOLVEpro 核心功能和蛋白語言模型放在不同的環境里,可以:

  • 保持依賴整潔,不會相互干擾

  • 避免包版本沖突,減少安裝錯誤

  • 方便針對不同部分獨立升級或維護

三、本地服務器使用示例

該模塊包含了用于生成和處理突變體數據的函數。在使用該模塊前,請確保激活 evolvepro 環境:

conda activate evolvepro
? 1、實驗突變(Experimental Mutation)處理流程

這是針對已知野生型序列進行系統性突變(如單點突變、組合突變)處理的工具。

📌 目標輸出:

輸出為一個 FASTA 文件,包含了與野生型(WT)序列相比的所有單點氨基酸突變。

步驟(1):定義一些關鍵變量

# 定義一些關鍵變量
wt_seq = "MNTINIAKNDFS"
output_path = "test"

步驟(2):生成野生型和單點突變體的 FASTA 文件

# 生成野生型 fasta 文件并創建單個氨基酸突變體 fasta 文件
from evolvepro.src.process import generate_wt, generate_single_aa_mutants
generate_wt(wt_seq, f'{output_path}/dataset_WT.fasta')
generate_single_aa_mutants(f'{output_path}/dataset_WT.fasta', f'{output_path}/dataset.fasta')

📖 說明:

  • 'MNTINIAKNDFS':輸入的野生型蛋白質序列(可根據自己蛋白進行修改)

  • f'{output_path}/dataset_WT.fasta':指定保存的 FASTA 文件路徑

  • generate_single_aa_mutants函數:輸入為上一步生成的野生型 FASTA 文件 ,輸出為包含所有單點突變體(每個位點替換為19種其他氨基酸)的 FASTA 文件

例如:

  • WT:MNTINIAKNDFS

  • 單點突變:ANTINIAKNDFS(M1A)、TNTINIAKNDFS(M1T)……

注意:執行完上述函數之后會創建一個僅包含WT序列的?FASTA 文件dataset_WT.fasta 以及包含WT序列和單點飽和突變序列的FASTA文件dataset.fasta。

步驟(3):推薦一組隨機初始突變體

# 隨機推薦一組突變體進行檢測
from evolvepro.src.process import suggest_initial_mutants
suggest_initial_mutants(f'{output_path}/dataset.fasta', 12, random_seed=1)

📖 說明:

  • f'{output_path}/dataset.fasta':輸入為之前生成的所有單點突變體的 FASTA 文件

  • 12:隨機選擇推薦的突變體數量(可根據實際需求調整)

  • random_seed:設置隨機種子為 1

此函數適用于篩選出首輪需要實驗驗證的突變體(如用于訓練初始機器學習模型)。

步驟(4):生成 n-突變組合(N-mutant combinations)

# 基于一個野生型蛋白序列和一個包含單點突變信息(和活性指標)的Excel文件,自動根據設定的活性閾值組合多個突變(如雙突變、三突變等),生成對應的突變體序列,并保存為FASTA格式文件
from evolvepro.src.process import generate_n_mutant_combinations
generate_n_mutant_combinations(f'{output_path}/dataset_WT.fasta', f'{output_path}/beneficial_mutations.xlsx', 2, f'{output_path}/dataset_2rd.fasta', threshold=1.15)

📖 說明:

  • f'{output_path}/dataset_WT.fasta':WT序列的FASTA文件

  • 'beneficial_mutations.xlsx':包含實驗測得的有益突變位點和氨基酸變體的 Excel 文件

  • 2:組合突變數,例如生成雙突變組合

  • f'{output_path}/dataset_2rd.fasta':輸出的 FASTA 文件

  • threshold=1.15:突變位點得分閾值,低于該值的突變不予組合(可選)

該函數適用于從已有的有益突變中,組合出潛在更優的多突變體。

beneficial_mutations.xlsx 示例結構:

Variantactivity
T12V1.086
N157K0.577
P26S1.024
R111Y0.782
......
? 2、使用適合的?PLM 模型提取所有變體的蛋白質語言模型嵌入

在使用該模塊前,請確保激活 plm 環境:

conda activate plm

該腳本的一般運行方式如下:

python evolvepro/plm/[model_name]/extract.py [model_location] [fasta_file] [output_dir] [additional_options]

用途:

  • 從輸入的 FASTA 文件中讀取蛋白質序列(如所有單點突變體)

  • 使用指定的蛋白語言模型生成嵌入向量(embeddings)

  • 輸出為 CSV 格式(每一行為一個序列的 embedding)

適用于:

  • 使用 GPU 的高性能計算環境(支持 SLURM 作業調度系統)

  • 或本地命令行執行(適當修改參數即可)

示例如下:

python evolvepro/plm/esm/extract.py esm2_t48_15B_UR50D \output/dms/brenan.fasta \output/plm/esm/brenan \--toks_per_batch 512 \--include mean \--concatenate_dir output/plm/esm/

參數解釋:

參數說明
esm2_t48_15B_UR50D使用的蛋白質語言模型名稱(Facebook ESM2的15B模型)
output/dms/brenan.fasta輸入的 FASTA 文件,包含所有待分析的單點突變體
output/plm/esm/brenan每個突變體的嵌入結果將保存至該目錄
--toks_per_batch 512每個 batch 的 token 數(建議根據 GPU 顯存調小以防 OOM)
--include mean表示導出 "mean pooling" 的序列嵌入(常用于下游預測任務)
--concatenate_dir output/plm/esm/將所有單個突變體的嵌入合并為一個 CSV 文件保存在該目錄

📁 輸出說明

  • output/plm/esm/brenan/:包含每條序列對應的嵌入 .csv 文件

  • output/plm/esm/ 中會匯總一個合并的 embeddings.csv 文件,適用于后續訓練/可視化

每個 CSV 文件內容(示例):

IDemb_0emb_1...emb_1279
M1A_mut_10.123-0.12...0.061
? 3、應用 EVOLVEpro 模型優化蛋白質活性

(1)核心源文件位置:

evolvepro/src/evolve.py

主函數接口:

  • evolve_experimental(用于單點突變優化)

  • evolve_experimental_multi(用于組合突變優化)

(2)在使用該模塊前,請確保激活 evolvepro 環境:

conda activate evolvepro

(3)支持的突變類型:

類型簡介
Single Mutant Evolution每一輪只考慮單個氨基酸替代突變的活性優化
Multi-Mutant Evolution在已有有益突變的基礎上組合生成多突變體進行進一步優化

(4)📂 所需輸入文件說明:

文件類型用途說明
FASTA 文件包含野生型蛋白序列。用于確定突變相對于 WT 的參考序列
PLM 嵌入(.csv)蛋白語言模型生成的突變體嵌入特征文件,每個序列一行,維度一致
演化實驗數據(.xlsx)每一輪突變體的測定活性數據,需包含序列與其對應的實驗值(如表達量、活性等)

(5)🔧 核心參數說明:

參數名類型說明
protein_namestr蛋白名稱,用于標識任務
round_namestr當前演化輪次名稱,例如 Round3
embeddings_base_pathstr嵌入文件存儲路徑
embeddings_file_namestr 或 list單輪使用一個 CSV,多輪組合突變可傳入多個文件名(列表)
round_base_pathstr所有實驗數據所在文件夾路徑
round_file_nameslist實驗數據文件名列表,如 ['Round1.xlsx', 'Round2.xlsx']
rename_WTbool是否在輸出文件中將 WT 命名為統一格式
number_of_variantsint模型預測后選擇的 top N 個突變體用于下一輪實驗
output_dirstr輸出目錄,包含模型預測結果、可視化文件、推薦突變體等

(6)示例一:單突變優化

from evolvepro.src.evolve import evolve_experimentalprotein_name = 't7_pol'
embeddings_base_path = '/path/to/embeddings'
embeddings_file_name = 'embeddings_file.csv'
round_base_path = '/path/to/round/data'
wt_fasta_path = "/path/to/wildtype/fasta"
number_of_variants = 12
output_dir = '/path/to/output/'round_name = 'Round2'
round_file_names = ['T7_pol_Round1.xlsx', 'T7_pol_Round2.xlsx']
rename_WT = Trueevolve_experimental(protein_name,round_name,embeddings_base_path,embeddings_file_name,round_base_path,round_file_names,wt_fasta_path,rename_WT,number_of_variants,output_dir
)

📌 用途

  • 輸入前兩輪的實驗數據

  • 模型預測下一輪中最值得嘗試的 12 個單點突變體

  • 結果寫入 output_dir,用于實際實驗

參考鏈接:

https://github.com/mat10d/EvolvePro

https://www.science.org/doi/10.1126/science.adr6006

AI蛋白質大模型代碼實踐:3萬字長文讀懂EvolvePro蛋白質進化框架與本地部署全流程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88819.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88819.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88819.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】Rocky Linux 清華鏡像源安裝 GitLab

使用清華鏡像源安裝 GitLab 地址:清華鏡像源 1. 搜索 gitlab,我們選擇 gitlab-ce 社區版進行安裝 2. 新建 /etc/yum.repos.d/gitlab-ce.repo,內容為 注意:el$releasever 是清華鏡像源內的文件夾版本 [gitlab-ce] nameGitlab C…

【龍澤科技】新能源汽車維護與動力蓄電池檢測仿真教學軟件【吉利幾何G6】

產品簡介新能源汽車維護與動力蓄電池檢測仿真教學軟件是依托《全國職業院校技能大賽》“新能源汽車維修”賽項中“新能源汽車維護與動力蓄電池檢測” 競賽模塊,自主開發的一款仿真教學軟件。軟件采用仿真技術對車輛進行指定維護作業,并對動力蓄電池總成進…

UE5多人MOBA+GAS 18、用對象池來設置小兵的隊伍的生成,為小兵設置一個目標從己方出生點攻打對方出生點,優化小兵的血條UI

文章目錄根據小兵隊伍更換小兵的皮膚管理小兵的生成使用對象池來管理小兵的生成為小兵設置一個目標小兵生成完整代碼調整一下小兵的UI根據小兵隊伍更換小兵的皮膚 懶得開UE了,增加一個Minion類繼承基類角色CCharacter // 幻雨喜歡小貓咪#pragma once#include &qu…

Clojure持久化數據結構的底層實現

文章目錄一、Clojure的持久化數據結構二、向量(Vector)/Map的底層結構?1. HAMT 哈希數組映射字典樹(1)簡介(2)HAMT 的核心思想(3)HAMT 的結構?a. 基本組成?b. 樹的分支因子?(4)H…

面試150 二叉樹展開為鏈表

思路 思路:使用列表存儲先序遍歷的相關節點。然后遍歷列表,分別獲取前驅節點和當前節點,將前驅節點的左指針指向空,前驅節點的右指針指向當前節點。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, …

代碼隨想錄算法訓練營第十七天

目錄 LeetCode.654 最大二叉樹 題目鏈接 最大二叉樹 題解 解題思路 LeetCode.617 合并二叉樹 題目鏈接 合并二叉樹 題解 解題思路 LeetCode.700 二叉搜索樹中的搜索 題目鏈接 二叉搜索樹中的搜索 題解 解題思路 解題思路 LeetCode.98 驗證二叉搜索樹 題目鏈接 驗…

pycharm無法識別pip安裝的包

在使用conda創建一個新的環境后,有些包通過pip的方式安裝更方便有效,若在pip安裝后,遇到該環境沒有此包,或pycharm監測不到此包,通常是pip的環境指向有問題。 解決措施: # 首先檢查當前pip的指向 which pip…

Elasticsearch 的 `modules` 目錄

Elasticsearch 的 modules 目錄是存放**核心功能模塊**的目錄,這些模塊是 Elasticsearch 運行所必需的基礎組件,**隨官方發行版一起提供**,但設計上允許通過移除或替換模塊來**定制化部署**(比如構建一個最小化的 Elasticsearch 實…

https——TCP+TLS

https——TCPTLS主題:基于mbedtls-2.16.0,驗證TLS會話復用功能驗證環境:1.TLS服務端2.TLS客戶端2.1 基于Sesssion ID2.1.1mbedtls-2.16.0庫的宏配置2.1.2 初始化配置2.1.3 TCP連接2.1.4 首次TLS連接2.1.4.1 發送加密算法列表2.1.4.2 選擇加密…

uni-app uni-push 2.0推送圖標不展示問題

問題現象:我在uni-app的配置文件,配置了推送的大圖標小圖標發現在真機測試無法展示配置的推送圖標問題 官網文檔:開通 | uni-app官網 解決方法: 在uni-app官網中說的并不是很清楚只給了一個簡單的示例,配置并沒有告訴我…

scp:上傳大型數據集到實驗室服務器

我通過百度網盤下載了大概200GB的LUNA-2016的肺結節CT數據。實驗是在實驗室服務器上進行的,我現在需要將本地的數據集傳輸到實驗室的服務器上。我已經通過remote-ssh連接上了實驗室的服務器,但是如果通過這個插件上傳數據的話,一方面不支持上…

量子計算突破:8比特擴散模型實現指數級加速

目錄 一、量子擴散模型(Quantum Diffusion) 二、DNA存儲生成(Biological-GAN) 三、光子計算加速 四、神經形態生成 五、引力場渲染 六、分子級生成 七、星際生成網絡 八、元生成系統 極限挑戰方向 一、量子擴散模型&…

Flask3.1打造極簡CMS系統

基于Flask 3.1和Python 3.13的簡易CMS以下是一個基于Flask 3.1和Python 3.13的簡易CMS管理系統實現方案,包含核心功能和可運行代碼示例。環境準備安裝Flask和其他依賴庫:pip install flask3.1.0 flask-sqlalchemy flask-login配置數據庫在config.py中設置…

用 Node.js 構建模塊化的 CLI 腳手架工具,從 GitHub 下載遠程模板

本文將手把手帶你構建一個支持遠程模板下載、自定義項目名稱,并完成模塊化拆分的 CLI 腳手架工具,適用于初創項目、團隊內部工具或者開源項目快速初始化。🧩 為什么要自己造一個 CLI 腳手架? 在日常開發中,我們常用腳手…

08.如何正確關閉文件

如何正確關閉文件(File Handling Best Practices) 文件操作是日常開發中非常常見的任務,正確關閉文件對于避免資源泄漏尤為關鍵。錯誤的文件關閉方式可能導致文件未保存、鎖定或其他異常。 1. 常見的錯誤方式:手動 close() 許多初學者會手動調用 close() 關閉文件,這在異…

算法入門--動態規劃(C++)

深入淺出掌握動態規劃核心思想,圖文并茂實戰代碼 什么是動態規劃? 動態規劃(Dynamic Programming, DP) 是一種高效解決多階段決策問題的方法。它通過將復雜問題分解為重疊子問題,并存儲子問題的解(避免重…

[2025CVPR]GNN-ViTCap:用于病理圖像分類與描述模型

論文結構解析? 本文采用經典學術論文結構: ?引言?:闡述病理圖像分析的挑戰與現有方法局限性?相關工作?:系統梳理MIL、視覺語言預訓練和生物醫學語言模型三大領域?方法?:詳細闡述GNN-ViTCap四階段架構?實驗?:在BreakHis和PatchGastric數據集驗證性能?討論?:通…

Java SE--圖書管理系統模擬實現

一.設計思路首先這個系統可以由倆種用戶使用,分別為管理者用戶和普通者用戶,根據不同的用戶有不同的界面,每個界面有不同的功能。二.代碼實現創建三個包和一個類book包:包括Book類和Booklist類Book類:package book; pu…

[RPA] 批量數據抓取指定商品名稱信息

影刀RPA案例:批量數據抓取指定商品名稱信息流程圖:操作步驟:涉及的影刀RPA大致指令: 1. 打開影刀商城頁面 2. 使用【填寫輸入框(web)】指令輸入用戶名和密碼,并點擊"登錄"按鈕 3. 切換到"訂單管理"…

我的世界Java版1.21.4的Fabric模組開發教程(十四)方塊實體

這是適用于Minecraft Java版1.21.4的Fabric模組開發系列教程專欄第十四章——方塊實體。想要閱讀其他內容,請查看或訂閱上面的專欄。 方塊實體(Block Entity) 指的是一種用于存儲方塊額外數據的方法。但這種數據和為了控制方塊狀態而在自定義方塊類中創建的屬性不太…