AIDD人工智能药物发现与设计 - 图神经网络逐步生成分子图,并可用强化学习优化分子性质
AIDD - 图神经网络逐步生成分子图,并可用强化学习优化分子性质
项目地址:
GraphINVENT2 GitHub repository
GraphINVENT2 是 GraphINVENT 的简化版,用 图神经网络逐步生成分子图,并可用强化学习优化分子性质。((https://github.com/ailab-bio/GraphINVENT2?utm_source=chatgpt.com))
一、GraphINVENT2整体运行流程
GraphINVENT2核心流程只有 3步:
1 数据准备
2 训练模型
3 生成分子
完整 pipeline:
SMILES dataset
↓
preprocessing
↓
train GNN model
↓
generate molecules
二、系统环境要求
推荐环境:
| 项目 | 推荐 |
|---|---|
| Python | 3.6 / 3.8 |
| GPU | CUDA GPU(可选) |
| OS | Linux / WSL |
| RAM | ≥16GB |
GraphINVENT2 本质是 PyTorch GNN模型。
三、下载代码
git clone https://github.com/ailab-bio/GraphINVENT2.git
cd GraphINVENT2
目录结构:
GraphINVENT2
├ data
├ docker
├ graphinvent
├ tools
├ tutorials
├ submit.py
关键目录:
| 目录 | 作用 |
|---|---|
| data | 数据集 |
| graphinvent | 模型代码 |
| tools | 数据处理 |
| tutorials | 示例 |
| submit.py | 运行入口 |
四、创建Python环境
建议用 conda。
1 创建环境
conda create -n graphinvent2 python=3.8
conda activate graphinvent2
2 安装依赖
安装 PyTorch:
GPU版本:
pip install torch torchvision torchaudio
CPU版本:
pip install torch
安装其他依赖:
pip install rdkit-pypi
pip install numpy pandas tqdm tensorboard
五、测试环境
运行:
python submit.py --help
如果看到:
usage: submit.py
说明安装成功。
六、使用官方示例数据运行
GraphINVENT2自带一个 小数据集:
data/gdb13_1K
这是 GDB13子集(1000分子)。
目录:
data/gdb13_1K
├ train.smi
├ valid.smi
├ test.smi
SMILES示例:
CCO
CCN(CC)CC
c1ccccc1
七、运行数据预处理
GraphINVENT2必须先做 graph preprocessing。
运行:
python submit.py \
--dataset gdb13_1K \
--job-type preprocess
执行后会生成:
data/gdb13_1K/processed
里面包含:
train.h5
valid.h5
test.h5
这些是图数据。
八、训练模型
运行训练:
python submit.py \
--dataset gdb13_1K \
--job-type train
训练日志:
Epoch 1
Epoch 2
Epoch 3
输出目录:
output/
里面包含:
model.pt
training.log
九、生成新分子
训练完成后运行:
python submit.py \
--dataset gdb13_1K \
--job-type generate
生成结果:
output/generated_molecules.smi
例如:
CCO
C1=CC=CC=C1
CCN(CC)CC
十、完整运行流程(最小命令)
完整命令流程:
git clone https://github.com/ailab-bio/GraphINVENT2.git
cd GraphINVENT2
conda create -n graphinvent2 python=3.8
conda activate graphinvent2
pip install torch rdkit-pypi numpy pandas tqdm tensorboard
python submit.py --dataset gdb13_1K --job-type preprocess
python submit.py --dataset gdb13_1K --job-type train
python submit.py --dataset gdb13_1K --job-type generate
十一、输出结果
生成文件:
output/generated_molecules.smi
格式:
SMILES
你可以用 RDKit 可视化:
from rdkit import Chem
from rdkit.Chem import Draw
mol = Chem.MolFromSmiles("CCO")
Draw.MolToImage(mol)
十二、GraphINVENT2模型原理
GraphINVENT2逐步生成分子:
step1 add atom
step2 add bond
step3 continue
step4 terminate
即:
empty graph
↓
add atom
↓
add bond
↓
complete molecule
这种方式 直接生成 molecular graph,不依赖 SMILES。((https://github.com/ailab-bio/GraphINVENT2?utm_source=chatgpt.com))
十三、常见错误
1 RDKit错误
安装:
conda install -c conda-forge rdkit
2 CUDA错误
检查:
nvidia-smi
3 dataset找不到
必须放在:
data/<dataset_name>
十四、推荐真实科研数据
常用数据:
| 数据集 | 用途 |
|---|---|
| ZINC | 药物分子 |
| ChEMBL | bioactive molecules |
| GDB13 | 小分子空间 |
十五、科研级 GraphINVENT2 pipeline
真实项目一般这样:
ChEMBL dataset
↓
GraphINVENT2 training
↓
generate molecules
↓
QSAR prediction
↓
docking
好的,我来为你编写完整的Python版本代码,包含所有图表、论文格式的研究方法描述。代码已完整生成,以下是完整说明:
代码结构总览
所需依赖安装
pip install numpy pandas matplotlib scikit-learn shap joblib
研究方法
| 章节 | 内容 |
|---|---|
| 一、数据预处理 | 基因矩阵读取、样本分组解析、特征子集提取 |
| 二、超参数优化 | GridSearchCV + 10-Fold×5 Repeats,ROC-AUC为指标 |
| 三、SHAP值计算 | TreeExplainer,Shapley值理论说明 |
| 四、特征筛选 | 累积重要性法(80%/90%)+ Bootstrap 95% CI 双策略 |
| 五、可视化分析 | 8类图表的学术意义说明 |
| 六、分析报告 | 自动汇总输出 |
全部图表输出(11类,PDF + PNG)
| 文件名 | 内容 |
|---|---|
barplot.pdf | 全特征条形图 |
bee.pdf | 全特征蜂群图 |
dependence.pdf | Top 9 特征依赖图(3×3布局) |
waterfall.pdf + waterfall_sample_1~5.pdf | 瀑布图(单样本) |
force.pdf + force_sample_1~5.pdf | 力图(单样本) |
barplot_top_features.pdf | 筛选后特征条形图 |
beeswarm_top_features.pdf | 筛选后蜂群图 |
cumulative_importance.pdf | 累积重要性双联图 |
all_features_with_CI.pdf | 全特征+95%置信区间 |
interaction_heatmap.pdf | SHAP相关性热图 |
roc_curve.pdf | ROC曲线 |
hyperparameter_tuning.pdf | 超参数调优热图+折线图 |
你给出的那段 **“研究方法”**已经接近论文方法部分,但如果是 SCI论文 Methods 部分,一般需要写成 更正式的学术段落结构,语言更规范、逻辑更清晰。下面我给你整理成 可以直接放入论文 Methods 部分的完整版本(标准学术中文)。
研究方法
1 数据预处理(Data preprocessing)
本研究从标准化后的基因表达矩阵(merge.normalize.txt)中读取数据,并依据最优算法(Stepglm[both]+XGBoost)筛选得到的模型基因列表(model.genes.txt)提取候选特征基因。随后对数据进行转置处理,使每一行为样本、每一列为基因表达特征。
根据样本名称中的分组信息自动解析样本标签,将样本划分为 Control组和Case组。同时,为保证Python程序变量命名的规范性,将所有基因名称中的连字符“-”统一替换为下划线“_”。最终构建以基因表达水平为输入特征、样本分组为目标变量的机器学习数据集,用于后续模型训练与解释分析。
2 机器学习模型构建与超参数优化(Machine learning model construction and hyperparameter optimization)
本研究采用 随机森林(Random Forest)算法构建二分类模型。随机森林是一种基于集成学习思想的算法,通过构建多个决策树并进行投票决策,以提高模型的稳定性和预测性能。
为了获得最佳模型参数,采用 **网格搜索(Grid Search)结合交叉验证(Cross-Validation)**的方法进行超参数优化。具体而言,采用 **10折交叉验证(10-fold cross-validation)并重复5次(Repeated Cross-Validation)**的策略进行模型训练与评估。
调优参数包括:
- 决策树数量(n_estimators = 100, 200, 300, 500)
- 最大特征数(max_features = sqrt, log2, 0.3, 0.5)
- 最大树深度(max_depth = None, 5, 10, 20)
模型性能以 **受试者工作特征曲线下面积(Area Under the Receiver Operating Characteristic Curve, AUC)**作为评价指标,并选择验证集AUC最高的参数组合作为最优模型参数。
3 SHAP解释分析(SHAP explainable analysis)
为了进一步解释机器学习模型的预测机制,本研究采用 SHapley Additive exPlanations(SHAP)方法对模型进行解释分析。
SHAP是一种基于合作博弈论 Shapley值理论 的模型解释方法,通过计算每个特征在所有可能特征组合中的平均边际贡献,从而量化每个特征对模型预测结果的贡献。(https://en.wikipedia.org/wiki/Shapley_value?utm_source=chatgpt.com)
SHAP方法能够同时提供:
- 局部解释(Local interpretability):解释单个样本预测结果
- 全局解释(Global interpretability):评估特征在整个数据集中的重要性
在本研究中,利用 TreeExplainer 算法(针对树模型的高效SHAP计算方法)计算所有样本的SHAP值,从而获得每个基因对模型预测结果的贡献。
4 特征重要性评估与筛选(Feature importance evaluation and selection)
为了评估各特征的重要性,本研究计算每个特征在所有样本中的 平均绝对SHAP值(Mean |SHAP|),并按照重要性进行降序排序。
同时采用两种策略对重要特征进行筛选:
- 累积重要性阈值法
根据特征的重要性排序计算累积贡献比例,并设置80%和90%的累积重要性阈值,以确定主要贡献特征数量。 - Bootstrap置信区间法
通过Bootstrap重采样(100次)计算每个特征SHAP值的 95%置信区间(95% CI),以评估特征重要性的稳定性。
最终特征数量通过综合两种方法确定,即取 累积重要性阈值法与Bootstrap显著特征数的并集,以提高特征筛选结果的稳健性。
5 可视化分析(Visualization)
为了全面展示模型解释结果,本研究绘制多种SHAP可视化图表,包括:
- SHAP条形图(Bar plot):展示各特征的平均绝对SHAP值及其重要性排序;
- SHAP蜂群图(Beeswarm plot):同时展示特征重要性及特征值分布对模型预测的影响方向;
- SHAP依赖图(Dependence plot):揭示单一特征表达水平与SHAP值之间的关系;
- SHAP瀑布图(Waterfall plot):解释单个样本预测结果的特征贡献分解;
- SHAP力图(Force plot):以直观方式展示特征对单个样本预测结果的正负贡献;
- 累积重要性曲线(Cumulative importance curve):展示特征按重要性排序后的累计贡献比例;
- Bootstrap置信区间图(Confidence interval plot):展示特征重要性的95%置信区间;
- 超参数调优热图(Hyperparameter tuning heatmap):可视化不同参数组合下模型AUC表现。
所有图表均采用 Times New Roman字体,并对坐标轴标签和标题进行加粗处理,图注采用英文,以符合国际学术期刊投稿规范。
6 分析报告生成(Analysis report)
为提高研究的可重复性,本研究自动生成结构化分析报告,总结以下内容:
- 数据基本信息
- 超参数优化结果
- 模型性能评估指标
- 特征筛选统计结果
- Top重要基因列表(含95%置信区间)
所有中间结果及最终输出文件均保存至工作目录,以保证分析流程的可复现性。
更多推荐

所有评论(0)