该存储库包含我们的论文“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 倍的数据分割,即需要〜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] 联系我们。
一些代码是从现有的存储库借用的: