REINVENT 4
描述
REINVENT 是一款分子设计工具,用于从头设计、骨架跃迁、R 基团替换、连接基设计、分子优化和其他小分子设计任务。REINVENT 使用强化学习 (RL) 算法生成优化的分子,符合用户定义的多组分评分的属性配置文件。转移学习 (TL) 可用于创建或预训练模型,生成更接近一组输入分子的分子。
描述该软件的论文已在 Journal of Cheminformatics 上以开放获取方式发表: Reinvent 4: 现代 AI 驱动的生成分子设计。 请参阅 AUTHORS.md 了解之前论文的参考文献。
要求
REINVENT 在 Linux 上开发,支持 GPU 和 CPU。Linux 版本经过全面验证。Windows 和 MacOSX 上的 REINVENT 支持 GPU 和 CPU,但仅在这些平台上进行了部分测试,因此支持有限。
代码使用 Python 3(>= 3.10)编写。依赖项列表可在存储库中找到(另请参阅下面的安装部分)。
GPU 不是严格必需的,但出于性能原因强烈推荐使用,尤其是对于转移学习和模型训练。强化学习 (RL) 需要计算分数,其中大多数评分组件在 CPU 上运行。因此,GPU 对 RL 的重要性较小(取决于在 CPU 上花费的时间)。
请注意,如果您的计算机中没有安装 GPU,代码将自动在 CPU 上运行。REINVENT 支持 NVIDIA GPU 以及部分 AMD GPU。对于大多数设计任务,约 8 GiB 的 CPU 主内存和 GPU 内存就足够了。
安装
- 克隆此 Git 存储库。
- 安装兼容版本的 Python,例如使用 Conda(其他虚拟环境如 Docker、pyenv 或系统包管理器也可以)。
conda create --name reinvent4 python=3.10 conda activate reinvent4
- 切换到存储库目录并从锁定文件安装依赖项:
pip install -r requirements-linux-64.lock
- 可选:如果您想在 Linux 上使用 AMD GPU,需要在第 3 点安装依赖项之后手动安装 ROCm PyTorch 版本,例如
pip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 --index-url https://download.pytorch.org/whl/rocm5.7
- 可选:MacOSX 使用
requirements-macOS.lock
要求文件。
- 可选:如果您想在 Linux 上使用 AMD GPU,需要在第 3 点安装依赖项之后手动安装 ROCm PyTorch 版本,例如
- 安装工具。依赖项已在上一步安装,因此无需再次安装(标志
--no-deps
)。如果要以可编辑模式安装(对代码的更改自动可用),在点号前添加 -e。pip install --no-deps .
- 测试工具。安装程序已将脚本
reinvent
添加到您的 PATH 中。reinvent --help
基本用法
REINVENT 是一个命令行工具,主要按以下方式工作
reinvent -l sampling.log sampling.toml
这会将日志信息写入文件 sampling.log
。如果您希望将其写入屏幕,请省略 -l sampling.log
部分。sampling.toml
是配置文件。主要用户格式是 TOML,因为它往往更易于使用。也可以使用 JSON,添加 -f json
,但建议使用专门的编辑器,因为该格式对微小的更改非常敏感。
所有运行模式的示例配置文件位于存储库中的 config/toml
中,这些文件中的文件路径需要根据您的本地安装进行调整。特别是,现成的先验模型位于 priors
中,您需要根据要解决的研究问题选择适当的模型和运行模式。config/toml
中的几个 *.md
文件中有关于如何配置 TOML 文件的额外信息。内部先验可以使用点表示法引用(参见 reinvent/prior_registry.py
)。
教程 / Jupyter
笔记本
基本说明可以在 config/toml
中的配置示例注释中找到。
笔记本位于 notebook/
目录中。请注意,我们以 jupytext "轻脚本"格式提供笔记本。要使用轻脚本,您需要安装 jupytext。一些其他包也会派上用场。
pip install jupytext mols2grid seaborn
然后可以将 notebook/
中的 Python 文件转换为笔记本,例如
jupytext -o Reinvent_demo.ipynb Reinvent_demo.py
更新依赖
使用pip-tools更新锁定文件(请不要手动编辑文件):
pip-compile --extra-index-url=https://download.pytorch.org/whl/cu121 --extra-index-url=https://pypi.anaconda.org/OpenEye/simple --resolver=backtracking pyproject.toml
要更新单个包,请使用 pip-compile --upgrade-package somepackage
(查看pip-tools文档了解详情)。
评分插件
评分子系统使用简单的插件机制(Python原生命名空间包)。如果你 想编写自己的插件,请按照以下说明操作。 不需要修改任何REINVENT代码。公共 仓库包含一个contrib目录,里面有一些有用的示例。
- 创建
/top/dir/somewhere/reinvent_plugins/components
,其中/top/dir/somewhere
是你方便的位置。 - 不要在
reinvent_plugins
或components
中放置__init__.py
,因为这会破坏机制。在components
中创建普通包是可以的,只要你正确导入它们即可。 - 将文件名以
comp_*
开头的文件放入reinvent_plugins/components
。不同名称的文件将被忽略,即不会导入。目录将被递归搜索,因此根据需要构建你的代码,但目录/包名称必须是唯一的。 - 用 @add_tag 装饰器标记该文件中的评分组件类。可以在同一个 comp_ 文件中添加多个组件类。参见现有代码。
- 在同一文件中最多标记一个参数数据类,参见现有代码。这是可选的。
- 将
/top/dir/somewhere
设置或添加到PYTHONPATH
环境变量中,或使用任何其他机制扩展sys.path
。 - REINVENT现在应该能自动识别评分组件。
单元和集成测试
这主要面向开发人员和希望确保安装正常工作的管理员/用户。这里的信息与
REINVENT的实际使用无关。有关如何使用 reinvent
命令的说明,请参阅 基本用法 。
REINVENT项目使用 pytest
框架进行测试。在运行测试之前,你首先要创建一个测试配置文件。
在项目目录中,在 configs/
目录下创建一个 config.json
文件。
你可以使用示例配置 example.config.json
作为基础。确保
将 MAIN_TEST_PATH
设置为不存在的目录。测试期间临时文件将写入该目录。如果设置为现有目录,
该目录将在测试完成后被删除。
某些测试需要专有的OpenEye许可证。你需要设置一些
事项以使测试读取你的许可证。简单的方法是设置
OE_LICENSE
环境变量为包含许可证的文件路径。
一旦你有了配置并且可以读取许可证,就可以运行测试了。
$ pytest tests --json /path/to/config.json --device cuda