Ce référentiel contient les codes de notre article Conception conditionnelle d'anticorps en tant que traduction graphique équivariante 3D. MEAN est l'abréviation de Multi -channel E quivariant A ttention Network proposée dans notre article.
nous avons préparé le script pour la configuration de l'environnement dans scripts/setup.sh, veuillez y installer les dépendances avec bash scripts/setup.sh
avant d'exécuter notre code.
Nous avons fourni les données récapitulatives utilisées dans notre article à partir de SAbDab, RAbD, SKEMPI_V2 dans le dossier des résumés. Veuillez télécharger toutes les données de structure depuis la page de téléchargement de SAbDab. Étant donné que le SAbDab est mis à jour chaque semaine, vous pouvez également télécharger le fichier récapitulatif le plus récent depuis son site officiel. Les instructions suivantes supposeront que les données de structure renumérotées par imgt se trouvent dans le dossier all_structures/imgt .
Nous avons fourni les scripts shell pour différentes procédures des expériences, qui se trouvent soit dans le dossier scripts, soit dans le dossier racine de notre dépôt. Pour les scripts dans scripts , vous pouvez les exécuter sans arguments pour voir leurs astuces d'utilisation, qui seront également illustrées dans README plus tard. Une chose qui pourrait nécessiter une explication est le paramètre mode qui prend la valeur de 100 ou 111. 100 signifie que seule la chaîne lourde est utilisée dans le contexte, et 111 signifie que la chaîne lourde, la chaîne légère ainsi que l'épitope sont pris en compte dans le contexte. Le dernier est le réglage complet de la conception du CDR de liaison à l'antigène, tandis que le premier est uniquement destiné à la comparaison avec RefineGNN. <model type> dans les arguments spécifie uniquement le préfixe du répertoire pour enregistrer/charger les points de contrôle, nous utilisons moyenne dans les sections suivantes. Veuillez essayer d'utiliser des répertoires absolus lorsque vous transmettez des arguments aux scripts si vous rencontrez des problèmes concernant les chemins.
Nous avons fourni les scripts pour la préparation des données, la formation et l'évaluation k-fold
voici un exemple pour évaluer notre MOYENNE :
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
En exécutant bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
, le script copiera les pdbs du résumé dans summaries/pdb , transformera le résumé au format json et générera des divisions de données 10 fois pour chaque cdr, ce qui nécessite ~ 5G d'espace. Si vous souhaitez effectuer la préparation des données dans un autre répertoire, copiez simplement le fichier de résumé là-bas et remplacez summaries/sabdab_summary.tsv par le nouveau chemin. De plus, pour chaque exécution parallèle de formation, les points de contrôle seront enregistrés dans la version 0, 1, ... Vous devez donc spécifier l' identifiant de version comme dernier argument de k_fold_eval.sh .
avant d'exécuter cette tâche, veuillez au moins exécuter les commandes de téléchargement du résumé json de SAbDab dans scripts/prepare_data_kfold.sh (lignes 23 à 31). Nous supposerons que le fichier json se trouve dans summaries/sabdab_all.json.
Exemple:
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
Nous avons également fourni le point de contrôle entraîné utilisé dans notre article à l'adresse checkpoints/ckpt/rabd_cdrh3_mean.ckpt. Vous pouvez l'utiliser pour le test en exécutant GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0 checkpoints/ckpt/rabd_cdrh3_mean.ckpt
. Les résultats seront enregistrés dans le dossier nommé results sous le même répertoire que le point de contrôle.
avant d'exécuter cette tâche, veuillez au moins exécuter les commandes de téléchargement du résumé json de SAbDab dans scripts/prepare_data_kfold.sh (lignes 23 à 31). Nous supposerons que le fichier json se trouve dans summaries/sabdab_all.json.
Exemple:
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
Nous avons également fourni le point de contrôle après le réglage fin de l'ITA à checkpoints/ckpt/opt_cdrh3_mean.ckpt. Vous pouvez l'utiliser directement pour l'inférence en exécutant GPU=0 DATA_DIR=summaries bash ita_generate.sh checkpoints/ckpt/opt_cdrh3_mean.ckpt
. Ce script générera 100 candidats optimisés pour chaque anticorps dans summaries/skempi_all.json et rapportera le top1 en termes de ddg prédit. Les pdbs des candidats optimisés seront situés dans le même répertoire du point de contrôle.
Nous fournissons également le script pour la conception/optimisation d'un CDR unique sur scritps/design.py. Le script nécessite une pdb d'entrée contenant la chaîne lourde, la chaîne légère et l'antigène. La pdb doit être renumérotée à l'aide du système IMGT à l'avance, ce qui peut être réalisé par le script sur data/ImmunoPDB.py d'ANARCI. Voici un exemple de conception CDR-H3 pour le 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
Le pdb généré ainsi qu'un résumé de la séquence CDR-H3 seront enregistrés dans ./results. Le point de contrôle par défaut utilisé dans le script est checkpoints/ckpt/rabd_cdrh3_mean.ckpt. Vous pouvez passer votre propre point de contrôle par l'argument --ckpt path/to/your/checkpoint
(par exemple, utilisez opt_cdrh3_mean.ckpt pour l'optimisation du CDR)
De plus, le script est capable d'accepter plusieurs pdbs comme entrées, par exemple :
python ./scripts/design.py
--pdb pdb1 pdb2 ...
--heavy_chain Hchain1 Hchain2 ...
--light_chain Lchain1 Lchain2 ...
Merci de votre intérêt pour notre travail !
N'hésitez pas à nous poser des questions sur les algorithmes, les codes, ainsi que sur les problèmes rencontrés lors de leur exécution afin que nous puissions le rendre plus clair et meilleur. Vous pouvez soit créer un problème dans le dépôt github, soit nous contacter à [email protected].
Certains codes sont empruntés à des dépôts existants :