Este repositório contém os códigos para nosso artigo Conditional Antibody Design as 3D Equivariant Graph Translation. MEAN é a abreviatura de Rede de Atenção Equivariante Multicanal proposta em nosso artigo.
preparamos o script para configuração do ambiente em scripts/setup.sh, instale as dependências nele com bash scripts/setup.sh
antes de executar nosso código.
Fornecemos os dados resumidos usados em nosso artigo do SAbDab, RAbD, SKEMPI_V2 na pasta de resumos. Baixe todos os dados de estrutura da página de download do SAbDab. Como o SAbDab é atualizado semanalmente, você também pode baixar o arquivo de resumo mais recente em seu site oficial. As instruções a seguir irão supor que os dados da estrutura renumerados por imgt estão localizados na pasta all_structures/imgt .
Fornecemos os scripts de shell para diferentes procedimentos dos experimentos, que estão localizados na pasta scripts ou na pasta raiz do nosso repositório. Para scripts em scripts , você pode executá-los sem argumentos para ver suas dicas de uso, que também serão ilustradas no README posteriormente. Uma coisa que pode precisar de explicação é o parâmetro de modo que assume o valor de 100 ou 111. 100 significa que apenas a cadeia pesada é usada no contexto, e 111 significa que a cadeia pesada, a cadeia leve, bem como o epítopo são considerados no contexto. O último é a configuração completa do design de CDR de ligação ao antígeno, enquanto o primeiro é apenas para comparação com o RefineGNN. <model type> nos argumentos especifica apenas o prefixo do diretório para salvar/carregar os pontos de verificação, usamos média nas seções a seguir. Por favor, tente usar diretórios absolutos ao passar argumentos para os scripts se você encontrar problemas relacionados aos caminhos.
Fornecemos os scripts para preparação de dados, treinamento k-fold e avaliação
aqui está um exemplo para avaliar nossa MÉDIA:
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
Ao executar bash scripts/prepare_data_kfold.sh summaries/sabdab_summary.tsv all_structures/imgt
, o script copiará os pdbs no resumo para summaries/pdb , transformará o resumo para o formato json e gerará divisões de dados de 10 vezes para cada cdr, o que requer ~5G de espaço. Caso queira fazer a preparação dos dados em outro diretório, basta copiar o arquivo de resumo para lá e substituir summaries/sabdab_summary.tsv pelo novo caminho. Além disso, para cada execução paralela de treinamento, os pontos de verificação serão salvos na versão 0, 1, ... Portanto, você precisa especificar o ID da versão como o último argumento de k_fold_eval.sh .
antes de executar esta tarefa, execute pelo menos os comandos de download do resumo json do SAbDab em scripts/prepare_data_kfold.sh (linha 23-31). Suponhamos que o arquivo json esteja localizado em summaries/sabdab_all.json.
Exemplo:
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
Também fornecemos o ponto de verificação treinado usado em nosso artigo em checkpoints/ckpt/rabd_cdrh3_mean.ckpt. Você pode usá-lo para teste executando GPU=0 MODE=111 DATA_DIR=summaries/cdrh3 bash rabd_test.sh 0 checkpoints/ckpt/rabd_cdrh3_mean.ckpt
. Os resultados serão salvos na pasta chamada results no mesmo diretório do ponto de verificação.
antes de executar esta tarefa, execute pelo menos os comandos de download do resumo json do SAbDab em scripts/prepare_data_kfold.sh (linha 23-31). Suponhamos que o arquivo json esteja localizado em summaries/sabdab_all.json.
Exemplo:
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
Também fornecemos o ponto de verificação após o ajuste fino do ITA em checkpoints/ckpt/opt_cdrh3_mean.ckpt. Você pode usá-lo diretamente para inferência executando GPU=0 DATA_DIR=summaries bash ita_generate.sh checkpoints/ckpt/opt_cdrh3_mean.ckpt
. Este script irá gerar 100 candidatos otimizados para cada anticorpo em summaries/skempi_all.json e relatar o top1 em termos de ddg previsto. Os pdbs dos candidatos otimizados estarão localizados no mesmo diretório do checkpoint.
Também fornecemos o script para design/otimização de CDR único em scritps/design.py. O script requer um pdb de entrada contendo a cadeia pesada, a cadeia leve e o antígeno. O pdb deve ser renumerado previamente utilizando o sistema IMGT, o que pode ser feito pelo script em data/ImmunoPDB.py da ANARCI. Aqui está um exemplo de design CDR-H3 para o 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
O pdb gerado, bem como um resumo da sequência CDR-H3, serão salvos em ./results. O ponto de verificação padrão usado no script é checkpoints/ckpt/rabd_cdrh3_mean.ckpt. Você pode passar seu próprio ponto de verificação pelo argumento --ckpt path/to/your/checkpoint
(por exemplo, use opt_cdrh3_mean.ckpt para otimização de CDR)
Além disso, o script é capaz de acomodar vários pdbs como entradas, por exemplo:
python ./scripts/design.py
--pdb pdb1 pdb2 ...
--heavy_chain Hchain1 Hchain2 ...
--light_chain Lchain1 Lchain2 ...
Obrigado pelo seu interesse em nosso trabalho!
Fique à vontade para perguntar qualquer dúvida sobre os algoritmos, códigos, bem como problemas encontrados na execução deles para que possamos torná-los mais claros e melhores. Você pode criar um problema no repositório do github ou entrar em contato conosco pelo e-mail [email protected].
Alguns códigos são emprestados de repositórios existentes: