Dieses Repo enthält die Codes für unseren Artikel „Conditional Antibody Design as 3D Equivariante Graph Translation“. MEAN ist die Abkürzung für das in unserem Artikel vorgeschlagene Multi -channel E quivariant A ttention Network .
Wir haben das Skript für die Umgebungseinrichtung in scripts/setup.sh vorbereitet. Bitte installieren Sie die darin enthaltenen Abhängigkeiten mit bash scripts/setup.sh
, bevor Sie unseren Code ausführen.
Wir haben die in unserem Artikel verwendeten Zusammenfassungsdaten von SAbDab, RAbD, SKEMPI_V2 im Zusammenfassungsordner bereitgestellt. Bitte laden Sie alle Strukturdaten von der Download-Seite von SAbDab herunter. Da SAbDab wöchentlich aktualisiert wird, können Sie die neueste Zusammenfassungsdatei auch von der offiziellen Website herunterladen. Bei den folgenden Anweisungen wird davon ausgegangen, dass sich die durch imgt neu nummerierten Strukturdaten im Ordner all_structures/imgt befinden.
Für verschiedene Vorgehensweisen der Experimente haben wir die Shell-Skripte bereitgestellt, die sich entweder im Ordner scripts oder im Root-Ordner unseres Repos befinden. Für Skripte in scripts können Sie sie ohne Argumente ausführen, um ihre Verwendungshinweise anzuzeigen, die später auch in der README-Datei erläutert werden. Eine Sache, die möglicherweise einer Erklärung bedarf, ist der Modusparameter, der entweder den Wert 100 oder 111 annimmt. 100 bedeutet, dass im Kontext nur die schwere Kette verwendet wird, und 111 bedeutet, dass im Kontext sowohl die schwere Kette, die leichte Kette als auch das Epitop berücksichtigt werden. Letzteres ist die vollständige Einstellung des Antigen-bindenden CDR-Designs, während das erste nur zum Vergleich mit RefineGNN dient. <Modelltyp> in den Argumenten gibt nur das Präfix des Verzeichnisses zum Speichern/Laden der Prüfpunkte an. In den folgenden Abschnitten verwenden wir „mean“ . Versuchen Sie bitte, bei der Übergabe von Argumenten an die Skripte absolute Verzeichnisse zu verwenden, wenn Probleme mit Pfaden auftreten.
Wir haben die Skripte für die Datenaufbereitung, das K-Fold-Training und die Auswertung bereitgestellt
Hier ist ein Beispiel für die Bewertung unseres Mittelwerts:
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
Durch Ausführen bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
kopiert das Skript die pdbs in der Zusammenfassung nach summarys/pdb , wandelt die Zusammenfassung in das JSON-Format um und generiert 10-fache Datenaufteilungen für jedes CDR erfordert ~5G-Speicherplatz. Wenn Sie die Datenvorbereitung in einem anderen Verzeichnis durchführen möchten, kopieren Sie einfach die Zusammenfassungsdatei dorthin und ersetzen Sie „summaries/sabdab_summary.tsv“ durch den neuen Pfad. Außerdem werden die Prüfpunkte für jeden parallelen Trainingslauf in Version 0, 1, ... gespeichert. Sie müssen also die Versions-ID als letztes Argument von k_fold_eval.sh angeben.
Bevor Sie diese Aufgabe ausführen, führen Sie bitte mindestens die Befehle zum Herunterladen der JSON-Zusammenfassung von SAbDab in scripts/prepare_data_kfold.sh (Zeile 23–31) aus. Wir gehen davon aus, dass sich die JSON-Datei unter summaries/sabdab_all.json befindet.
Beispiel:
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
Wir haben auch den in unserem Artikel verwendeten trainierten Prüfpunkt unter checkpoints/ckpt/rabd_cdrh3_mean.ckpt bereitgestellt. Sie können es zum Testen verwenden, indem Sie GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0 checkpoints/ckpt/rabd_cdrh3_mean.ckpt
ausführen. Die Ergebnisse werden im Ordner „results “ im selben Verzeichnis wie der Prüfpunkt gespeichert.
Bevor Sie diese Aufgabe ausführen, führen Sie bitte mindestens die Befehle zum Herunterladen der JSON-Zusammenfassung von SAbDab in scripts/prepare_data_kfold.sh (Zeile 23–31) aus. Wir gehen davon aus, dass sich die JSON-Datei unter summaries/sabdab_all.json befindet.
Beispiel:
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
Wir haben auch den Prüfpunkt nach der ITA-Feinabstimmung unter checkpoints/ckpt/opt_cdrh3_mean.ckpt bereitgestellt. Sie können es direkt zur Inferenz verwenden, indem Sie GPU=0 DATA_DIR=summaries bash ita_generate.sh checkpoints/ckpt/opt_cdrh3_mean.ckpt
ausführen. Dieses Skript generiert 100 optimierte Kandidaten für jeden Antikörper in summaries/skempi_all.json und meldet die Top1 in Bezug auf die vorhergesagte ddg. Die PDBs der optimierten Kandidaten werden im selben Verzeichnis des Prüfpunkts gespeichert.
Wir stellen auch das Skript für das Design/die Optimierung einzelner CDRs unter scritps/design.py bereit. Das Skript erfordert eine Eingabe-PDB, die die schwere Kette, die leichte Kette und das Antigen enthält. Die PDB sollte vorab mithilfe des IMGT-Systems neu nummeriert werden, was durch das Skript unter data/ImmunoPDB.py von ANARCI erreicht werden kann. Hier ist ein Beispiel für das CDR-H3-Design für die 1ic7-PDB:
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
Die generierte PDF-Datei sowie eine Zusammenfassung der CDR-H3-Sequenz werden unter ./results gespeichert. Der im Skript verwendete Standardprüfpunkt ist checkpoints/ckpt/rabd_cdrh3_mean.ckpt. Sie können Ihren eigenen Prüfpunkt mit dem Argument --ckpt path/to/your/checkpoint
übergeben (verwenden Sie z. B. opt_cdrh3_mean.ckpt für die CDR-Optimierung).
Darüber hinaus ist das Skript in der Lage, mehrere PDBs als Eingaben zu berücksichtigen, zum Beispiel:
python ./scripts/design.py
--pdb pdb1 pdb2 ...
--heavy_chain Hchain1 Hchain2 ...
--light_chain Lchain1 Lchain2 ...
Vielen Dank für Ihr Interesse an unserer Arbeit!
Bitte zögern Sie nicht, Fragen zu den Algorithmen und Codes sowie zu Problemen bei deren Ausführung zu stellen, damit wir es klarer und besser machen können. Sie können entweder ein Problem im Github-Repo erstellen oder uns unter [email protected] kontaktieren.
Einige Codes sind von bestehenden Repos entlehnt: