基于深度学习的基因表达甲基化预测模型 | 论文复现与改进研究 | by GeneX Team

本项目是 GeneX Team 的生物信息学课程研究报告,复现并改进 BMC Bioinformatics 2025 发表的 DeepMethyGene 论文。
| 项目 | 内容 |
|---|
| 论文标题 | DeepMethyGene: a deep-learning model to predict gene expression using DNA methylations |
| 发表期刊 | BMC Bioinformatics (2025) |
| 基线性能 | R² = 0.640 (5折交叉验证) |
| 核心方法 | CNN + ResNet 架构,利用 DNA 甲基化预测基因表达 |
- 复现基线模型 – 完整复现 DeepMethyGene,验证原论文 R² ≈ 0.640
- 多模型对比 – 实现 Random Forest、SVM、Deep Forest 等对比方法
- 提出改进方案 – 整合基因组上下文特征 + SE 注意力机制
- 性能验证 – 通过消融实验验证改进效果
第一部分:geneEXPLORE 与 DeepMethyGene(原论文方法)对比
- geneEXPLORE 是一种统计机器学习模型(基于弹性网络 / SVM / 随机森林)。
- 创新点:首次强调长距离 DNA 甲基化对基因表达的调控作用。
- 局限性:
- 输入维度固定,无法适应不同基因附近甲基化位点数目的差异。
- 传统线性模型难以捕捉甲基化与表达之间的复杂非线性关系。
- 预测精度有限(5折交叉验证 R² = 0.449)。
2. DeepMethyGene(原论文方法)的改进
| 改进点 | 具体方案 | 效果 |
|---|
| 自适应输入结构 | 根据基因附近甲基化位点数量动态调整卷积层通道数 | 灵活适应不同基因 |
| 深度学习架构 | 一维 CNN + 残差网络(ResNet),解决深层网络梯度消失问题 | 可训练更深网络 |
| 数据分布优化 | 将甲基化 β 值转换为 M 值,近似正态分布 | 提高模型稳定性 |
| 预测性能 | 5折交叉验证 R² = 0.640,比 geneEXPLORE 提升 +42.5% | 显著更准 |
| 模型 | 平均 R² | 在 13,982 个基因中优于对方基因数 |
|---|
| geneEXPLORE | 0.449 | 248 个(1.8%) |
| DeepMethyGene | 0.640 | 13,734 个(98.2%) |
第二部分:我们小组(GeneX Team)的进一步改进
在完全复现 DeepMethyGene 的基础上,我们提出以下改进方向。
| 原始输入 | 补充特征 |
|---|
| 仅甲基化 M 值 | + CpG 岛密度 + 甲基化位点距 TSS 距离 + 区域类型 |
在残差块后插入 SE 通道注意力模块,自动学习每个甲基化通道的权重。
| 原始论文 | 我们的扩展 |
|---|
| 主要在 BRCA 上训练测试 | 额外在 LUAD、COAD、GBM 上评估 |
| 模型 / 方法 | 预期 R² | 说明 |
|---|
| geneEXPLORE(基准) | 0.449 | 传统方法 |
| DeepMethyGene(复现) | 0.640 | 原论文结果 |
| DeepMethyGene + 特征增强 | 0.655 ~ 0.670 | 待验证 |
| DeepMethyGene + SE 注意力 | 0.660 ~ 0.680 | 待验证 |
| 两者组合 | 0.670 ~ 0.690 | 待验证 |
DeepMethyGene/
├── Model/ # 模型代码
│ ├── DeepMethyGene.py # 主模型 (CNN + ResNet)
│ ├── Random Forest.py # 随机森林
│ ├── SVM.py # 支持向量机
│ ├── Deep Forest.py # 深度森林 (gcForest)
│ ├── cascade_forest.py # gcForest 实现
│ └── geneEXPLORE.r # geneEXPLORE 基线 (Elastic Net)
├── data/
│ ├── gene_list.csv # 13,982 个基因列表
│ ├── hg19_promoter.txt # 启动子坐标 (hg19)
│ └── BCRA_Data/ # 预处理产物与脚本
│ ├── BRCA_data_meth.csv # 甲基化矩阵 (394K × 873)
│ ├── BRCA_data_meth_range.csv # 探针基因组坐标
│ ├── need_gene_exp_13988(13982).csv # 表达矩阵 (17K × 873)
│ ├── BRCA.data.Rdata # R 数据对象 (geneEXPLORE 用)
│ ├── probe.per.promoter_BRCA.Rdata # 探针-启动子映射
│ ├── step*.R # 预处理分步脚本
│ └── BRCADataProcessing.md # 预处理说明
├── file/ # 论文材料 + 依赖清单
│ ├── paper.md # 论文原文
│ ├── install_r_packages.R # R 最小依赖安装
│ └── requirements.txt # Python 依赖
├── result_r/ # 各模型输出结果
│ ├── DeepMethyGene.txt
│ ├── DeepForest.txt
│ ├── SVMnormal.txt
│ ├── RandomForestnormal.txt
│ └── geneExplorer_5fold.csv
└── DeepMethyGene.md # 项目使用说明
| 类别 | 工具 | 版本 |
|---|
| 操作系统 | Ubuntu | 24.04 LTS |
| Python | CPython + UV | 3.12 |
| R | R Core | 4.6 |
| 深度学习 | PyTorch (CPU) | 2.12 |
| 生物信息学 | Bioconductor | 3.23 |
- Docker (推荐,使用项目
Dockerfile 构建)
- 或 Python 3.12 + R 4.6
uv pip install -r DeepMethyGene/file/requirements.txt
Rscript DeepMethyGene/file/install_r_packages.R
bash scripts/R.sh
cd /workspace/DeepMethyGene/Model
/opt/venv/bin/python3 DeepMethyGene.py
/opt/venv/bin/python3 "Random Forest.py"
/opt/venv/bin/python3 SVM.py
/opt/venv/bin/python3 "Deep Forest.py"
cd /workspace/DeepMethyGene/data/BCRA_Data
Rscript ../../Model/geneEXPLORE.r
bash scripts/download_and_preprocess.sh
├── Dockerfile # Docker 容器镜像定义
├── README.md # 项目文档
├── settings.jsonc # VS Code 配置
├── scripts/ # 辅助脚本
│ ├── R.sh # R 完整环境安装 (Docker 构建用)
│ ├── download_and_preprocess.sh # 一键数据下载+预处理
│ ├── cleanup.sh # 实验结束清理数据
│ ├── init-claude.sh # Claude Code 配置
│ └── init-codex.sh # CodeX 配置
└── DeepMethyGene/ # 核心项目目录
├── Model/ # 模型代码
├── data/ # 数据文件 + 预处理
├── file/ # 论文 + 依赖清单
├── result_r/ # 实验结果
└── DeepMethyGene.md # 项目使用说明
详见 DeepMethyGene/file/paper.md。
本项目采用 MIT License 开源。
GeneX Team | 生物信息学课程研究报告