基于SpringBoot+Vue的基因调控网络推断系统
效果图
项目概述
面向多组学数据的基因调控网络构建与优化研究平台,提供从多源生物数据推断基因调控网络的完整解决方案。系统将基因调控网络的推断问题视为图的链路预测任务,通过收集大量多组学数据构建每个基因的多模态表示,提升模型的表现力和准确度。
技术栈
后端技术栈
- Java 8- 核心开发语言
- Spring Boot 2.7.18- Web应用框架
- Spring Data JPA- 数据持久化框架
- MySQL 8.0- 关系型数据库
- Hibernate- ORM框架
- Maven- 项目构建工具
- JGraphT 1.3.0- 图算法库
前端技术栈
- Vue 3- 前端框架
- Element Plus- UI组件库
- ECharts- 数据可视化库
- Vite- 构建工具
- Axios- HTTP客户端
项目结构
grn-inference-system/ ├── grn-inference-backend/ # 后端项目 │ ├── src/ │ │ └── main/ │ │ ├── java/com/grn/ │ │ │ ├── controller/ # 控制器层 │ │ │ ├── service/ # 服务层 │ │ │ ├── repository/ # 数据访问层 │ │ │ ├── entity/ # 实体类 │ │ │ └── dto/ # 数据传输对象 │ │ └── resources/ │ │ ├── application.yml # 配置文件 │ │ ├── init.sql # 数据库初始化脚本 │ │ └── sample_data.sql # 示例数据 │ └── pom.xml # Maven配置文件 ├── grn-inference-frontend/ # 前端项目 │ ├── src/ │ │ ├── api/ # API接口封装 │ │ ├── router/ # 路由配置 │ │ ├── views/ # 页面组件 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── index.html │ ├── package.json │ └── vite.config.js ├── docs/ # 文档目录 ├── scripts/ # 脚本目录 └── README.md后端说明
技术架构
系统采用分层架构设计:
- Controller层- 处理HTTP请求,提供RESTful API
- Service层- 实现业务逻辑,包括数据处理、多模态嵌入、链路预测
- Repository层- 数据访问,使用Spring Data JPA
- Entity层- 数据库实体映射
核心功能
1. 多模态嵌入服务 (MultiModalEmbeddingService)
- 整合RNA-seq、ATAC-seq、ChIP-seq等多组学数据
- 构建基因的多模态表示向量
- 支持concatenation、attention、gating等融合策略
2. 链路预测服务 (LinkPredictionService)
- 基于图神经网络进行链路预测
- 计算基因之间的调控关系权重和置信度
- 支持多种图算法和参数配置
3. 数据处理服务 (DataProcessingService)
- 解析和预处理上传的组学数据文件
- 支持CSV格式的数据导入
- 数据验证和清洗
API接口
基因网络相关接口
获取所有基因
GET /api/network/genes Response: { "success": true, "message": "操作成功", "data": [ { "id": 1, "geneId": "ENSG00000139618", "geneName": "BRCA1 DNA repair associated", "geneSymbol": "BRCA1", "description": "Breast cancer type 1 susceptibility protein" } ] }获取单个基因详情
GET /api/network/genes/{id} Response: { "success": true, "message": "操作成功", "data": { "id": 1, "geneId": "ENSG00000139618", "geneName": "BRCA1 DNA repair associated", "geneSymbol": "BRCA1", "description": "Breast cancer type 1 susceptibility protein" } }获取所有调控边
GET /api/network/edges Response: { "success": true, "message": "操作成功", "data": [ { "source": "ENSG00000139618", "target": "ENSG00000141510", "weight": 0.75, "confidence": 0.85 } ] }按置信度筛选边
GET /api/network/edges/confidence/{threshold} Response: { "success": true, "message": "操作成功", "data": [...] }获取网络统计信息
GET /api/network/stats Response: { "success": true, "message": "操作成功", "data": { "geneCount": 50, "edgeCount": 200, "networkDensity": 0.1633 } }获取网络图数据
GET /api/network/graph Response: { "success": true, "message": "操作成功", "data": { "nodes": [...], "links": [...] } }数据分析相关接口
上传数据文件
POST /api/analysis/upload Content-Type: multipart/form-data Parameters: - file: 数据文件 - dataType: 数据类型 (RNA_SEQ, ATAC_SEQ, CHIP_SEQ) Response: { "success": true, "message": "文件上传成功", "data": { "fileId": "uuid", "fileName": "data.csv" } }运行分析任务
POST /api/analysis/run Content-Type: application/json Request Body: { "taskName": "分析任务名称", "threshold": 0.5, "fusionStrategy": "concat" } Response: { "success": true, "message": "分析任务已创建", "data": { "taskId": 1, "status": "PENDING" } }获取所有分析任务
GET /api/analysis/tasks Response: { "success": true, "message": "操作成功", "data": [ { "id": 1, "taskName": "分析任务1", "status": "COMPLETED", "createdAt": "2026-03-07T00:00:00", "startTime": "2026-03-07T00:00:05", "endTime": "2026-03-07T00:00:30", "parameters": "{\"threshold\":0.5,\"fusionStrategy\":\"concat\"}", "result": "{\"embeddingCount\":50,\"predictionCount\":200}" } ] }获取单个任务详情
GET /api/analysis/tasks/{id} Response: { "success": true, "message": "操作成功", "data": {...} }系统相关接口
健康检查
GET /health Response: { "status": "UP", "timestamp": "2026-03-07T00:00:00" }系统信息
GET / Response: { "system": "基因调控网络推断系统", "version": "1.0.0", "description": "面向多组学数据的基因调控网络构建与优化研究平台" }数据库配置
MySQL数据库配置
在application.yml中配置数据库连接:
spring:datasource:url:jdbc:mysql://localhost:3306/grndb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&characterEncoding=utf8driver-class-name:com.mysql.cj.jdbc.Driverusername:rootpassword:root数据库初始化
- 创建数据库:
CREATEDATABASEgrndbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;- 执行初始化脚本:
mysql-uroot-prootgrndb<grn-inference-backend/src/main/resources/init.sql- 导入示例数据(可选):
mysql-uroot-prootgrndb<grn-inference-backend/src/main/resources/sample_data.sql运行方式
环境要求
- JDK 8+
- Maven 3.6+
- MySQL 8.0+
启动步骤
- 克隆或下载项目
cdgrn-inference-backend配置数据库
编辑src/main/resources/application.yml,修改数据库连接信息编译项目
mvn cleaninstall- 启动应用
mvn spring-boot:run或直接运行编译后的jar包:
java-jartarget/grn-inference-1.0.0.jar- 验证启动
访问http://localhost:8080/health,返回{"status":"UP"}表示启动成功
访问地址
- 后端API: http://localhost:8080
- API文档: http://localhost:8080/swagger-ui.html (如果配置了Swagger)
前端说明
技术架构
采用Vue 3组合式API,使用Element Plus作为UI组件库:
- 路由管理- Vue Router实现单页应用
- 状态管理- Vue 3 Composition API
- HTTP请求- Axios封装API调用
- 数据可视化- ECharts实现网络图展示
核心功能
1. 首页 (Home.vue)
- 系统介绍和功能展示
- 网络统计信息展示
- 数据类型说明
- 工作流程展示
2. 数据分析 (Analysis.vue)
- 多组学数据上传(RNA-seq、ATAC-seq、ChIP-seq)
- 分析参数配置
- 实时分析进度显示
- 分析结果展示
3. 网络可视化 (Network.vue)
- 基因调控网络交互式可视化
- 支持缩放、拖拽、筛选
- 置信度阈值调整
- 调控关系列表展示
- 网络统计信息
- 全屏和图片下载功能
4. 结果查看 (Results.vue)
- 分析任务列表展示
- 任务状态筛选
- 任务详情查看
- 任务删除功能
页面说明
首页
- 展示系统整体功能介绍
- 显示基因数量、边数量、网络密度等统计信息
- 支持RNA-seq、ATAC-seq、ChIP-seq三种数据类型
- 展示完整的工作流程
数据分析页面
- 三个数据上传区域:RNA-seq、ATAC-seq、ChIP-seq
- 支持拖拽上传和点击上传
- 分析参数配置:置信度阈值、融合策略
- 实时显示分析进度
- 分析结果统计:嵌入向量数量、预测关系数量、高置信度边数量
- Hub基因列表展示
网络可视化页面
- 左侧控制面板:
- 置信度阈值滑块
- 布局类型选择(力导向、圆形)
- 标签显示开关
- 缩放控制按钮
- 全屏切换按钮
- 图片下载按钮
- 中间网络图区域:
- 交互式基因调控网络图
- 支持鼠标悬停查看详情
- 支持节点拖拽
- 支持缩放和平移
- 全屏模式
- 右侧统计面板:
- 节点数量
- 边数量
- 网络密度
- 底部调控关系列表:
- 分页展示
- 显示源基因、靶基因、权重、置信度
- 支持查看详情
结果查看页面
- 任务列表表格展示
- 支持按任务名称搜索
- 支持按状态筛选
- 分页功能
- 任务详情对话框
- 任务删除功能
运行方式
环境要求
- Node.js 16+
- npm 8+
启动步骤
- 安装依赖
cdgrn-inference-frontendnpminstall- 配置API地址
编辑src/api/index.js,确认baseURL配置:
constapi=axios.create({baseURL:'/api',timeout:30000,headers:{'Content-Type':'application/json'}})- 启动开发服务器
npmrun dev- 访问应用
打开浏览器访问:http://localhost:3000
构建生产版本
npmrun build构建产物在dist/目录,可以部署到任何静态服务器。
部署说明
开发环境部署
1. 启动后端
cdgrn-inference-backend mvn spring-boot:run2. 启动前端
cdgrn-inference-frontendnpmrun dev3. 访问系统
打开浏览器访问:http://localhost:3000
生产环境部署
1. 后端部署
打包应用
cdgrn-inference-backend mvn clean package运行jar包
java-jartarget/grn-inference-1.0.0.jar配置JVM参数(可选)
java-Xms512m-Xmx1024m-jartarget/grn-inference-1.0.0.jar2. 前端部署
构建生产版本
cdgrn-inference-frontendnpmrun build部署到Nginx
server { listen 80; server_name your-domain.com; location / { root /path/to/grn-inference-frontend/dist; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }常见问题
1. 后端启动失败
问题: 端口8080被占用
解决: 修改application.yml中的端口号
server:port:8081问题: 数据库连接失败
解决: 检查MySQL服务是否启动,用户名密码是否正确
2. 前端启动失败
问题: 端口3000被占用
解决: 修改vite.config.js中的端口号
exportdefaultdefineConfig({plugins:[vue()],server:{port:3001}})问题: API请求失败
解决: 确认后端服务已启动,检查代理配置
3. 数据获取问题
问题: 无法获取网络数据
解决:
- 检查数据库是否有数据
- 执行示例数据导入脚本
- 查看后端日志确认是否有错误
4. 可视化问题
问题: 网络图不显示
解决:
- 检查浏览器控制台是否有错误
- 确认ECharts版本兼容性
- 检查数据格式是否正确
数据获取
系统提供了多组学数据获取脚本,支持从以下数据库下载数据:
支持的数据库
- ENCODE- 转录调控元件百科全书
- GEO- 基因表达数据库
- TCGA- 癌症基因组图谱
- SRA- 序列读取档案
使用方式
cdscripts python download_omics_data.py详细使用说明请参考docs/多组学数据获取指南.md
项目特色
- 多模态数据融合- 整合多种组学数据,提升预测准确性
- 交互式可视化- 支持缩放、拖拽、筛选等交互操作
- 响应式设计- 自适应不同屏幕尺寸
- 实时分析- 支持实时查看分析进度
- 灵活配置- 支持多种参数配置和融合策略
联系方式
如有问题或建议,请联系项目维护团队。
