首页/文章/ 详情

DeepChem教程-1.3:MoleculeNet

2月前浏览2203

MoleculeNet 简介  

DeepChem 最强大的功能之一是它带有“包含电池”的数据集供使用。DeepChem 开发者社区维护着 MoleculeNet [1] 数据集套件,该套件维护着大量不同的科学数据集,用于机器学习的应用。最初的 MoleculeNet 套件有 17 个数据集,主要关注分子特性,在过去几年中,MoleculeNet 已经发展成为更广泛的科学数据集集 合,以促进机器学习的使用和开发。  

这些数据集与 DeepChem 套件的其余部分集成在一起,因此您可以通过 dc.molnet 子模块中的函数方便地访问这些数据集。在学习本教程系列时,您可以看到这些加载器的一些示例。 MoleculeNet 套件的完整文档可在我们的文档 [2] 中找到。  

[1] Wu, Zhenqin, et al.“MoleculeNet: a benchmark for molecular machine learning.” Chemical science 9.2 (2018): 513-530.

设置
运行 DeepChem,您需要运行以下安装命令。

!pip install --pre deepchem

我们现在可以导入 deepchem 包来试一试。



import deepchem as dcdc.__version__

'2.4.0-rc1.dev

MoleculeNet概述  

在上两个教程中,我们加载了分子溶解度的 Delaney 数据集,让我们再加载一次。


tasks, datasets, transformers = dc.molnet.load_delaney(featurizer='GraphConv', splitter='random')

请注意,我们调用“dc.molnet.load_delaney”的函数位于MoleculeNet 加载器的“dc.molnet”子模块中,让我们来看看MoleculeNet加载器中所有可用的加载器的完整集 合。


[method for method in dir(dc.molnet) if "load_" in method ]














































['load_bace_classification', 'load_bace_regression', 'load_bandgap', 'load_bbbc001', 'load_bbbc002', 'load_bbbp', 'load_cell_counting', 'load_chembl', 'load_chembl25', 'load_clearance', 'load_clintox', 'load_delaney', 'load_factors', 'load_function', 'load_hiv', 'load_hopv', 'load_hppb', 'load_kaggle', 'load_kinase', 'load_lipo', 'load_mp_formation_energy', 'load_mp_metallicity', 'load_muv', 'load_nci', 'load_pcba', 'load_pcba_146', 'load_pcba_2475', 'load_pdbbind', 'load_pdbbind_from_dir', 'load_pdbbind_grid', 'load_perovskite', 'load_ppb', 'load_qm7', 'load_qm7_from_mat', 'load_qm7b_from_mat', 'load_qm8', 'load_qm9', 'load_sampl', 'load_sider', 'load_sweet', 'load_thermosol', 'load_tox21', 'load_toxcast', 'load_uspto', 'load_uv', 'load_zinc15']

MoleculeNet 加载器集由DeepChem 社区维护,他们致力于将新数据集添加到集 合中,目前可以看到现在MoleculeNet 中有多少数据集。


len([method for method in dir(dc.molnet) if "load_" in method ])

46

MoleculeNet 数据集类别  

MoleculeNet 中有很多不同的数据集,我们可以浏览可用的不同类型的数据集。将数据集分成不同的类别,并列出属于这些类别的加载器,有关这些数据集的更多详细信息,可以请访问下面链接。


https://deepchem.readthedocs.io/en/latest/moleculenet.html

原始的 MoleculeNet 论文 [1] 提供了有关这些论文的一部分的详细信息,我们在下面将这些数据集标记为“V1”,剩余的数据集都是“V2”,但没有记录在旧论文中。  

量子力学数据集  

MoleculeNet 的量子力学数据集包含各种量子力学性质预测任务。当前的量子力学数据集包括 QM7、QM7b、QM8、QM9。关联的加载程序如下。


dc.molnet.load_qm7V1

dc.molnet.load_qm7b_from_mat: V1

•dc.molnet.load_qm8: V1

•dc.molnet.load_qm9:V1

物理化学数据集  

物理化学数据集集 合包含用于预测分子的各种物理性质的各种任务。

#该数据集在原始论文中也称为ESOL

dc.molnet.load_delaney:V1。


#该数据集在原始论文中也称为FreeSolv

dc.molnet.load_sampl:V1。


#该数据集在原始论文中也称为Lipophilicity

dc.molnet.load_lipo:V1。


#该数据集来自最近的出版物 [3]

dc.molnet.load_hopv:V2。


dc.molnet.load_thermosol:V2。

dc.molnet.load_hppb:V2。



化学反应数据集

这些数据集包含用于retrosynthesis / forward数据集。


• dc.molnet.load_uspto


生化/生物物理数据集  

这些数据集来自各种生化/生物物理数据集,这些数据集测量诸如化合物与蛋白质的结合亲和力之类的东西。


•dc.molnet.load_pcba:V1

dc.molnet.load_nciV2

•dc.molnet.load_muv:V1

dc.molnet.load_hivV1

dc.molnet.load_ppbV2
 




#此加载器从原始 MoleculeNet 中加载 BACE 数据集的分类任务。dc.molnet.load_bace_classification:V1


#此加载程序从原始 MoleculeNet 论文中加载 BACE 数据集的回归任务。dc.molnet.load_bace_regression:V1


#该数据集来自 Merck 的药物发现 kaggle 竞赛,并在 [4] 中进行了描述。dc.molnet.load_kaggleV2 

dc.molnet.load_factorsV2 该数据集来自[4]

dc.molnet.load_uvV2 该数据集来自[4]

dc.molnet.load_kinaseV2 该数据集来自 [4]

分子目录数据集  

这些数据集提供的分子数据集没有超出原始 SMILES 公式或结构的相关属性。这些类型的数据集对于生成建模任务很有用。


•dc.molnet.load_zinc15:V2
 

•dc.molnet.load_chembl:V2
 

•dc.molnet.load_chembl25:V2
 

生理学数据集  

这些数据集测量分子如何与人类患者相互作用的生理特性。


dc.molnet.load_bbbpV1

•dc.molnet.load_tox21:V1

•dc.molnet.load_toxcast:V1

•dc.molnet.load_sider:V1

•dc.molnet.load_clintox:V1


•dc.molnet.load_clearance:V2

结构生物学数据集  

这些数据集包含大分子的 3D 结构以及相关属性。


•dc.molnet.load_pdbbind:V1

显微镜数据集  

这些数据集包含显微镜图像数据集,通常是细胞系。这些数据集不在原始的 MoleculeNet 论文中。


•dc.molnet.load_bbbc001:V2


•dc.molnet.load_bbbc002:V2


•dc.molnet.load_cell_counting:V2

材料属性数据集  

这些数据集计算各种材料的属性。


•dc.molnet.load_bandgap:V2


dc.molnet.load_perovskiteV2

•dc.molnet.load_mp_formation_energy:V2


dc.molnet.load_mp_metallicityV2
[3] Lopez, Steven A., et al. "The Harvard organic photovoltaic dataset." Scientific data 3.1 (2016): 1-7.
[4] Ramsundar, Bharath, et al. "Is multitask deep learning practical for pharma?." Journal of chemical information and modeling 57.8 (2017): 2068-2076.

MoleculeNet 加载器解释  

MoleculeNet数据加载器函数的命名格式为dc.molnet.load_X,其中X是数据集的名称。

加载器函数返回一个元组(tasks, datasets, transformers);

其中tasks代表任务名称列表;datasets该字段是包含三个dc.data.Dataset 对象 (train, valid, test) 它们分别对应于该MoleculeNet数据集的训练、验证和测试集;transformers该字段是在处理期间应用于该数据集的dc.trans.Transformer 对象的列表。

解释的相对比较抽象的,我们来看调用“dc.molnet.load_delaney”函数为例,首先我们从“tasks”开始。


tasksbr

['measured log solubility in mols per litre']

我们在此数据集中有一项任务,即测量的摩尔溶解度,现在让我们看一下“datasets”。


datasets








(<DiskDataset X.shape: (902,), y.shape: (902, 1), w.shape: (902, 1), ids: ['CCC(C)Cl' 'O=C1NC(=O)NC(=O)C1(C(C)C)CC=C' 'Oc1ccccn1' ...  'CCCCCCCC(=O)OCC' 'O=Cc1ccccc1' 'CCCC=C(CC)C=O'], task_names: ['measured log solubility in mols per litre']>, <DiskDataset X.shape: (113,), y.shape: (113, 1), w.shape: (113, 1), ids: ['CSc1nc(nc(n1)N(C)C)N(C)C' 'CC#N' 'CCCCCCCC#C' ... 'ClCCBr'  'CCN(CC)C(=O)CSc1ccc(Cl)nn1' 'CC(=O)OC3CCC4C2CCC1=CC(=O)CCC1(C)C2CCC34C '], task_names: ['measured log solubility in mols per litre']>, <DiskDataset X.shape: (113,), y.shape: (113, 1), w.shape: (113, 1), ids: ['CCCCc1c(C)nc(nc1O)N(C)C '  'Cc3cc2nc1c(=O)[nH]c(=O)nc1n(CC(O)C(O)C(O)CO)c2cc3C'  'CSc1nc(NC(C)C)nc(NC(C)C)n1' ... 'O=c1[nH]cnc2[nH]ncc12 '  'CC(=C)C1CC=C(C)C(=O)C1' 'OC(C(=O)c1ccccc1)c2ccccc2'], task_names: ['measured log solubility in mols per litre']>)

正如我们之前提到的,我们看到这 datasets 是一个包含 3 个数据集,我们把它们分开。



train, valid, test = datasetstrain


<DiskDataset X.shape: (902,), y.shape: (902, 1), w.shape: (902, 1), ids: ['CCC(C)Cl' 'O=C1NC(=O)NC(=O)C1(C(C)C)CC=C' 'Oc1ccccn1' ... 'CCCCCCCC(=O)OCC' 'O=Cc1ccccc1' 'CCCC=C(CC)C=O'], task_names: ['measured log solubility in mols per litre']>

valid


<DiskDataset X.shape: (113,), y.shape: (113, 1), w.shape: (113, 1), ids: ['CSc1nc(nc(n1)N(C)C)N(C)C' 'CC#N' 'CCCCCCCC#C' ... 'ClCCBr' 'CCN(CC)C(=O)CSc1ccc(Cl)nn1' 'CC(=O)OC3CCC4C2CCC1=CC(=O)CCC1(C)C2CCC34C '], task_names: ['measured log solubility in mols per litre']>

test




<DiskDataset X.shape: (113,), y.shape: (113, 1), w.shape: (113, 1), ids: ['CCCCc1c(C)nc(nc1O)N(C)C ' 'Cc3cc2nc1c(=O)[nH]c(=O)nc1n(CC(O)C(O)C(O)CO)c2cc3C' 'CSc1nc(NC(C)C)nc(NC(C)C)n1' ... 'O=c1[nH]cnc2[nH]ncc12 ' 'CC(=C)C1CC=C(C)C(=O)C1' 'OC(C(=O)c1ccccc1)c2ccccc2'], task_names: ['measured log solubility in mols per litre']>

让我们来看看“train”数据集中的一个数据点。



train.X[0]<deepchem.feat.mol_graphs.ConvMol at 0x7fe1ef601438>

请注意,这是一个由 dc.feat.ConvMolFeaturizer 生成的对象dc.feat.mol_graphs.ConvMol ,稍后我们将详细介绍如何控制特征化的选择.最后看一下“transformers”:


transformers

[<deepchem.trans.transformers.NormalizationTransformer at 0x7fe2029bdfd0>]

我们看到应用了一个转换器,即“dc.trans.NormalizationTransformer”。

根据之前的描述,你想知道是如何做的选择?正如之前提到的,可以使用不同的featurizers来处理数据集。我们可以控制featurization的选择吗?此外,源数据集如何拆分为train/valid/test三个不同的数据集?

您可以使用 ‘featurizer’ ‘splitter’ 关键字参数并传入不同的值。

其中,常用的特征提取器有四种:ECFP、GraphConv、Weave和smiles2img,它们分别对应于DeepChem中的CircularFingerprint、ConvMolFeaturizer、WeaveFeaturizer和SmilesToImage特征提取器。

常用的数据集分割器有五种:None、index、random、scaffold和stratified,它们分别对应于没有分割、IndexSplitter、RandomSplitter、SingletaskStratifiedSplitter。数据集分割器是一种基于不同标准对数据集进行划分的方法。我们会在以后的教程中说更多。

在使用Featurizer或Splitter对象时,可以传入自定义的构造参数来实现定制化行为的功能。这种方法可以代替字符串作为参数传入,非常实用。




tasks, datasets, transformers = dc.molnet.load_delaney(featurizer="ECFP", splitter="scaffold")(train, valid, test) = datasetstrain


<DiskDataset X.shape: (902, 1024), y.shape: (902, 1), w.shape: (902, 1), ids: ['CC(C)=CCCC(C)=CC(=O)' 'CCCC=C' 'CCCCCCCCCCCCCC' ... 'Nc2cccc3nc1ccccc1cc23 ' 'C1CCCCCC1' 'OC1CCCCCC1'], task_names: ['measured log solubility in mols per litre']>

train.X[0]

array([0., 0., 0., ..., 0., 0., 0.])

请注意,与之前的调用不同,dc.feat.CircularFingerprint 和 dc.feat.ConvMolFeaturizer,前者生成的是numpy数组,后者生成的是ConvMol对象。

尝试调用 MoleculeNet 加载一些其他数据集并尝试使用不同的featurizer/split,看看会发生什么!



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