实验时间线查看器
Timeline
、TimelinePlotter
和 SelectorWidget
。类和方法
Timeline
类
Timeline
继承自 QMainWindow
,实现了一个实验时间线查看器。
方法:
__init__(self, *args, **kwargs)
:初始化时间线查看器。- 设置窗口标题为"Timeline Viewer"。
- 加载JSON文件中的实验序列。
- 创建主窗口组件,包括文件加载区、绘图区和选择区。
- 设置中央窗口部件。
plot_experimental_sequence(self, time_dict, init_vals=None)
:绘制实验时间序列。- 重置绘图区域。
- 深拷贝时间序列字典。
- 找到最大时间
tmax
。 - 为每个时间序列添加一个点,确保每个序列都在
tmax
结束。 - 准备颜色。
- 为每个选中的输出绘制折线图,并根据条件选择不同的颜色和填充方式。
load_file(self, filename)
:加载实验序列文件。- 读取JSON文件并解析实验序列。
- 获取输出名称集合。
- 构建时间序列字典。
- 逆向设备数据库转换时间序列字典。
- 更新选择器组件中的名称。
decode_ttl_bitmask(self, bitmask, command)
:解码TTL位掩码。- 将位掩码转换为二进制字符串。
- 找到二进制字符串中的所有1的位置。
- 根据命令生成TTL字典。
get_set_of_used_outputs(self, sequence)
:获取使用的输出集合。- 遍历实验序列,提取所有使用的输出名称。
construct_time_sequences(self, sequence, set_of_output_names)
:构建时间序列字典。- 创建时间序列字典结构。
- 填充时间序列字典。
reverse_device_db_transformation(self, time_sequence_dict, device_db_path=workpath+'/configuration/')
:逆向设备数据库转换时间序列字典。- 加载设备数据库。
- 构建逆向映射字典。
- 根据逆向映射字典转换时间序列字典中的名称和值。
TimelinePlotter
类
TimelinePlotter
继承自 GraphicsLayoutWidget
,用于可视化实验序列。
方法:
__init__(self, sequence)
:初始化绘图组件。- 订阅属性。
- 设置背景为白色。
- 初始化绘图字典。
SelectorWidget
类
SelectorWidget
继承自 QFrame
,用于选择要显示的实验序列。
方法:
__init__(self, parent=None, clear_name_dict=None)
:初始化选择器组件。- 创建主布局和按钮。
- 创建滚动区域用于显示复选框。
get_names(self, clear_name_dict)
:获取并显示名称。- 获取清晰名称字典的键并排序。
- 如果名称未变化,则直接返回。
- 否则,更新滚动区域中的复选框。
select_all(self)
:全选复选框。- 将所有复选框设为选中状态。
deselect_all(self)
:取消全选复选框。- 将所有复选框设为未选中状态。
主函数
代码通过创建 QApplication
实例和 Timeline
窗口来执行,并启动应用程序的主循环。
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Timeline()
window.setWindowIcon(QtGui.QIcon(workpath + '/balic/icons/time_line.png'))
window.setWindowTitle('Timeline Viewer')
window.show()
sys.exit(app.exec())
代码执行
该代码通过命令行执行,创建一个Timeline
对象,并显示实验时间线查看器窗口。