数据管理分析模块
这段代码实现了一个复杂的图形用户界面应用,用于科学实验数据的管理、分析和可视化。
主要功能和组件介绍
1. 数据存储管理 (H5StorageDataMgr)
- 数据存储:通过HDF5文件格式保存和加载实验数据。
- 数据订阅:管理数据流和图像流的订阅,确保在实验过程中捕获和存储所有相关数据。
- 定时保存:定期自动保存数据,以防数据丢失。
- 数据清理:在需要时清理当前加载的数据。
2. 图形用户界面 (H5StorageGui)
- 标签页管理:包含选择数据、绘制数据和事件数据三个主要标签页,每个标签页对应不同的功能模块。
- 数据选择和加载:允许用户选择数据文件和加载特定实验数据进行分析。
- 保存和加载按钮:提供保存当前数据和从文件加载数据的功能。
3. 数据绘图 (H5DataPlotter)
- 数据可视化:使用pyqtgraph和matplotlib库将实验数据绘制成图表,支持多种图形格式(如折线图、散点图等)。
- 坐标轴选择:允许用户选择和配置x轴和y轴的数据源和显示方式。
- 定期更新:定期检查并更新绘图数据,以确保图表反映最新的实验数据。
- 数据导出:将绘制的图表导出为PDF或PNG格式文件。
4. 事件数据处理 (EventPlotter)
- 事件分析:处理和绘制事件数据,例如离子存活率或损失率的概率或频率。
- 自定义事件函数:用户可以选择和配置不同的事件函数来分析数据。
- 保存事件数据:将事件分析结果保存为CSV或pickle文件,方便后续数据处理和分析。
交互功能和用户体验
- 交互式控件:使用PyQt6提供交互式控件,如按钮、复选框、组合框和文本输入框,使用户能够方便地进行数据选择、配置和操作。
- 动态更新:用户界面和绘图能够实时更新,确保用户始终看到最新的实验数据。
- 多样化导出选项:支持将图表导出为不同格式,便于用户在报告和演示中使用。
辅助功能
- 错误和信息处理:通过日志和弹窗显示错误信息和操作反馈,帮助用户及时了解系统状态和操作结果。
- 数据过滤和处理:支持数据过滤和自定义处理函数,提供灵活的数据分析手段。
这个应用程序特别适合用于需要频繁收集、分析和可视化实验数据的科研环境。通过集成多种数据处理和绘图功能,它能够显著提高实验数据管理和分析的效率。
导入模块
代码导入了必要的模块和库,用于数据处理、图形绘制、图形用户界面(GUI)开发等。主要模块包括:
- NumPy 和 SciPy:用于科学计算和数据处理。
- matplotlib 和 pyqtgraph:用于图形绘制。
- PyQt6:用于构建图形用户界面。
- pandas:用于数据处理和分析。
全局变量和常量定义
定义了一些物理常数,例如m_Li
(锂原子质量)、m_Ba
(钡原子质量)和kB
(玻尔兹曼常数),这些常量用于后续的计算和拟合。
H5StorageGui 类
这是主界面类,继承自 BWidget
。它包含了三个主要组件:
- H5StorageDataMgr:用于数据管理和存储。
- H5DataPlotter:用于数据的绘制和展示。
- EventPlotter:用于处理和绘制事件数据。
__init__
方法
- 初始化三个主要组件并将它们添加到标签页中。
- 设置保存、加载和清除按钮,并配置定时器以定期保存数据。
H5StorageDataMgr 类
该类用于管理HDF5数据存储和加载。主要功能包括:
- 选择数据存储目录。
- 管理数据订阅。
- 存储和加载数据文件。
- 定期保存和更新数据。
__init__
方法
- 初始化数据管理器,设置数据存储路径和文件名。
- 添加数据订阅编辑器,用于管理数据流和图像流。
- 配置定时器以定期更新数据。
数据存储和加载
savetoFile
方法:将当前数据保存到HDF5文件中。loadFromFile
方法:从HDF5文件中加载数据。clear
方法:清除当前数据。
H5DataPlotter 类
用于绘制和展示数据。主要功能包括:
- 设置坐标轴选择器。
- 管理不同数据源。
- 定期检查和更新数据。
- 导出图形到PDF或PNG格式。
__init__
方法
- 初始化绘图窗口和数据选择器。
- 设置坐标轴选择器和导出按钮。
- 配置定时器以定期检查数据更新。
数据更新和绘制
checkForNewData
方法:定期检查是否有新数据,并更新绘图。updateDatasources
方法:更新数据源列表。update
方法:更新坐标轴选择器和绘图数据。gen_export_plot
方法:生成用于导出的图形。exportpng
和exportpdf
方法:导出图形到PNG和PDF格式。
EventPlotter 类
继承自 H5DataPlotter
,用于处理和绘制事件数据。主要功能包括:
- 设置和管理事件数据的坐标轴选择器。
- 处理事件数据的计算和拟合。
- 导出事件数据的图形。
__init__
方法
- 初始化事件绘图窗口和数据选择器。
- 配置定时器以定期检查事件数据更新。
数据更新和绘制
updateData
方法:更新事件数据。get_event_data
方法:获取和处理事件数据。addFitting
和addBinning
方法:添加数据拟合和分箱处理。save_events
方法:保存事件数据。
EventYAxisWidget 类
继承自 YAxisWidget
,用于事件数据的Y轴管理。主要功能包括:
- 管理和更新Y轴数据。
- 处理事件函数和参数。
updateData
方法
- 更新Y轴数据和事件函数参数。
- 处理和应用数据过滤器。
EventFuncWidget 类
用于设置事件函数和参数。主要功能包括:
- 管理和选择事件函数。
- 配置事件函数参数。
主要功能总结
- 数据管理:通过
H5StorageDataMgr
类实现,支持数据的存储、加载和定期保存。 - 数据绘制:通过
H5DataPlotter
类和EventPlotter
类实现,支持数据和事件数据的绘制、更新和导出。 - 图形用户界面:通过 PyQt6 构建,支持用户交互、数据选择和配置。