
在药开发中,根据化学式预测小分子的溶解度,是开发药物小分子时要考虑的非常重要的性质:如果一种药物的溶解度不够,你可能无法将足够的药物输送到患者的血液中产生治疗效果。
我们需要的第一件事是一个真实分子的测量溶解度的数据集。DeepChem的核心组件之一是MoleculeNet,这是一个多样化的化学和分子数据集合集。在本教程中,我们可以使用Delaney溶解度数据集(Delaney数据集是一个用于机器学习的分子溶解度数据集,其中包含了1128个小分子的化学结构式和相应的实验测得的溶解度数据。这些小分子是由John Delaney收集并在他的博士论文中使用的。这个数据集已经成为机器学习和深度学习中广泛使用的基准数据集之一,被用来评估化合物溶解度预测模型的性能。)。该数据集中的溶解度属性是以log(solubility)的形式报告的,其中溶解度以摩尔/升为单位进行测量。

表1 Delaney数据集示例
import deepchem as dc
# 加载Delaney数据集,并使用GraphConv对每个分子的化学结构进行特征提取
# tasks: 元素的列表,元素是目标变量的名称。在Delaney数据集中,目标变量为溶解度。
# datasets: 一个包含训练集、验证集和测试集的字典。在默认情况下,这个数据集将按照80:10:10的比例进行划分。
# transformers: 包含训练数据集中每个分子的特征变换器的列表。在这个例子中,使用的特征提取器是GraphConv。
tasks, datasets, transformers = dc.molnet.load_delaney(featurizer='GraphConv')
train_dataset, valid_dataset, test_dataset = datasets
# 应用图卷积网络构建模型
model = dc.models.GraphConvModel(n_tasks=1, mode='regression', dropout=0.2)
model.fit(train_dataset, nb_epoch=100)
# 用Pearson R2系数评估模型性能
metric = dc.metrics.Metric(dc.metrics.pearson_r2_score)
# transformers对象,用于将原始数据转换成可用于模型评估的格式
print("Training set score:", model.evaluate(train_dataset, [metric], transformers))
print("Test set score:", model.evaluate(test_dataset, [metric], transformers))
solubilities = model.predict_on_batch(test_dataset.X[:10])
# 对比前10个测试集上的分子真实溶解度与预测到的溶解度的差异
for molecule, solubility, test_solubility in zip(test_dataset.ids, solubilities, test_dataset.y):
print(solubility, test_solubility, molecule)

从预测结果中可以看出,大部分小分子的预测溶解度与实际溶解度非常接近。
扫码关注我们

本教程介绍如何利用DeepChem的MoleculeNet数据集,特别是Delaney溶解度数据集,来预测药物小分子的溶解度。通过深度学习方法,可以对小分子的溶解度进行准确预测,这对于药物开发过程至关重要。
2558

被折叠的 条评论
为什么被折叠?



