首页/文章/ 详情

DeepChem教程-1.1:DeePChem介绍

9天前浏览546

深度生命科学的基本工具  

欢迎来到 DeepChem 的深度生命科学入门教程。本系列笔记本是一个循序渐进的指南,可帮助您了解为生命科学进行深度学习所需的新工具和新技术。我们将从基础开始,假设您是机器学习和生命科学的新手,并建立一系列工具和技术,您可以使用这些工具和技术在生命科学领域开展有意义的工作。  

范围: 本教程将涵盖构建深度生命科学系统所需的机器学习和数据处理。  

为什么要学习 DeepChem 教程?  

1) 职业发展: 人工智能在生命科学领域的应用正在蓬勃发展, 目前行业,有许多初创公司和计划 在以人工智能为中心的大型制药和生物技术公司。学习与 掌握 DeepChem 将使您走在该领域的最前沿,并将 准备你进入这个领域的职业生涯。  

2) 人道主义考虑:疾病是人类最古老的原因 痛苦。自人类文明诞生之日起,人类就饱受病原体之苦, 癌症和神经系统疾病。最伟大的成就之一 过去几个世纪一直在开发有效的治疗方法 许多疾病。通过掌握本教程中的技能,您将能够 站在过去巨人的肩膀上帮助发展新的 药品。  

3) 降低医药成本: 开发新药的艺术是 目前只有一小部分高手才能修炼的精英技能 从业者。通过促进药物发现开源工具的发展, 您可以帮助大众化这些技能,并为更多人开放药物发现 竞赛。竞争加剧有助于降低医药成本。  

先决条件  

本教程序列将假定您对 Python 数据科学生态系统有一定的基本了解。我们假设您熟悉 Numpy、Pandas 和 TensorFlow 等库。我们将通过本教程提供一些关于基础知识的简短复习,所以如果您不是专家,请不要担心。  

设置  

第一步是启动并运行 DeepChem。我们建议使用 Google Colab 完成本教程系列。您还需要运行以下命令以在您的 colab 笔记本上安装 DeepChem。我们将使用基于 tensorflow 的模型,因此我们在 pip install 命令中添加了 [tensorflow] 以确保还安装了必要的依赖项


!pip install --pre deepchem[tensorflow]

如果愿意,您当然可以在本地运行本教程。在这种情况下,不要运行上面的单元格,因为它会在您的本地计算机上下载并安装 Anaconda。无论哪种情况,我们现在都可以导入“deepchem”包来玩。



import deepchem as dcdc.__version__

使用 DeepChem 训练模型:第一个示例  

深度学习可用于解决多种问题,但基本工作流程通常是相同的。以下是您遵循的典型步骤。  

选择您将训练模型的数据集(如果没有合适的现有数据集,则创建一个新数据集)。  

创建模型。  

在数据上训练模型。  

在独立测试集上评估模型,看看它的效果如何。  

使用模型对新数据进行预测。  

使用 DeepChem,这些步骤中的每一个都可以少到一两行 Python 代码。在本教程中,我们将通过一个基本示例来展示解决现实世界科学问题的完整工作流程。  

我们要解决的问题是根据小分子的化学式预测其溶解度。这是药物开发中一个非常重要的特性:如果药物溶解度不够,可能无法充分进入患者的血液以产生治疗效果。我们需要的第一件事是真实分子的测量溶解度数据集。 DeepChem 的核心组件之一是 MoleculeNet,它是化学和分子数据集的多样化集 合。对于本教程,我们可以使用 Delaney 溶解度数据集。该数据集中的溶解度特性以 log(溶解度)报告,其中溶解度以摩尔/升测量。



tasks, datasets, transformers = dc.molnet.load_delaney(featurizer='GraphConv')train_dataset, valid_dataset, test_dataset = datasets

我现在不会对这段代码说太多。我们会在后面的教程中看到很多类似的例子。注意两个细节,首先,注意传递给 load_delaney() 函数的 featurizer 参数。分子可以用多种方式表示。因此,我们告诉它我们想要使用哪种表示,或者用更专业的语言,告诉它如何“特征化”数据。其次,请注意我们实际上得到了三个不同的数据集:训练集、验证集和测试集。这些中的每一个在标准深度学习工作流程中都有不同的功能。  

现在我们有了数据,下一步是创建模型。我们将使用一种称为“图卷积网络”或简称“graphconv”的特殊模型。


model = dc.models.GraphConvModel(n_tasks=1, mode='regression', dropout=0.2)

代码这里我就不多说了。后面的教程将提供更多关于“GraphConvModel”的信息,以及 DeepChem 提供的其他类型的模型。  

我们现在需要在数据集上训练模型。我们只需给它数据集并告诉它要执行多少次训练(即要完成多少次完整的数据传递)。


model.fit(train_dataset, nb_epoch=100)

如果一切顺利,我们现在应该有一个训练有素的模型!但是我们呢?为了找出答案,我们必须在测试集上评估模型。我们通过选择一个评估指标并在模型上调用“evaluate()”来做到这一点。对于此示例,让我们使用 Pearson 相关性(也称为 rundefined)作为我们的指标。我们可以在训练集和测试集上对其进行评估。




metric = dc.metrics.Metric(dc.metrics.pearson_r2_score)print("Training set score:", model.evaluate(train_dataset, [metric], transformers))print("Test set score:", model.evaluate(test_dataset, [metric], transformers))

请注意,它在训练集上的得分高于测试集。模型通常在训练它们的特定数据上比在类似但独立的数据上表现更好。这称为“过度拟合”,这就是必须在独立测试集上评估模型的原因。  

我们的模型在测试集上仍然具有相当可观的性能。为了进行比较,一个产生完全随机输出的模型的相关性为 0,而做出完美预测的模型的相关性为 1。我们的模型做得很好,所以现在我们可以用它来预测我们关心的其他分子。  

由于这只是一个教程,我们没有任何其他我们特别想要预测的分子,所以我们只使用测试集中的前十个分子。对于每一个,我们打印出化学结构(表示为 SMILES 字符串)和预测的对数(溶解度)。将这些预测放入 在上下文中,我们也从测试集中打印出对数(溶解度)值。




solubilities = model.predict_on_batch(test_dataset.X[:10])for molecule, solubility, test_solubility in zip(test_dataset.ids, solubilities, test_dataset.y):    print(solubility, test_solubility, molecule)



来源:模拟之家
化学python制药UM人工智能GROMACS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-08
最近编辑:9天前
刘十三613
博士 分子动力学、GROMACS
获赞 133粉丝 77文章 79课程 29
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈