Reinvent é uma ferramenta de design molecular para design de novo, salto de andaime, substituição do grupo R, design de ligante, otimização de moléculas e outras tarefas de design de pequenas moléculas. A Reinvent usa um algoritmo de aprendizado de reforço (RL) para gerar moléculas otimizadas compatíveis com um perfil de propriedade definido pelo usuário definido como uma pontuação multi-componente. O aprendizado de transferência (TL) pode ser usado para criar ou pré-treinar um modelo que gera moléculas mais próximas de um conjunto de moléculas de entrada.
Um artigo que descreve o software foi publicado como acesso aberto no Journal of Cheminformatics: Reinvent 4: design generativo moderno de IA. Consulte Authors.MD para referências a artigos anteriores.
Reinvent está sendo desenvolvido no Linux e suporta GPU e CPU. A versão Linux é totalmente validada. Reinventar no Windows e o Macosx suporta GPU e CPU, mas é testado apenas parcialmente nessas plataformas e, portanto, o suporte é limitado.
O código é escrito no Python 3 (> = 3.10). A lista de dependências pode ser encontrada no repositório (consulte também a instalação abaixo).
Uma GPU não é estritamente necessária, mas é fortemente recomendada por razões de desempenho, especialmente para aprendizado de transferência e treinamento de modelos. A aprendizagem de reforço (RL) requer o cálculo das pontuações nas quais a maioria dos componentes de pontuação é executada na CPU. Assim, uma GPU é menos importante para RL (dependendo de quanto tempo é gasto na CPU).
Observe que se nenhuma GPU estiver instalada no seu computador, o código será executado automaticamente na CPU. A Reinvent suporta as GPUs NVIDIA e também algumas GPUs da AMD. Para a maioria das tarefas de design, é suficiente uma memória de cerca de 8 GIB para a memória principal da CPU e a memória da GPU.
conda create --name reinvent4 python=3.10
conda activate reinvent4pip install -r requirements-linux-64.lockpip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 --index-url https://download.pytorch.org/whl/rocm5.7requirements-macOS.lock para Macosx.pip install --no-deps .reinvent ao seu caminho. reinvent --helpReinvent é uma ferramenta de linha de comando e funciona principalmente como segue
reinvent -l sampling.log sampling.toml Isso grava informações de registro no arquivo sampling.log . Se você deseja escrever isso na tela, deixe de fora a parte -l sampling.log Part. sampling.toml é o arquivo de configuração. O formato principal do usuário é Toml, pois tende a ser mais amigável. O JSON também pode ser usado, add -f json , mas um editor especializado é recomendado, pois o formato é muito sensível a pequenas alterações.
Os arquivos de configuração de amostra para todos os modos de execução estão localizados em config/toml nos caminhos do repositório e do arquivo nesses arquivos, precisariam ser ajustados à sua instalação local. Em particular, os modelos anteriores prontos estão localizados em priors e você escolheria um modelo e o modo de execução apropriado, dependendo do problema de pesquisa que você está tentando abordar. Há informações adicionais no config/toml em vários arquivos *.md com instruções sobre como configurar o arquivo Toml. Os anteriores internos podem ser referenciados com uma notação de pontos (consulte reinvent/prior_registry.py ).
Jupyter As instruções básicas podem ser encontradas nos comentários nos exemplos de configuração em config/toml .
Os notebooks são fornecidos nos notebooks/ diretório. Observe que fornecemos os notebooks no formato JupyText "Light Script". Para trabalhar com os scripts leves, você precisará instalar o JupyText. Alguns outros pacotes também serão úteis.
pip install jupytext mols2grid seaborn Os arquivos python nos notebooks/ podem ser convertidos em um notebook, por exemplo
jupytext -o Reinvent_demo.ipynb Reinvent_demo.pyAtualize os arquivos de bloqueio com o Pip-Tools (por favor, não edite os arquivos manualmente):
pip-compile --extra-index-url=https://download.pytorch.org/whl/cu121 --extra-index-url=https://pypi.anaconda.org/OpenEye/simple --resolver=backtracking pyproject.toml Para atualizar um único pacote, use pip-compile --upgrade-package somepackage (consulte a documentação para o PiP-Tools).
O subsistema de pontuação usa um mecanismo de plug -in simples (pacotes de nomes nativos do Python). Se você deseja escrever seu próprio plug -in, siga as instruções abaixo. Não há necessidade de tocar em nenhum código de reinventar. O repositório público contém um diretório contribuinte com alguns exemplos úteis.
/top/dir/somewhere/reinvent_plugins/components Where /top/dir/somewhere é um local conveniente para você.__init__.py em reinvent_plugins ou components , pois isso quebraria o mecanismo. É bom criar pacotes normais dentro components , desde que você os importem corretamente.comp_* em reinvent_plugins/components . Arquivos com nomes diferentes serão ignorados, ou seja, não importados. O diretório será pesquisado recursivamente, para estruturar seu código conforme necessário, mas os nomes de diretório/pacotes devem ser únicos./top/dir/somewhere para a variável de ambiente PYTHONPATH ou use qualquer outro mecanismo para estender sys.path . Isso é principalmente para desenvolvedores e administradores/usuários que desejam garantir que a instalação funcione. As informações aqui não são relevantes para o uso prático de reinventar. Consulte o uso básico para obter instruções sobre como usar o comando reinvent .
O projeto Reinvent usa a estrutura pytest para seus testes. Antes de executá -los, você primeiro precisa criar um arquivo de configuração para os testes.
No diretório do projeto, crie um arquivo config.json no diretório configs/ . Você pode usar o exemplo de configuração example.config.json como uma base. Certifique-se de definir MAIN_TEST_PATH como um diretório inexistente. É aí que os arquivos temporários serão gravados durante os testes. Se estiver definido como um diretório existente, esse diretório será removido assim que os testes tiverem concluído.
Alguns testes requerem uma licença proprietária do OpenEye. Você precisa configurar algumas coisas para fazer com que os testes leiam sua licença. A maneira simples é apenas definir a variável de ambiente OE_LICENSE para o caminho do arquivo que contém a licença.
Depois de ter uma configuração e sua licença pode ser lida, você pode executar os testes.
$ pytest tests --json /path/to/config.json --device cuda