橘智橘智
FakeOrange
预计阅读时间:2分钟51秒

解锁RDKit和DeepChem的化学信息学力量

进行化学信息工程Python教程

0
0


前言


化学信息学是药物发现、化学分析和材料科学中的关键领域,结合了化学信息学和计算技术的力量。化学家偏好的工具是像RDKit和DeepChem这样的库,它们共同为专业人员和研究人员提供了无与伦比的工具包。本文将指导您使用RDKit进行基本的化学信息学任务,然后结合DeepChem利用深度学习进行高级分子特征生成。



开始使用RDKit


RDKit是一个开源的化学信息学软件,提供了广泛的功能,用于分子操作、子结构搜索和属性计算。



安装


RDKit可以通过Conda轻松安装,确保所有依赖项都得到管理:


conda install -c conda-forge rdkit



使用RDKit的基本操作


创建分子


RDKit允许您从SMILES字符串创建分子,SMILES是一种紧凑的方式来描述分子的结构:


from rdkit import Chem
molecule = Chem.MolFromSmiles('CC(=O)NC1=CC=C(C=C1)O')


一旦将SMILES保存为RDKit对象,您就可以开始进行属性搜索等操作。



计算分子属性


快速计算基本属性,如分子量和LogP:


from rdkit.Chem import Descriptors

mol_weight = Descriptors.MolWt(molecule)
log_p = Descriptors.MolLogP(molecule)
print(f"The molecular weight is {mol_weight} and the LogP is {np.round(log_p, 2)}")


输出为:


The molecular weight is 151.165 and the LogP is 1.35


这使得获取化学信息变得更加简单,以前可能需要在网页上搜索和阅读,甚至将其输入到(通常是收费的)软件包中。



可视化


在脚本中直接可视化分子,这是一个对于演示和数据分析非常有价值的工具:


from rdkit.Chem import Draw

Draw.MolToImage(molecule)

data/78df2c1f-e442-415d-a382-fa7925af0c4b/eac530b7-4d83-4347-b6fa-6c83dc3a131fimage.png



对乙酰氨基酚结构


您还可以使用一些高级功能,配合额外的软件包(如py3Dmol)查看化合物的3D结构,并且可以移动化合物进行检查。这在Jupyter笔记本中非常有用。


from rdkit import Chem
from rdkit.Chem import AllChem
import py3Dmol

molecule = Chem.MolFromSmiles('CC(=O)NC1=CC=C(C=C1)O')
molecule = Chem.AddHs(molecule)
AllChem.EmbedMolecule(molecule, AllChem.ETKDG())

mb = Chem.MolToMolBlock(molecule)
view = py3Dmol.view(width=400, height=400)
view.addModel(mb, 'mol')
view.setStyle({'stick': {}})
view.zoomTo()
view.show()

data/78df2c1f-e442-415d-a382-fa7925af0c4b/03e5dd5b-6adb-4282-a787-dbb2c4a55010image.png



使用DeepChem增强特征生成


DeepChem通过提供高级特征生成技术并与机器学习结合,扩展了RDKit的功能,用于预测建模。



安装DeepChem


在Conda或虚拟环境中安装DeepChem:


pip install deepchem



生成分子特征


DeepChem提供了多种特征生成器,例如基于图的特征和指纹,用于复杂的分子表示:


import deepchem as dc

# 使用ConvMolFeaturizer生成基于图的特征
featurizer = dc.feat.ConvMolFeaturizer()
graph_features = featurizer.featurize([molecule])

然后,您可以使用DeepChem的特征生成器支持机器学习应用。例如,您可以将生成的特征作为化学溶解度预测或预测色谱行为的输入。



机器学习集成


DeepChem提供了一个无缝的工作流程,用于在机器学习模型中使用分子特征:


# 分割数据集并训练模型
splitter = dc.splits.RandomSplitter()
train_dataset, valid_dataset, test_dataset = splitter.train_valid_test_split(graph_features)
model = dc.models.GraphConvModel(n_tasks=1, mode='regression')
model.fit(train_dataset)

# 预测分子属性
predictions = model.predict(test_dataset)


这段代码将数据分割并输入到图卷积模型中,图卷积模型是一种设计用于图结构数据(如分子)的神经网络。



结论


RDKit和DeepChem的结合为化学信息学提供了一个全面的工具包,使研究人员和专业人员能够操作分子、计算属性、可视化结构,并为机器学习模型生成复杂的特征。无论您从事药物发现、材料科学还是化学分析,掌握这些工具将增强您的研究能力,简化工作流程,并促进您所在领域的创新发现。


记住,化学信息学的关键在于深入理解化学概念和您所拥有的计算工具。祝您研究顺利!


评论