Skip to content

Naproxen-Network/hyperStudio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

超图数据测评 Web 平台

基于 Flask 的超图数据结构、语义和神经网络指标测评系统


📁 项目目录结构

web_app/
├── app.py                  # Flask 主应用(路由、上传、分析)
├── metrics_core.py         # 核心计算模块(从 PyQt5 抽离的纯逻辑)
├── config.py              # 配置文件
├── requirements.txt       # Python 依赖
├── README.md             # 本文件
│
├── data/                 # 数据存储目录
│   └── users.json       # 用户账号数据(简单存储)
│
├── uploads/             # 用户上传的文件
│   └── [username]/     # 按用户名分目录
│       └── [timestamp]/ # 按时间戳分目录
│
├── results/            # 分析结果存储
│   └── [username]/    # 按用户名分目录
│       └── [timestamp]/ # 按时间戳分目录
│
├── templates/          # Jinja2 模板
│   ├── base.html      # 基础模板(导航栏、样式)
│   ├── login.html     # 登录页
│   ├── index.html     # 首页(上传和分析)
│   ├── result.html    # 结果展示页
│   ├── history.html   # 历史记录页
│   └── error.html     # 错误页面
│
└── static/            # 静态文件(可选)
    ├── css/          # 自定义样式
    ├── js/           # 自定义脚本
    └── img/          # 图片资源

🚀 快速开始

1. 环境准备

Python 版本: Python 3.8+

2. 创建虚拟环境

# Linux/macOS
python3 -m venv venv
source venv/bin/activate

# Windows
python -m venv venv
venv\Scripts\activate

3. 安装依赖

pip install -r requirements.txt

或手动安装核心依赖:

pip install flask werkzeug numpy scipy matplotlib

4. 启动服务

python app.py

5. 访问平台

浏览器打开以下任一地址:

6. 默认登录账号

  • 用户名: admin
  • 密码: admin123

🔧 服务器部署(Linux)

SSH 登录服务器

ssh ubuntu@10.159.23.17
# 密码: kk12345678

上传项目到服务器

# 方法1: 使用 scp
scp -r web_app ubuntu@10.159.23.17:~/

# 方法2: 使用 git
cd ~/
git clone <你的仓库地址>
cd HGbenchmark-GUI/web_app

在服务器上部署

# 1. 进入项目目录
cd ~/web_app

# 2. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 3. 安装依赖
pip install -r requirements.txt

# 4. 启动服务(前台运行,测试用)
python app.py

后台运行(推荐)

使用 nohup 让服务在后台运行:

nohup python app.py > app.log 2>&1 &

查看日志:

tail -f app.log

停止服务:

# 查找进程
ps aux | grep app.py

# 杀死进程
kill -9 <进程ID>

使用 systemd 管理服务(更推荐)

创建服务文件 /etc/systemd/system/hypergraph-web.service:

[Unit]
Description=Hypergraph Benchmark Web Service
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/web_app
Environment="PATH=/home/ubuntu/web_app/venv/bin"
ExecStart=/home/ubuntu/web_app/venv/bin/python app.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl start hypergraph-web
sudo systemctl enable hypergraph-web  # 开机自启
sudo systemctl status hypergraph-web  # 查看状态

📊 功能模块

1. 用户登录/注销

  • 简单的 session 会话管理
  • 用户账号存储在 data/users.json
  • 支持添加新用户(修改 JSON 文件)

2. 超图文件上传

  • 支持格式: .txt (超图结构), .json (节点信息)
  • 超图结构文件格式: 每行一个超边,节点以空格分隔
    1 2 3
    2 4 5 6
    
  • 节点信息文件格式: JSON 格式
    {
      "1": {"label": "A", "name": "Node1"},
      "2": {"label": "B", "name": "Node2"}
    }

3. 超图分析

  • 基础统计: 节点数、边数、平均度、平均边大小
  • 度分布: 节点度分布分析
  • 边大小分布: 超边大小分布
  • 连通性分析: 孤立节点、连接数统计
  • 交集分析: 超边交集大小分布
  • 语义同质性: 基于节点属性的社会同质性分析

4. 结果展示与下载

  • JSON 格式结果展示
  • 支持下载分析结果
  • 历史记录查看

🛠️ 配置说明

修改端口

编辑 app.py 最后几行:

app.run(host="0.0.0.0", port=8008, debug=True)

port=8008 改为你想要的端口。

添加新用户

编辑 data/users.json:

{
  "admin": {
    "password": "pbkdf2:sha256:...",
    "name": "管理员",
    "role": "admin"
  },
  "user1": {
    "password": "pbkdf2:sha256:...",
    "name": "用户1",
    "role": "user"
  }
}

使用 Python 生成密码哈希:

from werkzeug.security import generate_password_hash
print(generate_password_hash("your_password"))

修改上传文件大小限制

编辑 app.py:

app.config['MAX_CONTENT_LENGTH'] = 500 * 1024 * 1024  # 500MB

🔐 安全建议

  1. 修改密钥: 在 app.py 中修改 SECRET_KEY

    app.config['SECRET_KEY'] = 'your-very-secret-key-here'
  2. 关闭调试模式: 生产环境将 debug=False

    app.run(host="0.0.0.0", port=8008, debug=False)
  3. 使用防火墙: 配置 UFW 只允许内网访问

    sudo ufw allow from 10.159.0.0/16 to any port 8008
  4. 使用 Nginx 反向代理: 提供更好的性能和安全性


📝 开发说明

核心架构

  • app.py: Flask 路由和 Web 逻辑
  • metrics_core.py: 纯计算逻辑,不依赖 Flask/PyQt5
    • HypergraphMetricsCore 类: 封装所有计算方法
    • run_all_metrics() 函数: 一次性运行所有分析

添加新的分析指标

  1. metrics_core.pyHypergraphMetricsCore 类中添加新方法:

    def analyze_new_metric(self) -> Dict[str, Any]:
        # 你的计算逻辑
        return {'result': ...}
  2. run_all_metrics() 函数中调用:

    results['new_metric'] = calculator.analyze_new_metric()
  3. app.py 中添加对应的路由或 API

模板继承

所有页面继承自 base.html:

{% extends "base.html" %}

{% block title %}页面标题{% endblock %}

{% block content %}
    <!-- 页面内容 -->
{% endblock %}

🐛 常见问题

Q1: 启动失败,提示端口被占用

# 查找占用端口的进程
sudo lsof -i :8008

# 杀死进程
kill -9 <PID>

Q2: 上传文件后找不到

检查 uploads/ 目录权限:

chmod 755 uploads/

Q3: 分析报错

查看终端输出的详细错误信息,或查看日志文件 app.log

Q4: 无法从外网访问

确保:

  1. Flask 监听 0.0.0.0 而非 127.0.0.1
  2. 服务器防火墙允许该端口
  3. 校园网防火墙未屏蔽

📞 技术支持

  • 问题反馈: 联系课题组管理员
  • 代码仓库: [GitHub 链接]

📄 License

课题组内部使用

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published