基于图神经网络进行分子活性预测
该项目通过利用图神经网络来解析和预测化学分子结构对HIV的活性,展示了深度学习在药物发现领域的应用潜力。项目的核心是如何从分子结构中有效提取特征,并利用这些特征进行准确的活性预测。通过解决数据不平衡问题,以及优化模型结构和参数,该项目旨在提高预测HIV活性化合物的准确性。以下是对项目各部分的更加详细的介绍:
数据集介绍
该数据集源自药物治疗计划(Drug Treatment Program, DTP)的抗HIV病毒筛选项目,涉及超过40,000种化合物对HIV复制能力的测试。这些化合物的筛选结果被分为三个类别:
- 确认无活性(CI)
- 确认有活性(CA)
- 确认中等活性(CM)
为了简化分析,项目将后两类(CA和CM)合并,形成一个二分类问题:无活性(CI)与有活性(CA和CM)。原始数据包含SMILES格式的分子结构,以及与这些结构相关的活性标签。
训练集示例如下:
项目结构和文件
3.1 config.py
该文件包含模型构建和训练所需的各种超参数。项目中采用了基于贝叶斯的超参数优化策略,通过“mango”库在给定的参数空间内搜索最优的参数组合。
3.2 dataset.py
这个脚本基于torch_geometric包扩展了Dataset类。通过使用rdkit库的Chem包的Chem.MolFromSmiles
函数计算分子的性质,这些性质被作为特征输入到图神经网络中进行计算。
3.3 dataset_featurer.py
这是dataset.py
的简化版,其功能是用deepchem库中的feat.MolGraphConvFeaturizer
函数来获取分子特征,替代了dataset.py
中的相关功能。
3.4 model.py
模型构建部分采用了基于注意力机制的图卷积层、Topk池化层和全局池化层来提取特征。然后,这些特征被输入到三层全连接层,以生成最终的预测结果。
3.5 oversampling_data.py
由于HIV数据集在活性和无活性分子数量上存在不平衡,该脚本通过对活性分子进行过采样来减少这种不平衡的影响。
3.6 train.py
该脚本负责模型的训练、验证和保存。它还包括使用sklearn库来计算准确率、精确率、召回率和F1分数等评估指标。
3.7 utils.py
这个脚本提供了一系列辅助功能,比如加载smiles字符串到rdkit分子对象,以及将smiles字符串转换为图形表示。
项目资源下载
作者
arwin.yu.98@gmail.com