このリポジトリには、論文「3D 等変グラフ変換としての条件付き抗体設計」のコードが含まれています。 MEAN は、私たちの論文で提案したMulti -channel Equivariant Attention Networkの略称です。
scripts/setup.sh に環境セットアップ用のスクリプトを用意しました。コードを実行する前に、 bash scripts/setup.sh
を使用して依存関係をインストールしてください。
論文で使用したサマリーデータはSAbDab、RAbD、SKEMPI_V2からサマリーフォルダーに提供されています。すべての構造データはSAbDabのダウンロードページからダウンロードしてください。 SAbDab は毎週更新されるため、公式 Web サイトから最新の概要ファイルをダウンロードすることもできます。次の手順では、 imgt によって番号が付け直された構造データがフォルダーall_structs/imgtにあることを前提としています。
実験のさまざまな手順に対応するシェル スクリプトが用意されています。これらはリポジトリのスクリプトフォルダーまたはルート フォルダーにあります。 scripts内のスクリプトの場合、引数なしでスクリプトを実行すると、その使用方法のヒントを確認できます。これについては、後の README にも説明されています。説明が必要な点の 1 つは、100 または 111 のいずれかの値を取るモード パラメーターです。100 はコンテキスト内で重鎖のみが使用されることを意味し、 111 はコンテキスト内で重鎖、軽鎖、およびエピトープが考慮されることを意味します。後者は抗原結合 CDR 設計の完全な設定ですが、最初のものは RefineGNN との比較のみを目的としています。引数の <model type> は、チェックポイントを保存/ロードするディレクトリのプレフィックスのみを指定します。次のセクションでは、意味を使用します。パスに関する問題が発生した場合は、スクリプトに引数を渡すときに絶対ディレクトリを使用してみてください。
データ準備、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 形式に変換し、cdr ごとに 10 分割のデータ分割を生成します。約 5G のスペースが必要です。別のディレクトリでデータの準備を行う場合は、そこに概要ファイルをコピーし、 summaries/sabdab_summary.tsv を新しいパスに置き換えます。また、トレーニングの並列実行ごとに、チェックポイントはバージョン 0、1、... で保存されるため、 k_fold_eval.shの最後の引数としてバージョン IDを指定する必要があります。
このタスクを実行する前に、少なくとも scripts/prepare_data_kfold.sh で SAbDab の json 概要をダウンロードするコマンドを実行してください (行 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という名前のフォルダーに保存されます。
このタスクを実行する前に、少なくとも scripts/prepare_data_kfold.sh で SAbDab の json 概要をダウンロードするコマンドを実行してください (行 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
実行することで、推論に直接使用できます。このスクリプトは、summaries/skempi_all.json 内の各抗体に対して 100 個の最適化された候補を生成し、予測 ddg のトップ 1 をレポートします。最適化された候補の pdb は、チェックポイントと同じディレクトリに配置されます。
単一 CDR の設計/最適化のためのスクリプトも scritps/design.py で提供しています。このスクリプトには、重鎖、軽鎖、および抗原を含む入力 pdb が必要です。 pdb は、IMGT システムを使用して事前に番号を付け直す必要があります。これは、ANARCI の 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
を使用して独自のチェックポイントを渡すことができます (たとえば、CDR 最適化には opt_cdrh3_mean.ckpt を使用します)。
さらに、スクリプトは入力として複数の pdb に対応できます。次に例を示します。
python ./scripts/design.py
--pdb pdb1 pdb2 ...
--heavy_chain Hchain1 Hchain2 ...
--light_chain Lchain1 Lchain2 ...
私たちの仕事にご興味をお持ちいただきありがとうございます。
アルゴリズム、コード、およびそれらを実行する際に発生する問題についての質問があれば、よりわかりやすく改善するためにお気軽にお問い合わせください。 github リポジトリで問題を作成するか、[email protected] までご連絡ください。
一部のコードは既存のリポジトリから借用しています。