該存儲庫包含我們的論文“Conditional Antibody Design as 3D Equivariant Graph Translation”的程式碼。 MEAN 是我們論文中提出的多通道等變注意力網絡的縮寫。
我們在scripts/setup.sh中準備了環境設定的腳本,請在運行我們的程式碼之前使用bash scripts/setup.sh
安裝其中的依賴項。
我們在summaries資料夾中提供了論文中使用的SAbDab、RAbD、SKEMPI_V2的摘要數據,請從SAbDab的下載頁面下載所有結構數據。由於 SAbDab 每週更新一次,您也可以從其官方網站下載最新的摘要文件。以下說明假設由 imgt 重新編號的結構資料位於資料夾all_structs/imgt 。
我們為實驗的不同流程提供了 shell 腳本,它們位於腳本資料夾或我們儲存庫的根資料夾中。對於script中的腳本,可以不帶參數來運行它們來查看它們的使用提示,稍後的 README 中也會對此進行說明。可能需要解釋的一件事是模式參數,其值為100或 111。100 表示上下文中僅使用重鏈, 111表示上下文中考慮重鏈、輕鏈以及表位。後者是抗原結合CDR設計的完整設置,而第一個僅用於與RefineGNN進行比較。參數中的 <model type> 僅指定保存/載入檢查點的目錄的前綴,我們在以下部分中使用mean 。如果您遇到有關路徑的問題,請在向腳本傳遞參數時嘗試使用絕對目錄。
我們提供了資料準備、k倍訓練和評估的腳本
這是評估 MEAN 的範例:
bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
GPU=0 bash scripts/k_fold_train.sh summaries 111 mean 9901
GPU=0 bash scripts/k_fold_eval.sh summaries 111 mean 0
透過執行bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
,腳本會將 Summary 中的 pdb 複製到summaries/pdb ,並將Summary 轉換為json 格式,並為每個cdr 產生10 倍的資料,並將Summary 轉換為json 格式,並為每個cdr 產生10 倍的資料,並將Summary 轉換為json 格式,並為每個cdr 產生10 倍的資料,並將Summary 轉換為json 格式,並為每個cdr 產生10 倍的資料,即需要〜5G空間。如果您想在另一個目錄中進行資料準備,只需將摘要檔案複製到該目錄並將summaries/sabdab_summary.tsv替換為新路徑即可。此外,對於每次並行運行的訓練,檢查點將保存在版本 0、1...中,因此您需要將版本 id指定為k_fold_eval.sh的最後一個參數。
在執行此任務之前,請先執行scripts/prepare_data_kfold.sh(第23-31行)中下載SAbDab json摘要的命令。我們假設 json 檔案位於 summaries/sabdab_all.json。
例子:
bash scripts/prepare_data_rabd.sh summaries/rabd_summary.jsonl all_structures/imgt summaries/sabdab_all.json
GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash train.sh mean 3
GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0
我們也在 checkpoints/ckpt/rabd_cdrh3_mean.ckpt 中提供了論文中使用的經過訓練的檢查點。您可以透過執行GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0 checkpoints/ckpt/rabd_cdrh3_mean.ckpt
將其用於測試。結果將會儲存到與檢查點同一目錄下名為results的資料夾中。
在執行此任務之前,請先執行scripts/prepare_data_kfold.sh(第23-31行)中下載SAbDab json摘要的命令。我們假設 json 檔案位於 summaries/sabdab_all.json。
例子:
bash scripts/prepare_data_skempi.sh summaries/skempi_v2_summary.jsonl all_structures/imgt summaries/sabdab_all.json
GPU=0 MODE=111 DATA_DIR=summaries bash train.sh mean 3
GPU=0 CKPT_DIR=summaries/ckpt/mean_CDR3_111/version_0 bash ita_train.sh
GPU=0 DATA_DIR=summaries bash ita_generate.sh summaries/ckpt/mean_CDR3_111/version_0/ita/iter_i.ckpt # specify the checkpoint from iteration i for testing
我們也在 checkpoints/ckpt/opt_cdrh3_mean.ckpt 中提供了 ITA 微調後的檢查點。您可以透過執行GPU=0 DATA_DIR=summaries bash ita_generate.sh checkpoints/ckpt/opt_cdrh3_mean.ckpt
直接使用它進行推理。該腳本將為 summaries/skempi_all.json 中的每種抗體產生 100 個優化候選抗體,並根據預測的 ddg 報告 top1。優化候選的 pdb 將位於檢查點的相同目錄中。
我們還在 scritps/design.py 中提供了用於設計/優化單一 CDR 的腳本。這個腳本需要一個包含重鏈、輕鏈和抗原的輸入 pdb。 pdb 應提前使用 IMGT 系統重新編號,這可以透過 ANAARCI 的 data/ImmunoPDB.py 中的腳本來實現。以下是 1ic7 pdb 的 CDR-H3 設計範例:
python ./data/ImmunoPDB.py -i data/1ic7.pdb -o 1ic7.pdb -s imgt # renumber the pdb
python ./scripts/design.py --pdb 1ic7.pdb --heavy_chain H --light_chain L
產生的 pdb 以及 CDR-H3 序列的摘要將會儲存到 ./results。腳本中使用的預設檢查點是 checkpoints/ckpt/rabd_cdrh3_mean.ckpt。您可以透過參數--ckpt path/to/your/checkpoint
傳遞您自己的檢查點(例如,使用 opt_cdrh3_mean.ckpt 進行 CDR 最佳化)
此外,腳本能夠容納多個 pdb 作為輸入,例如:
python ./scripts/design.py
--pdb pdb1 pdb2 ...
--heavy_chain Hchain1 Hchain2 ...
--light_chain Lchain1 Lchain2 ...
感謝您對我們工作的興趣!
關於演算法、程式碼以及運行過程中遇到的問題,請隨時提出,以便我們能夠更清晰、更好地解答。您可以在 github 儲存庫中建立問題,也可以透過 [email protected] 與我們聯絡。
有些程式碼是從現有的儲存庫借用的: