效果图




项目概述
面向多组学数据的基因调控网络构建与优化研究平台,提供从多源生物数据推断基因调控网络的完整解决方案。系统将基因调控网络的推断问题视为图的链路预测任务,通过收集大量多组学数据构建每个基因的多模态表示,提升模型的表现力和准确度。
技术栈
后端技术栈
- 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 中配置数据库连接:
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
数据库初始化
- 创建数据库:
sql
CREATE DATABASE grndb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 执行初始化脚本:
bash
mysql -uroot -proot grndb < grn-inference-backend/src/main/resources/init.sql
- 导入示例数据(可选):
bash
mysql -uroot -proot grndb < grn-inference-backend/src/main/resources/sample_data.sql
运行方式
环境要求
- JDK 8+
- Maven 3.6+
- MySQL 8.0+
启动步骤
- 克隆或下载项目
bash
cd grn-inference-backend
-
配置数据库
编辑
src/main/resources/application.yml,修改数据库连接信息 -
编译项目
bash
mvn clean install
- 启动应用
bash
mvn spring-boot:run
或直接运行编译后的jar包:
bash
java -jar target/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+
启动步骤
- 安装依赖
bash
cd grn-inference-frontend
npm install
- 配置API地址
编辑src/api/index.js,确认baseURL配置:
javascript
const api = axios.create({
baseURL: '/api',
timeout: 30000,
headers: {
'Content-Type': 'application/json'
}
})
- 启动开发服务器
bash
npm run dev
- 访问应用
打开浏览器访问: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. 数据获取问题
问题 : 无法获取网络数据
解决:
- 检查数据库是否有数据
- 执行示例数据导入脚本
- 查看后端日志确认是否有错误
4. 可视化问题
问题 : 网络图不显示
解决:
- 检查浏览器控制台是否有错误
- 确认ECharts版本兼容性
- 检查数据格式是否正确
数据获取
系统提供了多组学数据获取脚本,支持从以下数据库下载数据:
支持的数据库
- ENCODE - 转录调控元件百科全书
- GEO - 基因表达数据库
- TCGA - 癌症基因组图谱
- SRA - 序列读取档案
使用方式
bash
cd scripts
python download_omics_data.py
详细使用说明请参考 docs/多组学数据获取指南.md
项目特色
- 多模态数据融合 - 整合多种组学数据,提升预测准确性
- 交互式可视化 - 支持缩放、拖拽、筛选等交互操作
- 响应式设计 - 自适应不同屏幕尺寸
- 实时分析 - 支持实时查看分析进度
- 灵活配置 - 支持多种参数配置和融合策略
联系方式
如有问题或建议,请联系项目维护团队。