Skip to content
ZuesTianPublic

About

CNT · 粒度:多峰拟合、样品对比与 CSV 导出,支持桌面与 Web

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

GrainPeak

GrainPeak 是一款基于 Python Tkinter 的粒度分析分峰软件,用于读取粒度分布数据、进行多峰拟合、对比多个样品曲线,并导出拟合结果。

在线工作台 · 全部 CNT 工具

功能特性

  • 支持导入 .txt、.csv、.dat 等两列粒度数据文件
  • 支持同时加载最多 6 个文件进行对比显示
  • 支持正常坐标、Log10 坐标、Ln 坐标三种横坐标显示模式
  • 支持三种分峰拟合模型:
    • 伪沃伊特函数(Pseudo-Voigt Profile)
    • 偏斜高斯混合模型(Skew-Normal GMM)
    • 标准高斯混合模型(Gaussian Mixture)
  • 支持自动峰位置初始化和手动设置峰数量
  • 支持四峰固定初值:-1.04、0.15、1.05、1.90
  • 支持峰位置、峰高、峰宽、面积、拟合参数和物理意义展示
  • 支持对选中文件拟合,也支持对所有可见文件批量拟合
  • 支持导出原始数据、拟合摘要、峰参数和拟合曲线到 CSV
  • 内置样例文件自动加载:粒度分析1.txt、粒度分析2.txt

项目结构

src/main.py                  # 桌面启动入口
src/app.py                   # GUI 应用
src/fit_engine.py            # 拟合引擎
webapp.py                    # Web 启动入口
web/                         # 浏览器界面
data/examples/               # 两份粒度示例数据
scripts/                     # 辅助脚本
tests/                       # 自动化测试
requirements.txt             # Python 依赖
GrainPeakAnalyzerDir.spec     # Windows 打包配置

环境要求

  • Python 3.10 或更高版本
  • Windows、macOS 或 Linux 桌面环境

依赖库:

  • NumPy
  • SciPy
  • Matplotlib
  • Tkinter(通常随 Python 自带)

安装依赖

pip install -r requirements.txt

如果当前 Python 环境缺少 Tkinter,请根据系统安装对应的 Tkinter 包。

运行

python src/main.py

浏览器工作台

python webapp.py

浏览器访问 http://127.0.0.1:8770。Web 版复用与桌面版相同的 SciPy 拟合引擎,提供数据上传、三种坐标模式、三种峰形模型、拟合曲线、R²/RMSE、峰参数与 CSV 导出。上传数据只用于当前请求,不在服务端落盘。

从仓库根目录启动后,程序会尝试自动加载 data/examples/ 下的 粒度分析1.txt 和 粒度分析2.txt 作为示例数据。

数据格式

输入文件需要包含至少两列数值:

粒径 强度
0.01 0.12
0.02 0.18
0.05 0.31

说明:

  • 第一列为粒径或横坐标数据
  • 第二列为强度、体积分数或分布值
  • 支持空格、逗号、分号分隔
  • 空行和以 # 开头的注释行会被忽略
  • 数据会按第一列自动排序

使用说明

  1. 点击“添加数据文件”导入粒度分析数据。
  2. 在“横坐标模式”中选择正常、Log10 或 Ln 显示方式。
  3. 在“分峰参数”中选择拟合模型。
  4. 设置峰数量,或勾选“四峰固定初值”。
  5. 点击“拟合选中文件”或“拟合所有可见文件”。
  6. 在下方峰参数表中查看峰位置、峰高、峰宽、面积和物理意义。
  7. 点击“导出对比结果 CSV”保存结果。

拟合模型

伪沃伊特函数

适合同时包含高斯型和洛伦兹型特征的峰形,可用于更灵活地描述粒度分布峰。

偏斜高斯混合模型

适合非对称峰形,可用于描述偏斜明显的粒度分布。

标准高斯混合模型

适合常规多峰粒度分布分析,参数更少、结果更直观。

四峰物理意义标注

程序内置四个参考峰位置,并可根据拟合峰中心自动匹配物理意义:

参考峰位置 物理意义
-1.04 单管/极细管束相,主导高斯特征
0.15 小尺寸亚微米软团聚
1.05 中等尺寸管束网络,处于半分散状态的架凝结构
1.90 大尺寸微米级硬团聚,主导洛伦兹地尾特征

建议在 log 坐标数据或 Log10 显示模式下使用四峰固定初值和物理意义标注。

导出结果

导出的 CSV 文件包含以下内容:

  • RAW_DATA:所有加载文件的原始数据
  • FIT_SUMMARY:每个已拟合文件的模型、R² 和 RMSE
  • PEAK_PARAMS:峰位置、峰高、峰宽、面积、模型附加参数和物理意义
  • FIT_CURVES:总拟合曲线和各分峰曲线数据

打包

项目保留了 PyInstaller 目录版打包配置,可使用以下命令打包:

pyinstaller GrainPeakAnalyzerDir.spec

打包结果会生成在 dist/GrainPeakAnalyzerDir 目录中。

注意事项

  • Log10 和 Ln 模式只会使用粒径大于 0 的数据点。
  • 数据点过少或峰数量设置过高可能导致拟合失败。
  • 多峰拟合结果受初始峰位置、数据质量和模型选择影响,建议结合图形和 R²、RMSE 判断结果可靠性。

About

CNT · 粒度:多峰拟合、样品对比与 CSV 导出,支持桌面与 Web

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages