Le réinvent est un outil de conception moléculaire pour la conception de novo, le saut d'échafaudage, le remplacement du groupe R, la conception de liens, l'optimisation des molécules et d'autres tâches de conception de petites molécules. Reinven utilise un algorithme d'apprentissage de renforcement (RL) pour générer des molécules optimisées conformes à un profil de propriété défini par l'utilisateur défini comme un score multi-composantes. Le transfert d'apprentissage (TL) peut être utilisé pour créer ou pré-entraîner un modèle qui génère des molécules plus près d'un ensemble de molécules d'entrée.
Un article décrivant le logiciel a été publié comme un accès ouvert dans le Journal of Cheminformatics: Reinvent 4: conception moderne de molécules génératrices axées sur l'IA. Voir les auteurs.md pour les références aux articles précédents.
Reinven est en cours de développement sur Linux et prend en charge le GPU et le CPU. La version Linux est entièrement validée. Réinventer sur Windows et MacOSX prend en charge GPU et CPU, mais n'est testé que partiellement sur ces plates-formes et donc la prise en charge est limitée.
Le code est écrit dans Python 3 (> = 3.10). La liste des dépendances peut être trouvée dans le référentiel (voir également l'installation ci-dessous).
Un GPU n'est pas strictement nécessaire mais fortement recommandé pour des raisons de performance, en particulier pour l'apprentissage du transfert et la formation des modèles. L'apprentissage par renforcement (RL) nécessite le calcul des scores où la plupart des composants de notation s'exécutent sur le CPU. Ainsi, un GPU est moins important pour RL (selon le temps passé sur le processeur).
Notez que si aucun GPU n'est installé dans votre ordinateur, le code s'exécutera automatiquement sur le CPU. Reinven prend en charge les GPU NVIDIA et également certains GPU AMD. Pour la plupart des tâches de conception, une mémoire d'environ 8 GIB pour la mémoire principale du CPU et la mémoire GPU est suffisante.
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 pour macOsx.pip install --no-deps .reinvent de script à votre chemin. reinvent --helpReinvent est un outil de ligne de commande et fonctionne principalement comme suit
reinvent -l sampling.log sampling.toml Cela écrit des informations de journalisation dans le fichier sampling.log . Si vous souhaitez écrire ceci à l'écran, omettez la partie -l sampling.log . sampling.toml est le fichier de configuration. Le format utilisateur principal est TOML car il a tendance à être plus convivial. JSON peut également être utilisé, ajouter -f json , mais un éditeur spécialisé est recommandé car le format est très sensible aux modifications mineures.
Les exemples de fichiers de configuration pour tous les modes d'exécution sont situés dans config/toml dans le référentiel et les chemins de fichier dans ces fichiers devraient être ajustés à votre installation locale. En particulier, les modèles antérieurs prêts à l'emploi sont situés dans priors et vous choisissez un modèle et le mode d'exécution approprié en fonction du problème de recherche que vous essayez de résoudre. Il existe des informations supplémentaires dans config/toml dans plusieurs fichiers *.md avec des instructions sur la façon de configurer le fichier Toml. Les priors internes peuvent être référencés avec une notation de points (voir reinvent/prior_registry.py ).
Jupyter Des instructions de base peuvent être trouvées dans les commentaires des exemples de configuration dans config/toml .
Les cahiers sont fournis dans les notebooks/ répertoire. Veuillez noter que nous fournissons les ordinateurs portables au format JupyText "Script Light". Pour travailler avec les scripts légers, vous devrez installer JupyText. Quelques autres packages seront également utiles.
pip install jupytext mols2grid seaborn Les fichiers Python dans notebooks/ peuvent ensuite être convertis en un cahier, par exemple
jupytext -o Reinvent_demo.ipynb Reinvent_demo.pyMettez à jour les fichiers de verrouillage avec Pip-tools (s'il vous plaît, ne modifiez pas les fichiers manuellement):
pip-compile --extra-index-url=https://download.pytorch.org/whl/cu121 --extra-index-url=https://pypi.anaconda.org/OpenEye/simple --resolver=backtracking pyproject.toml Pour mettre à jour un seul package, utilisez pip-compile --upgrade-package somepackage (voir la documentation pour Pip-Tools).
Le sous-système de notation utilise un mécanisme de plugin simple (packages d'espace de noms natifs Python). Si vous souhaitez écrire votre propre plugin, suivez les instructions ci-dessous. Il n'est pas nécessaire de toucher aucun du code de réinvente. Le référentiel public contient un répertoire contrib avec quelques exemples utiles.
/top/dir/somewhere/reinvent_plugins/components où /top/dir/somewhere est un emplacement pratique pour vous.__init__.py dans reinvent_plugins ou components car cela briserait le mécanisme. Il est bon de créer des packages normaux dans components tant que vous importez correctement.comp_* dans reinvent_plugins/components . Les fichiers avec différents noms seront ignorés, c'est-à-dire non importés. Le répertoire sera recherché récursivement pour structurer votre code au besoin, mais les noms de répertoire / package doivent être uniques./top/dir/somewhere à la variable d'environnement PYTHONPATH ou utilisez tout autre mécanisme pour étendre sys.path . Ceci est principalement pour les développeurs et les administrateurs / utilisateurs qui souhaitent s'assurer que l'installation fonctionne. Les informations ici ne sont pas pertinentes pour l'utilisation pratique du réinvente. Veuillez vous référer à l'utilisation de base pour des instructions sur la façon d'utiliser la commande reinvent .
Le projet Reinvent utilise le cadre pytest pour ses tests. Avant de les exécuter, vous devez d'abord créer un fichier de configuration pour les tests.
Dans le répertoire du projet, créez un fichier config.json dans le répertoire configs/ . Vous pouvez utiliser l'exemple de configuration example.config.json comme base. Assurez-vous de définir MAIN_TEST_PATH dans un répertoire inexistant. C'est là que les fichiers temporaires seront écrits lors des tests. S'il est défini sur un répertoire existant, ce répertoire sera supprimé une fois les tests terminés.
Certains tests nécessitent une licence OpenEye propriétaire. Vous devez configurer quelques éléments pour faire lire les tests de votre licence. Le moyen simple consiste à simplement définir la variable d'environnement OE_LICENSE sur le chemin du fichier contenant la licence.
Une fois que vous avez une configuration et que votre licence peut être lue, vous pouvez exécuter les tests.
$ pytest tests --json /path/to/config.json --device cuda