当前位置: 首页 > news >正文

基于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中配置数据库连接:

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
数据库初始化
  1. 创建数据库:
CREATEDATABASEgrndbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;
  1. 执行初始化脚本:
mysql-uroot-prootgrndb<grn-inference-backend/src/main/resources/init.sql
  1. 导入示例数据(可选):
mysql-uroot-prootgrndb<grn-inference-backend/src/main/resources/sample_data.sql

运行方式

环境要求
  • JDK 8+
  • Maven 3.6+
  • MySQL 8.0+
启动步骤
  1. 克隆或下载项目
cdgrn-inference-backend
  1. 配置数据库
    编辑src/main/resources/application.yml,修改数据库连接信息

  2. 编译项目

mvn cleaninstall
  1. 启动应用
mvn spring-boot:run

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

java-jartarget/grn-inference-1.0.0.jar
  1. 验证启动
    访问http://localhost:8080/health,返回{"status":"UP"}表示启动成功
访问地址
  • 后端API: http://localhost:8080
  • API文档: http://localhost:8080/swagger-ui.html (如果配置了Swagger)

前端说明

技术架构

采用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. 安装依赖
cdgrn-inference-frontendnpminstall
  1. 配置API地址
    编辑src/api/index.js,确认baseURL配置:
constapi=axios.create({baseURL:'/api',timeout:30000,headers:{'Content-Type':'application/json'}})
  1. 启动开发服务器
npmrun dev
  1. 访问应用
    打开浏览器访问:http://localhost:3000
构建生产版本
npmrun build

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

部署说明

开发环境部署

1. 启动后端
cdgrn-inference-backend mvn spring-boot:run
2. 启动前端
cdgrn-inference-frontendnpmrun dev
3. 访问系统

打开浏览器访问: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.jar
2. 前端部署

构建生产版本

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. 数据获取问题

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

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

4. 可视化问题

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

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

数据获取

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

支持的数据库

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

使用方式

cdscripts python download_omics_data.py

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

项目特色

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

联系方式

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

http://www.jsqmd.com/news/451787/

相关文章:

  • 市面上专业的2026板材十大品牌 - 品牌推荐(官方)
  • Ollama+translategemma-27b-it:小白也能搞定的专业级本地翻译方案
  • 深入浅出UnblockNeteaseMusic加密机制:kwDES模块实战解析
  • [kwDES.js]深度剖析:从原理到实战的加密技术解密
  • 简单几步:在Jupyter中调用Qwen3-1.7B并集成LangChain工作流
  • 空论视野下的全球智能治理(1)
  • VoxCPM-1.5-WEBUI入门必看:网页推理界面详解,小白秒懂操作
  • 采样请求莫名丢弃,traceID断裂,ctx超时——MCP Sampling调用流异常诊断清单,含12个必检埋点位
  • 从‘敲笨钟‘到字符串算法:PTA试题中隐藏的5个C语言知识点
  • 行业内2026板材厂家推荐榜 - 品牌推荐(官方)
  • 文墨共鸣在互联网产品分析中的应用:自动生成竞品报告
  • Cogito-v1-preview-llama-3B部署教程:免配置镜像快速启动Ollama环境
  • MinerU 2.5-1.2B镜像实测:快速处理技术报告PDF,提取效果惊艳
  • ui 自动化——selenium
  • lsof命令说明与使用
  • OFA图像描述模型SolidWorks工程图理解:从3D模型到2D图纸描述探索
  • PostgreSQL版本选择
  • 华为OD机考双机位C卷 - 分苹果 (Java Python JS GO C++ C)
  • 如何用智能工具实现参考文献格式自动化处理?提升学术效率的终极方案
  • 霜儿模型生成速度对比展示:Z-Turbo加速技术效果实测
  • 多平台网盘直链解析工具:提升文件下载效率的实用方案
  • kwDES模块:DES加密技术在音乐平台API通信中的实践指南
  • OFA模型赋能互联网产品:用户生成内容(UGC)图片智能审核与打标
  • 智能客服语音方案:Fish Speech 1.5多语言合成,开箱即用
  • 跨语言文本处理初探:BERT分割模型对中英文混合文本的处理能力
  • DASD-4B-Thinking与区块链集成:智能合约自然语言编程
  • 如何突破网盘下载限速?这款高效下载工具让多平台直链解析提速300%
  • Flux Sea Studio 与Git版本控制结合:管理提示词工程与生成资产
  • 告别网盘下载限速!3分钟上手的直链解析工具让下载速度提升10倍
  • RVC模型与ComfyUI工作流集成:可视化音频生成与处理