最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
moses:实践指南
时间:2026-09-10 17:02:01 编辑:袖梨 来源:一聚教程网
如果把moses放进候选清单,不能只看热度;它的定位是分子集 (MOSES):分子生成模型的基准平台。一旦进入日常自动化环节,输入边界、依赖和失败处理如果不清楚就很难稳定复用会直接影响交付,这也是我最关心的风险。更实际的做法是用一项范围明确的真实任务完成最小试跑,同时核对配置时间、输出质量、异常信息和维护痕迹,不要直接在关键项目上。整体来看,它适合愿意先做小范围验证并复查原始文档的团队拿来做对照测试,最终决定仍应回到真实结果和维护状态。

分子集(MOSES):分子生成模型的基准平台
深度生成模型在新分子和材料的发现中迅速流行。这些模型学习大量的分子结构并产生新的化合物。在这项工作中,我们介绍了分子集(MOSES),这是一个支持药物发现机器学习研究的基准平台。 MOSES 实现了几种流行的分子生成模型,并提供了一组指标来评估生成分子的质量和多样性。通过MOSES,我们的目标是标准化分子生成的研究,并促进新模型的共享和比较。
更多详细信息请参考论文.
如果您在研究论文中使用 MOSES,请将我们引用为
@article{10.3389/fphar.2020.565644,
title={{M}olecular {S}ets ({MOSES}): {A} {B}enchmarking {P}latform for {M}olecular {G}eneration {M}odels},
author={Polykovskiy, Daniil and Zhebrak, Alexander and Sanchez-Lengeling, Benjamin and Golovanov, Sergey and Tatanov, Oktai and Belyaev, Stanislav and Kurbanov, Rauf and Artamonov, Aleksey and Aladinskiy, Vladimir and Veselov, Mark and Kadurin, Artur and Johansson, Simon and Chen, Hongming and Nikolenko, Sergey and Aspuru-Guzik, Alan and Zhavoronkov, Alex},
journal={Frontiers in Pharmacology},
year={2020}
}
数据集
我们提出 从 ZINC 数据库中提炼出来的基准数据集。
该套装基于 ZINC Clean Leads 系列。总共包含4,591,276个分子,按分子量在250至350道尔顿范围内过滤,可旋转键数不大于7,XlogP小于或等于3.5。我们去除了含有带电原子或除 C、N、S、O、F、Cl、Br、H 之外的原子或超过 8 个原子的循环的分子。通过药物化学过滤器(MCFs)和PAINS过滤器过滤分子。
该数据集包含 1,936,962 个分子结构。为了进行实验,我们将数据集分为训练集、测试集和支架测试集,分别包含约 1.6M、176k 和 176k 个分子。支架测试集包含训练和测试集中不存在的独特 Bemis-Murcko 支架。我们使用这个集合来评估模型生成以前未观察到的支架的能力。
型号
- 字符级递归神经网络 (CharRNN)
- 变分自动编码器 (VAE)
- 对抗性自动编码器 (AAE)
- 连接树变分自动编码器 (JTN-VAE)
- 潜在生成对抗网络 (LatentGAN)
指标
除了标准的唯一性和有效性指标之外,MOSES 还提供其他指标来评估生成分子的整体质量。片段相似度(Frag)和支架相似度(Scaff)是生成集和测试集对应的片段或支架频率向量之间的余弦距离。最近邻相似度 (SNN) 是生成的分子与测试集中最近的分子的平均相似度。内部多样性 (IntDiv) 是生成分子的平均成对相似性。 Fréchet ChemNet 距离 (FCD) 测量 ChemNet 最后一层激活分布的差异。新颖性是训练集中不存在的唯一有效生成分子的一部分。
| Model | Valid (↑) | Unique@1k (↑) | Unique@10k (↑) | FCD (↓) | SNN (↑) | Frag (↑) | Scaf (↑) | IntDiv (↑) | IntDiv2 (↑) | Filters (↑) | Novelty (↑) | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Test | TestSF | Test | TestSF | Test | TestSF | Test | TestSF | ||||||||
| Train | 1.0 | 1.0 | 1.0 | 0.008 | 0.4755 | 0.6419 | 0.5859 | 1.0 | 0.9986 | 0.9907 | 0.0 | 0.8567 | 0.8508 | 1.0 | 1.0 |
| HMM | 0.076±0.0322 | 0.623±0.1224 | 0.5671±0.1424 | 24.4661±2.5251 | 25.4312±2.5599 | 0.3876±0.0107 | 0.3795±0.0107 | 0.5754±0.1224 | 0.5681±0.1218 | 0.2065±0.0481 | 0.049±0.018 | 0.8466±0.0403 | 0.8104±0.0507 | 0.9024±0.0489 | 0.9994±0.001 |
| NGram | 0.2376±0.0025 | 0.974±0.0108 | 0.9217±0.0019 | 5.5069±0.1027 | 6.2306±0.0966 | 0.5209±0.001 | 0.4997±0.0005 | 0.9846±0.0012 | 0.9815±0.0012 | 0.5302±0.0163 | 0.0977±0.0142 | 0.8738±0.0002 | 0.8644±0.0002 | 0.9582±0.001 | 0.9694±0.001 |
| Combinatorial | 1.0±0.0 | 0.9983±0.0015 | 0.9909±0.0009 | 4.2375±0.037 | 4.5113±0.0274 | 0.4514±0.0003 | 0.4388±0.0002 | 0.9912±0.0004 | 0.9904±0.0003 | 0.4445±0.0056 | 0.0865±0.0027 | 0.8732±0.0002 | 0.8666±0.0002 | 0.9557±0.0018 | 0.9878±0.0008 |
| CharRNN | 0.9748±0.0264 | 1.0±0.0 | 0.9994±0.0003 | 0.0732±0.0247 | 0.5204±0.0379 | 0.6015±0.0206 | 0.5649±0.0142 | 0.9998±0.0002 | 0.9983±0.0003 | 0.9242±0.0058 | 0.1101±0.0081 | 0.8562±0.0005 | 0.8503±0.0005 | 0.9943±0.0034 | 0.8419±0.0509 |
| AAE | 0.9368±0.0341 | 1.0±0.0 | 0.9973±0.002 | 0.5555±0.2033 | 1.0572±0.2375 | 0.6081±0.0043 | 0.5677±0.0045 | 0.991±0.0051 | 0.9905±0.0039 | 0.9022±0.0375 | 0.0789±0.009 | 0.8557±0.0031 | 0.8499±0.003 | 0.996±0.0006 | 0.7931±0.0285 |
| VAE | 0.9767±0.0012 | 1.0±0.0 | 0.9984±0.0005 | 0.099±0.0125 | 0.567±0.0338 | 0.6257±0.0005 | 0.5783±0.0008 | 0.9994±0.0001 | 0.9984±0.0003 | 0.9386±0.0021 | 0.0588±0.0095 | 0.8558±0.0004 | 0.8498±0.0004 | 0.997±0.0002 | 0.6949±0.0069 |
| JTN-VAE | 1.0±0.0 | 1.0±0.0 | 0.9996±0.0003 | 0.3954±0.0234 | 0.9382±0.0531 | 0.5477±0.0076 | 0.5194±0.007 | 0.9965±0.0003 | 0.9947±0.0002 | 0.8964±0.0039 | 0.1009±0.0105 | 0.8551±0.0034 | 0.8493±0.0035 | 0.976±0.0016 | 0.9143±0.0058 |
| LatentGAN | 0.8966±0.0029 | 1.0±0.0 | 0.9968±0.0002 | 0.2968±0.0087 | 0.8281±0.0117 | 0.5371±0.0004 | 0.5132±0.0002 | 0.9986±0.0004 | 0.9972±0.0007 | 0.8867±0.0009 | 0.1072±0.0098 | 0.8565±0.0007 | 0.8505±0.0006 | 0.9735±0.0006 | 0.9498±0.0006 |
为了比较分子特性,我们计算了生成集和测试集中分子分布之间的 Wasserstein-1 距离。下面,我们提供了亲脂性 (logP)、合成可及性 (SA)、药物相似性定量估计 (QED) 和分子量的图。
| logP | SA |
|---|---|
| 重量 | QED |
安装
PyPi
安装MOSES(模型和指标)的最简单方法是安装RDKit:conda install -yq -c rdkit rdkit,然后从pip安装MOSES(molsets) (pip install molsets)。如果要使用 LatentGAN,还应该使用 bash install_latentgan_dependencies.sh 安装附加依赖项。
如果您使用的是 Ubuntu,则还应该为 RDKit 安装 sudo apt-get install libxrender1 libxext6。
码头工人
-
安装 docker 和 nvidia-docker)。
-
从 DockerHub 提取现有映像(需要下载 4.1Gb):
docker pull molecularsets/moses
或克隆存储库并手动构建它:
git clone https://github.com/molecularsets/moses.git
nvidia-docker image build --tag molecularsets/moses moses/
- 创建一个容器:
nvidia-docker run -it --name moses --network="host" --shm-size 10G molecularsets/moses
- 数据集和源代码可在 docker 容器内的 /moses 中获取:
docker exec -it molecularsets/moses bash
手动
或者,手动安装依赖项和 MOSES。
- 克隆存储库:
git lfs install
git clone https://github.com/molecularsets/moses.git
-
安装 RDKit 用于指标计算。
-
安装MOSES:
python setup.py install
- (可选)安装 LatentGAN 的依赖项:
bash install_latentgan_dependencies.sh
对模型进行基准测试
-
按照上一节所述安装 MOSES。
-
使用以下代码获取
train、test和test_scaffolds数据集:
import moses
train = moses.get_dataset('train')
test = moses.get_dataset('test')
test_scaffolds = moses.get_dataset('test_scaffolds')
- 您可以在模型中使用标准割炬 DataLoader。为了方便起见,我们提供了一个简单的
StringDataset类:
from torch.utils.data import DataLoader
from moses import CharVocab, StringDataset
train = moses.get_dataset('train')
vocab = CharVocab.from_data(train)
train_dataset = StringDataset(vocab, train)
train_dataloader = DataLoader(
train_dataset, batch_size=512,
shuffle=True, collate_fn=train_dataset.default_collate
)
for with_bos, with_eos, lengths in train_dataloader:
...
- 根据模型样本计算指标。我们建议至少采样
30,000分子:
import moses
metrics = moses.get_all_metrics(list_of_generated_smiles)
- 将生成的示例和指标添加到您的存储库。多次运行实验以估计指标的方差。
再现基线
端到端启动
您可以使用以下命令运行几乎所有内容:
python scripts/run.py
这将分割数据集,训练模型,生成新分子,并计算指标。评估结果将保存在metrics.csv中。
您可以通过运行以下命令将 GPU 设备索引指定为 cuda:n(或 cpu for CPU)and/or 模型:
python scripts/run.py --device cuda:1 --model aae
有关更多详细信息,请运行 python scripts/run.py --help。
您可以通过运行以下命令来重现具有多个种子的所有模型的评估:
sh scripts/run_all_models.sh
培训
python scripts/train.py <model name>
--train_load <train dataset>
--model_save <path to model>
--config_save <path to config>
--vocab_save <path to vocabulary>
要获取支持的型号列表,请运行 python scripts/train.py --help。
有关某些型号的更多详细信息,请运行 python scripts/train.py <model name> --help。
一代
python scripts/sample.py <model name>
--model_load <path to model>
--vocab_load <path to vocabulary>
--config_load <path to config>
--n_samples <number of samples>
--gen_save <path to generated dataset>
要获取支持的型号列表,请运行 python scripts/sample.py --help。
有关某些型号的更多详细信息,请运行 python scripts/sample.py <model name> --help。
评价
python scripts/eval.py
--ref_path <reference dataset>
--gen_path <generated dataset>
有关更多详细信息,请运行 python scripts/eval.py --help。
相关文章
- 苍生手游快速成长指南苍生手游新手入门与高效升级讲了什么-主要信息 09-10
- camping:实践指南 09-10
- 燕云十六声观潮客成就攻略 成就观潮客怎么完成-任务流程和完成条件 09-10
- scala.rx:实践指南 09-10
- 大剑传奇手游零氪开荒指南大剑传奇手游平民玩家高效成长讲-主要信息 09-10
- SuperVideoPlayer:实践指南 09-10