В этом репозитории содержатся коды для нашей статьи «Условный дизайн антител как перевод 3D-эквивариантного графа». MEAN — это аббревиатура многоканальной эквивариантной сети внимания , предложенной в нашей статье.
мы подготовили сценарий для настройки среды в scripts/setup.sh, пожалуйста, установите в нем зависимости с помощью bash scripts/setup.sh
перед запуском нашего кода.
Мы предоставили сводные данные, использованные в нашей статье, из SAbDab, RAbD, SKEMPI_V2 в папке сводок. Загрузите все структурные данные со страницы загрузки SAbDab. Поскольку SAbDab обновляется еженедельно, вы также можете загрузить новейший файл сводки с его официального сайта. Следующие инструкции предполагают, что данные структуры, перенумерованные с помощью imgt, находятся в папке all_structures/imgt .
Мы предоставили сценарии оболочки для различных процедур экспериментов, которые расположены либо в папке scripts , либо в корневой папке нашего репозитория. Что касается сценариев в scripts , вы можете запускать их без аргументов, чтобы увидеть подсказки по их использованию, что также будет проиллюстрировано в README позже. Одна вещь, которая может нуждаться в пояснении, — это параметр режима, который принимает значение либо 100, либо 111. 100 означает, что в контексте используется только тяжелая цепь, а 111 означает, что в контексте рассматриваются тяжелая цепь, легкая цепь, а также эпитоп. Последний представляет собой полную настройку дизайна антигенсвязывающих CDR, тогда как первый предназначен только для сравнения с RefineGNN. <тип модели> в аргументах указывает только префикс каталога для сохранения/загрузки контрольных точек, в следующих разделах мы используем среднее значение . Пожалуйста, попробуйте использовать абсолютные каталоги при передаче аргументов сценариям, если у вас возникнут проблемы с путями.
Мы предоставили сценарии для подготовки данных, 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
, сценарий скопирует PDB-файлы из сводки в summaries/pdb , преобразует сводку в формат json и сгенерирует 10-кратное разбиение данных для каждого cdr, что требуется ~ 5G пространства. Если вы хотите выполнить подготовку данных в другом каталоге, просто скопируйте туда файл сводки и замените summaries/sabdab_summary.tsv новым путем. Кроме того, для каждого параллельного запуска обучения контрольные точки будут сохраняться в версии 0, 1,... Поэтому вам нужно указать идентификатор версии в качестве последнего аргумента k_fold_eval.sh .
прежде чем запускать эту задачу, по крайней мере, запустите команды загрузки json-сводки SAbDab в scripts/prepare_data_kfold.sh (строки 23-31). Предположим, что файл 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 в том же каталоге, что и контрольная точка.
прежде чем запускать эту задачу, по крайней мере, запустите команды загрузки json-сводки SAbDab в scripts/prepare_data_kfold.sh (строки 23-31). Предположим, что файл 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
Мы также предоставили контрольную точку после тонкой настройки ITA в checkpoints/ckpt/opt_cdrh3_mean.ckpt. Вы можете напрямую использовать его для вывода, запустив GPU=0 DATA_DIR=summaries bash ita_generate.sh checkpoints/ckpt/opt_cdrh3_mean.ckpt
. Этот сценарий сгенерирует 100 оптимизированных кандидатов для каждого антитела в summaries/skempi_all.json и сообщит о первом из них с точки зрения прогнозируемой ddg. PDB-файлы оптимизированных кандидатов будут расположены в том же каталоге контрольной точки.
Мы также предоставляем скрипт для проектирования/оптимизации одиночного CDR по адресу scritps/design.py. Для сценария требуется входная база данных, содержащая тяжелую цепь, легкую цепь и антиген. PDB следует заранее перенумеровать с помощью системы IMGT, что можно сделать с помощью сценария data/ImmunoPDB.py от ANARCI. Вот пример дизайна CDR-H3 для PDB 1ic7:
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].
Некоторые коды заимствованы из существующих репозиториев: