Reinvent es una herramienta de diseño molecular para el diseño de novo, el lúpulo andamio, el reemplazo del grupo R, el diseño del enlazador, la optimización de la molécula y otras tareas de diseño de moléculas pequeñas. Reinvent utiliza un algoritmo de aprendizaje de refuerzo (RL) para generar moléculas optimizadas que cumplan con un perfil de propiedad definido por el usuario definido como una puntuación de múltiples componentes. El aprendizaje de transferencia (TL) se puede utilizar para crear o pre-entrenar un modelo que genera moléculas más cercanas a un conjunto de moléculas de entrada.
Un artículo que describe el software se ha publicado como acceso abierto en el Journal of Cheminformatics: Reinvent 4: diseño de moléculas generativas modernas con IA. Ver Autors.md para referencias a documentos anteriores.
Reinvent se está desarrollando en Linux y admite GPU y CPU. La versión de Linux está completamente validada. Reinvent en Windows y MacOSX admite GPU y CPU, pero solo se prueba parcialmente en estas plataformas y, por lo tanto, el soporte es limitado.
El código está escrito en Python 3 (> = 3.10). La lista de dependencias se puede encontrar en el repositorio (ver también la instalación a continuación).
Una GPU no es estrictamente necesaria, pero es muy recomendable por razones de rendimiento, especialmente para el aprendizaje de transferencia y la capacitación de modelos. El aprendizaje de refuerzo (RL) requiere el cálculo de puntajes donde la mayoría de los componentes de puntuación se ejecutan en la CPU. Por lo tanto, una GPU es menos importante para RL (dependiendo de cuánto tiempo se dedique a la CPU).
Tenga en cuenta que si no se instala GPU en su computadora, el código se ejecutará en la CPU automáticamente. Reinvent admite GPU NVIDIA y también algunas GPU AMD. Para la mayoría de las tareas de diseño, un recuerdo de aproximadamente 8 GIB tanto para la memoria principal de la CPU como para la memoria GPU es suficiente.
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 a su ruta. reinvent --helpReinvent es una herramienta de línea de comando y funciona principalmente de la siguiente manera
reinvent -l sampling.log sampling.toml Esto escribe información de registro en el archivo sampling.log . Si desea escribir esto en la pantalla, deje de lado la parte -l sampling.log . sampling.toml es el archivo de configuración. El formato de usuario principal es Toml, ya que tiende a ser más amigable. JSON también se puede usar, Agregar -f json , pero se recomienda un editor especializado ya que el formato es muy sensible a los cambios menores.
Los archivos de configuración de muestra para todos los modos de ejecución se encuentran en config/toml en el repositorio y las rutas de archivos en estos archivos deberían ajustarse a su instalación local. En particular, los modelos anteriores preparados se encuentran en priors y usted elegiría un modelo y el modo de ejecución apropiado dependiendo del problema de investigación que esté tratando de abordar. Hay información adicional en config/toml en varios archivos *.md con instrucciones sobre cómo configurar el archivo TOML. Se puede hacer referencia a los antecedentes internos con una notación DOT (ver reinvent/prior_registry.py ).
Jupyter Las instrucciones básicas se pueden encontrar en los comentarios en los ejemplos de configuración en config/toml .
Los cuadernos se proporcionan en los notebooks/ directorio. Tenga en cuenta que proporcionamos los cuadernos en formato JupyText "Script". Para trabajar con los scripts de luz, deberá instalar JupyText. Algunos otros paquetes también serán útiles.
pip install jupytext mols2grid seaborn Los archivos de Python en notebooks/ pueden convertirse en un cuaderno, por ejemplo,
jupytext -o Reinvent_demo.ipynb Reinvent_demo.pyActualice los archivos de bloqueo con las herramientas PIP (por favor, no edite los archivos 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 actualizar un solo paquete, use pip-compile --upgrade-package somepackage (consulte la documentación para las herramientas PIP).
El subsistema de puntuación utiliza un mecanismo de complemento simple (paquetes de espacio de nombres nativos de Python). Si desea escribir su propio complemento, siga las instrucciones a continuación. No hay necesidad de tocar ninguno del código Reinvent. El repositorio público contiene un directorio Contrib con algunos ejemplos útiles.
/top/dir/somewhere/reinvent_plugins/components donde /top/dir/somewhere es una ubicación conveniente para usted.__init__.py en reinvent_plugins o components , ya que esto rompería el mecanismo. Está bien crear paquetes normales dentro de components siempre que los importe correctamente.comp_* en reinvent_plugins/components . Los archivos con diferentes nombres serán ignorados, es decir, no importados. Se buscará el directorio de manera recursiva para estructurar su código según sea necesario, pero los nombres de directorio/paquetes deben ser únicos./top/dir/somewhere a la variable de entorno PYTHONPATH o use cualquier otro mecanismo para extender sys.path . Esto es principalmente para desarrolladores y administradores/usuarios que desean asegurarse de que la instalación funcione. La información aquí no es relevante para el uso práctico de Reinvent. Consulte el uso básico para obtener instrucciones sobre cómo usar el comando reinvent .
El proyecto Reinvent utiliza el marco pytest para sus pruebas. Antes de ejecutarlos, primero debe crear un archivo de configuración para las pruebas.
En el directorio del proyecto, cree un archivo config.json en el directorio configs/ . Puede usar el ejemplo de configuración example.config.json como base. Asegúrese de configurar MAIN_TEST_PATH en un directorio inexistente. Ahí es donde se escribirán archivos temporales durante las pruebas. Si se establece en un directorio existente, ese directorio se eliminará una vez que las pruebas hayan terminado.
Algunas pruebas requieren una licencia propietaria de OpenEye. Debe configurar algunas cosas para que las pruebas lean su licencia. La forma simple es simplemente establecer la variable de entorno OE_LICENSE en la ruta del archivo que contiene la licencia.
Una vez que tenga una configuración y su licencia se puede leer, puede ejecutar las pruebas.
$ pytest tests --json /path/to/config.json --device cuda