基于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

后端说明

技术架构

系统采用分层架构设计:

  1. Controller层 - 处理HTTP请求,提供RESTful API
  2. Service层 - 实现业务逻辑,包括数据处理、多模态嵌入、链路预测
  3. Repository层 - 数据访问,使用Spring Data JPA
  4. 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 中配置数据库连接:

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/grndb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&characterEncoding=utf8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
数据库初始化
  1. 创建数据库:
sql 复制代码
CREATE DATABASE grndb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 执行初始化脚本:
bash 复制代码
mysql -uroot -proot grndb < grn-inference-backend/src/main/resources/init.sql
  1. 导入示例数据(可选):
bash 复制代码
mysql -uroot -proot grndb < grn-inference-backend/src/main/resources/sample_data.sql

运行方式

环境要求
  • JDK 8+
  • Maven 3.6+
  • MySQL 8.0+
启动步骤
  1. 克隆或下载项目
bash 复制代码
cd grn-inference-backend
  1. 配置数据库

    编辑 src/main/resources/application.yml,修改数据库连接信息

  2. 编译项目

bash 复制代码
mvn clean install
  1. 启动应用
bash 复制代码
mvn spring-boot:run

或直接运行编译后的jar包:

bash 复制代码
java -jar target/grn-inference-1.0.0.jar
  1. 验证启动
    访问 http://localhost:8080/health,返回 {"status":"UP"} 表示启动成功
访问地址

前端说明

技术架构

采用Vue 3组合式API,使用Element Plus作为UI组件库:

  1. 路由管理 - Vue Router实现单页应用
  2. 状态管理 - Vue 3 Composition API
  3. HTTP请求 - Axios封装API调用
  4. 数据可视化 - 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+
启动步骤
  1. 安装依赖
bash 复制代码
cd grn-inference-frontend
npm install
  1. 配置API地址
    编辑 src/api/index.js,确认baseURL配置:
javascript 复制代码
const api = axios.create({
  baseURL: '/api',
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json'
  }
})
  1. 启动开发服务器
bash 复制代码
npm run dev
  1. 访问应用
    打开浏览器访问:http://localhost:3000
构建生产版本
bash 复制代码
npm run build

构建产物在 dist/ 目录,可以部署到任何静态服务器。

部署说明

开发环境部署

1. 启动后端
bash 复制代码
cd grn-inference-backend
mvn spring-boot:run
2. 启动前端
bash 复制代码
cd grn-inference-frontend
npm run dev
3. 访问系统

打开浏览器访问:http://localhost:3000

生产环境部署

1. 后端部署

打包应用

bash 复制代码
cd grn-inference-backend
mvn clean package

运行jar包

bash 复制代码
java -jar target/grn-inference-1.0.0.jar

配置JVM参数(可选)

bash 复制代码
java -Xms512m -Xmx1024m -jar target/grn-inference-1.0.0.jar
2. 前端部署

构建生产版本

bash 复制代码
cd grn-inference-frontend
npm run build

部署到Nginx

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 中的端口号

yaml 复制代码
server:
  port: 8081

问题 : 数据库连接失败
解决: 检查MySQL服务是否启动,用户名密码是否正确

2. 前端启动失败

问题 : 端口3000被占用
解决 : 修改 vite.config.js 中的端口号

javascript 复制代码
export default defineConfig({
  plugins: [vue()],
  server: {
    port: 3001
  }
})

问题 : API请求失败
解决: 确认后端服务已启动,检查代理配置

3. 数据获取问题

问题 : 无法获取网络数据
解决:

  1. 检查数据库是否有数据
  2. 执行示例数据导入脚本
  3. 查看后端日志确认是否有错误

4. 可视化问题

问题 : 网络图不显示
解决:

  1. 检查浏览器控制台是否有错误
  2. 确认ECharts版本兼容性
  3. 检查数据格式是否正确

数据获取

系统提供了多组学数据获取脚本,支持从以下数据库下载数据:

支持的数据库

  • ENCODE - 转录调控元件百科全书
  • GEO - 基因表达数据库
  • TCGA - 癌症基因组图谱
  • SRA - 序列读取档案

使用方式

bash 复制代码
cd scripts
python download_omics_data.py

详细使用说明请参考 docs/多组学数据获取指南.md

项目特色

  1. 多模态数据融合 - 整合多种组学数据,提升预测准确性
  2. 交互式可视化 - 支持缩放、拖拽、筛选等交互操作
  3. 响应式设计 - 自适应不同屏幕尺寸
  4. 实时分析 - 支持实时查看分析进度
  5. 灵活配置 - 支持多种参数配置和融合策略

联系方式

如有问题或建议,请联系项目维护团队。

相关推荐
Irene19911 小时前
Vue Router 中:route.params.id 和 route.query.id 的区别
vue.js·route·useroute
bubiyoushang8882 小时前
OFDM系统信道估计MATLAB实现(LS、MMSE、DCT、LRMMSE方法)
开发语言·网络·matlab
lang201509282 小时前
Logback 过滤器深度指南:从“三值逻辑”到高性能拦截
java·网络·logback
嘿嘿潶黑黑2 小时前
Windows 下网络硬盘预览不可显示的问题解决
网络
网硕互联的小客服11 小时前
服务器防火墙是如何区分正常流量和攻击流量?
运维·服务器·网络
bug攻城狮11 小时前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端
迪巴拉152511 小时前
基于Vue与Spring Boot+Open Cv的智慧校园考勤系统
前端·vue.js·spring boot
&活在当下&11 小时前
Vue3 h函数用法详解
前端·javascript·vue.js