数据管理分析模块

这段代码实现了一个复杂的图形用户界面应用,用于科学实验数据的管理、分析和可视化。

主要功能和组件介绍

1. 数据存储管理 (H5StorageDataMgr)

  • 数据存储:通过HDF5文件格式保存和加载实验数据。
  • 数据订阅:管理数据流和图像流的订阅,确保在实验过程中捕获和存储所有相关数据。
  • 定时保存:定期自动保存数据,以防数据丢失。
  • 数据清理:在需要时清理当前加载的数据。

2. 图形用户界面 (H5StorageGui)

  • 标签页管理:包含选择数据、绘制数据和事件数据三个主要标签页,每个标签页对应不同的功能模块。
  • 数据选择和加载:允许用户选择数据文件和加载特定实验数据进行分析。
  • 保存和加载按钮:提供保存当前数据和从文件加载数据的功能。

3. 数据绘图 (H5DataPlotter)

  • 数据可视化:使用pyqtgraph和matplotlib库将实验数据绘制成图表,支持多种图形格式(如折线图、散点图等)。
  • 坐标轴选择:允许用户选择和配置x轴和y轴的数据源和显示方式。
  • 定期更新:定期检查并更新绘图数据,以确保图表反映最新的实验数据。
  • 数据导出:将绘制的图表导出为PDF或PNG格式文件。

4. 事件数据处理 (EventPlotter)

  • 事件分析:处理和绘制事件数据,例如离子存活率或损失率的概率或频率。
  • 自定义事件函数:用户可以选择和配置不同的事件函数来分析数据。
  • 保存事件数据:将事件分析结果保存为CSV或pickle文件,方便后续数据处理和分析。

交互功能和用户体验

  • 交互式控件:使用PyQt6提供交互式控件,如按钮、复选框、组合框和文本输入框,使用户能够方便地进行数据选择、配置和操作。
  • 动态更新:用户界面和绘图能够实时更新,确保用户始终看到最新的实验数据。
  • 多样化导出选项:支持将图表导出为不同格式,便于用户在报告和演示中使用。

辅助功能

  • 错误和信息处理:通过日志和弹窗显示错误信息和操作反馈,帮助用户及时了解系统状态和操作结果。
  • 数据过滤和处理:支持数据过滤和自定义处理函数,提供灵活的数据分析手段。

这个应用程序特别适合用于需要频繁收集、分析和可视化实验数据的科研环境。通过集成多种数据处理和绘图功能,它能够显著提高实验数据管理和分析的效率。

导入模块

代码导入了必要的模块和库,用于数据处理、图形绘制、图形用户界面(GUI)开发等。主要模块包括:

  • NumPySciPy:用于科学计算和数据处理。
  • matplotlibpyqtgraph:用于图形绘制。
  • PyQt6:用于构建图形用户界面。
  • pandas:用于数据处理和分析。

全局变量和常量定义

定义了一些物理常数,例如m_Li(锂原子质量)、m_Ba(钡原子质量)和kB(玻尔兹曼常数),这些常量用于后续的计算和拟合。

H5StorageGui 类

这是主界面类,继承自 BWidget。它包含了三个主要组件:

  1. H5StorageDataMgr:用于数据管理和存储。
  2. H5DataPlotter:用于数据的绘制和展示。
  3. EventPlotter:用于处理和绘制事件数据。

__init__ 方法

  • 初始化三个主要组件并将它们添加到标签页中。
  • 设置保存、加载和清除按钮,并配置定时器以定期保存数据。

H5StorageDataMgr 类

该类用于管理HDF5数据存储和加载。主要功能包括:

  • 选择数据存储目录。
  • 管理数据订阅。
  • 存储和加载数据文件。
  • 定期保存和更新数据。

__init__ 方法

  • 初始化数据管理器,设置数据存储路径和文件名。
  • 添加数据订阅编辑器,用于管理数据流和图像流。
  • 配置定时器以定期更新数据。

数据存储和加载

  • savetoFile 方法:将当前数据保存到HDF5文件中。
  • loadFromFile 方法:从HDF5文件中加载数据。
  • clear 方法:清除当前数据。

H5DataPlotter 类

用于绘制和展示数据。主要功能包括:

  • 设置坐标轴选择器。
  • 管理不同数据源。
  • 定期检查和更新数据。
  • 导出图形到PDF或PNG格式。

__init__ 方法

  • 初始化绘图窗口和数据选择器。
  • 设置坐标轴选择器和导出按钮。
  • 配置定时器以定期检查数据更新。

数据更新和绘制

  • checkForNewData 方法:定期检查是否有新数据,并更新绘图。
  • updateDatasources 方法:更新数据源列表。
  • update 方法:更新坐标轴选择器和绘图数据。
  • gen_export_plot 方法:生成用于导出的图形。
  • exportpngexportpdf 方法:导出图形到PNG和PDF格式。

EventPlotter 类

继承自 H5DataPlotter,用于处理和绘制事件数据。主要功能包括:

  • 设置和管理事件数据的坐标轴选择器。
  • 处理事件数据的计算和拟合。
  • 导出事件数据的图形。

__init__ 方法

  • 初始化事件绘图窗口和数据选择器。
  • 配置定时器以定期检查事件数据更新。

数据更新和绘制

  • updateData 方法:更新事件数据。
  • get_event_data 方法:获取和处理事件数据。
  • addFittingaddBinning 方法:添加数据拟合和分箱处理。
  • save_events 方法:保存事件数据。

EventYAxisWidget 类

继承自 YAxisWidget,用于事件数据的Y轴管理。主要功能包括:

  • 管理和更新Y轴数据。
  • 处理事件函数和参数。

updateData 方法

  • 更新Y轴数据和事件函数参数。
  • 处理和应用数据过滤器。

EventFuncWidget 类

用于设置事件函数和参数。主要功能包括:

  • 管理和选择事件函数。
  • 配置事件函数参数。

主要功能总结

  1. 数据管理:通过 H5StorageDataMgr 类实现,支持数据的存储、加载和定期保存。
  2. 数据绘制:通过 H5DataPlotter 类和 EventPlotter 类实现,支持数据和事件数据的绘制、更新和导出。
  3. 图形用户界面:通过 PyQt6 构建,支持用户交互、数据选择和配置。