跳转到主要内容

使用MAD-X进行加速器仿真的GUI。

项目描述

madgui是一个使用cpymad通过MAD-X进行交互式加速器仿真的Qt5 Python GUI。它目前可以在Python 3.4及以上版本上运行,但未来可能需要更高的Python版本。

安装

pip install madgui

使用方法

现在,您应该可以使用以下命令启动madgui:

madgui

可选地,madgui可以接受一个madx/model文件的文件名

madgui /path/to/model.madx

请注意,madgui目前仅适用于相对较小的序列,最多几百个元素。

配置

应用程序在当前目录或用户主目录中加载YAML配置文件madgui.yml

示例文件

model_path: ../hit_models
session_file: madgui.session.yml
online_control:
  connect: true
  backend: 'hit_acs.plugin:TestACS'
onload: |
  code to execute on startup

开发指南

请参阅开发者指南

复制

版权所有2016-2019 HIT Betriebs GmbH

本程序是自由软件:您可以自由分发和/或修改它,前提是遵守自由软件基金会根据许可证版本3发布的GNU通用公共许可证的条款,或者(根据您的选择)许可证的任何更高版本。

本程序的分发是希望它会有所帮助,但没有任何保证;甚至没有对适销性或特定用途的隐含保证。有关更多详情,请参阅GNU通用公共许可证。

您应该已经收到了与该程序一起的GNU通用公共许可证副本。如果没有,请参见 <https://gnu.ac.cn/licenses/>。

有关许可证的完整文本版本,请参阅 COPYING.GPLv3.txt

变更日志

20.10.0

日期:2020年10月15日

  • 添加轨道展平的光学变化方法

  • 将Sphinx V4.2.4作为默认文档

20.7.0

日期:2020年7月28日

  • 更改Pyqtconsole v1.2.1

20.6.0

日期:2020年6月3日

  • 修复光学变化方法中的错误

  • 将PyQt版本降级到5.12.3

20.4.2

日期:2020年4月25日

  • 更新用户手册。工作进行中

  • 将动态颜色添加到快照中

20.4.1

日期:2020年4月22日

  • 添加匹配功能中的约束。如果残差过高,则不更改光学

20.4.0

日期:2020年4月8日

  • 将执行按钮添加到匹配小部件中

  • 将pyqtconsole降级到1.1.3

  • 添加sample_model依赖项

20.1.0

日期:2020年1月25日

  • 重新审视自动加载模型功能

  • 自动加载由读取强度对话框中的按钮取代

  • 将pyqtconsole依赖项更新到1.1.5

19.8.0

日期:2019年8月19日

  • 添加自动加载模型功能

19.6.3

日期:2019年6月6日

  • 默认使用ORM轨道校正方法

  • 为元素信息选项卡添加工具提示

19.6.2

日期:2019年6月5日

  • 修复GLWidget.closeEvent中的异常

  • 明确请求OpenGL版本以增加获取3.0上下文的机会

  • 请求OpenGL 3.2核心配置文件(不允许过时功能),以避免以后出现向后不兼容的问题

19.6.1

日期:2019年6月5日

  • 修复“插值点”菜单项未更新绘图的问题

  • 修复在取消选择/选择监控器后未更新监控器指标的问题

  • 通过添加缺失的着色器到安装中修复3D调查小部件

  • 记录OpenGL版本并显示更友好的不兼容版本错误信息

  • 修复序列反转后元素指标显示不正确的问题

  • cpymad 1.2.1修复了在没有stdin的情况下(例如Windows GUI)在应用程序上下文中单击“关于MAD-X”菜单项时发生的死锁

19.6.0

日期:2019年6月2日

  • 修复打开新模型后使用元素信息时的异常

  • 处理在打开新模型后元素选择保留的信号处理程序的问题(通过取消选择选择)

  • 降低元素指标的不透明度

19.5.5

日期:2019年5月27日

  • 修复序列中多次出现的元素只绘制一次的问题

  • 添加更多文档

  • 将twiss小部件代码从绘图模块拆分,以便在没有导入GUI代码的情况下外部使用绘图函数

3D调查小部件
  • 修复扩散光照方向计算中的错误

  • 将薄元素显示为圆盘

  • 显示更多元素类型,五彩缤纷

  • 修复未绘制初始模型的问题

  • 根据半径缩放圆圈上的点数

19.5.4

日期:2019年5月16日

  • 添加基于OpenGL的真正3D调查小部件(WIP)

  • 修复在曲线管理器工具中单击快照按钮时的异常

  • 修复导入没有文本列的表格时的TypeError

  • 在输入无效数字格式时显示警告(而不是静默忽略无效输入)

  • 在忽略无效旋钮字符串时显示警告

19.5.3

日期:2019年5月13日

  • 允许步长字段为负值(ORM测量对话框)

  • 修复使用没有撤销堆栈的模型时的AttributeError

  • 修复匹配对话框中“添加”按钮的ValueError

  • 将“写入强度”菜单项与“读取强度”进一步分离

  • 为“读取强度”添加快捷键

  • 以广度优先的方式查找模型,而不是深度优先

  • 修复更改绘图时(尤其是从具有许多曲线的绘图到具有较少曲线的绘图)更新不正确的问题

19.5.2

日期:2019年5月11日

  • 添加调查/sectormap绘图的选择

  • 在共享绘图模式下默认将图例显示在图形外部

19.5.1

日期:2019年5月11日

  • 在日志区域显示 UndoStack.macro 调用

  • 添加菜单项以就地反转当前序列(实验性)

  • 将 DRIFT 属性显示为继承的

  • 启动 usrguide(目前非常基础),文档化 QT_SCALE_FACTOR

  • 添加工具栏项以显示/隐藏 BPM

  • 添加 Backend.read_params 方法以读取所有/多个参数(需要 hit_acs>=19.5.0)

  • 在 orm 测量过程中导出完整的参数转储

  • 升级到 cpymad 1.2.0,MAD-X 版本 5.05.00

19.5.0

日期:2019年5月7日

  • 修复在更改模型时出现的 TypeError

  • 在 ORM 测量对话框中导出时间以及 BPM 值

19.4.4

日期:2019年4月25日

  • 修复在正确器对话框中在罕见情况下可能出现的几个小异常

19.4.3

日期:2019年4月25日

  • 修复 UndoStack.macro() 中的 RecursionError,该错误在使用正确器对话框的 MATCH/sectormap 方法时可能发生

  • 修复 UndoStack.rollback() 中的潜在 NameError

  • 修复可能导致 TypeError 和多次信号处理程序执行的意外信号连接(例如,触发 EditConfigDialog 两次)

19.4.2

日期:2019年4月24日

  • 修复日志小部件在 Windows 上的等宽显示

  • 修复通过菜单设置最大日志大小时的异常

  • 修复在正确器对话框中使用 MATCH 或 sectormap 方法时出现的异常:“TypeError:macro()缺少 1 个必需的位置参数”

  • 修复在正确器对话框中更改配置(组合框)时出现的 TypeError:“TypeError:itemText(self, int): 参数 1 的类型意外”

19.4.1

日期:2019年4月13日

  • 修复在更改日志级别后日志为空的异常

  • 改进日志小部件的长期使用性能(#35)

  • 添加设置最大日志长度的菜单和配置项

  • 修复未指定颜色的日志条目接收来自上一个条目的颜色

  • 改进非 GUI 模式应用程序支持

  • 通过将对话框转换为顶级窗口,使主窗口能够在其他窗口之上显示

  • 简化对话框实例化和内部逻辑

  • 修复“轨道校正 -> 测量响应”小部件中的“校准”按钮。在早期重构后缺少实现

  • 根据 eventFilter 实现 notifyEvent。这使得可能进行这些事件通知,从而防止由于调用死对象而导致的错误。

  • 将 shell 从 dockwidget 转换为正常对话框

  • 允许同时打开多个控制台窗口

  • 用更快的、更轻量级的 pyqtconsole 替换 qtconsole

  • 这修复了调用“exit()”时的“AttributeError”

  • 还修复了“执行中止”错误,该错误阻止在之前的命令中引发异常后执行进一步的语句

  • 努力改进文档和交叉引用

  • 使用 pint 0.9

19.4.0

日期:2019年4月1日

  • 删除 python 3.5 兼容性,至少需要 3.6

  • 修复尝试显示绘图时出现的异常,如果加载包含 SELECT, flag=TWISS 命令的 madx 文件

  • 修复当显示一个几乎恒定的数量时(通过在 y=0 处绘制一条不可见的水平线)出现的奇怪的 matplotlib 偏移行为

  • 添加重做 twiss 和刷新绘图的菜单项

  • 添加设置插值点数的菜单项

  • 添加插值点数的配置项

  • 修复文档中的某些警告/错误

  • 将 QUndoStack 替换为我们的实现,以简化在非 GUI 环境中使用 Model

  • 暂时移除 QUndoView(由于替换 QUndoStack 的限制)

  • 使用静态元数据和重工作 Travis 脚本来简化 setup.py

19.3.3

日期:2019年3月21日

  • 作为 gui 脚本安装

  • 修复由于作为 gui 脚本调用时缺少 stdout 而在 pyqtconsole 中出现的 ValueError: fallback required but not specified

19.3.2

日期:2019年3月21日

  • 修复 TypeError:set_draggable() 缺少 1 个必需的位置参数(在共享绘图模式下)

  • 在曲线 y 标签中添加单位

  • 更改某些数量标签

  • 分离的函数用于编辑模型参数,适用于插件等

19.3.1

日期:2019年3月12日

  • 添加缺失的文件 twissfigure.yml

  • 添加 import_path 配置项,用于将插件文件夹添加到 sys.path

  • 在配置中展开‘~’和环境变量: run_pathmodel_pathimport_pathsession_file

19.3.0

日期:2019年3月12日

  • 放弃对 Python 3.4 的支持

  • 从轨道校正对话框中删除“通过增量”复选框,尽可能始终使用测量的监控位置

  • 依赖 cpymad 1.1.0

  • 自动更新绘制的监控标记

  • 修复 Ctrl+P 关闭主窗口的问题

  • 处理所有应用程序窗口内的菜单热键

  • 添加菜单选项和热键以增加或减少字体大小

  • 记住字体大小设置

  • 一些错误修复

  • 从诊断对话框中删除过时的“更新”按钮

内部

  • 将 ORM 分析代码移至其独立的包

  • 添加 PyQt5 作为常规依赖项(可以通过 pip 自动安装)

  • 在 py35 上添加测试

  • 重构 madgui.plot 中的模块

  • Session 中删除上下文管理能力

  • 用我们自己的轻量级解决方案替换 pyqtSignal(为允许模型等在没有 GUI 的情况下实例化做准备)

  • 不再继承 cpymad.madx.Madx,将功能直接移至 cpymad

  • 重构/简化缓存类

  • 使 twissfigure 模块更多地独立于主窗口/会话,并简化绘图 API(可独立使用而不需要 madgui 的函数)

  • 重构场景图,为通过曲线管理器对话框完全一致地管理所有场景元素做准备

  • 优化更新绘图时的性能

  • 修复构建文档时的错误

  • 开始开发指南文档部分

  • 引入一种轻量级的历史类型来管理多个组件中的历史

  • 直接使用 PyQt5 导入,移除 madgui.qt 兼容性模块

  • 将校正对话框拆分成组件,为伟大统一做准备

19.01.0

日期:2019年1月19日

  • 修复 py3.4 中的语法错误

  • ORM 分析工具的内部开发

  • 为模型添加反转序列的方法

  • 泛化和稍微简化轨道拟合 API

  • 仅将“直接”变量(即非延迟表达式)视为旋钮

  • 通过延迟表达式递归地搜索旋钮

  • 从 ACS 后端动态解析单位字符串

  • 适应 hit_csys -> hit_acs 的重命名

  • 适应 hit_acs 19.01.0 的更改

  • 经验轨道校正的测量响应方法的基本版本

  • 安装一个公共 BeamSampler,用于监控和发布新读数

18.12.0

日期:2018年12月11日

更新依赖项

  • 更新到 cpymad 1.0.10

  • 新增依赖 scipy!

错误修复

  • 修复在光束选项卡小部件中的 TypeError

  • 修复某些小部件只在第二次点击时显示的 bug

  • 明确指定大多数可编辑表格的正确数据类型

  • 修复某些导入例程中的异常

  • 修复没有配置文件启动时的异常

  • 修复由于编码名称而导致的某些系统上的早期异常

杂项

  • 将 sectormap 和光束矩阵显示为类似矩阵的表格

  • 改进光束矩阵的查找逻辑

  • 删除“表达式”列,以取而代之的是复合编辑小部件

  • 一些内部 API 更改

  • madgui.util.fit 中添加拟合 API

  • 允许加载具有文本列的表格文件

  • 从名称列推断加载表格文件时缺失的 S

  • 在travis构建过程中自动生成apidoc文件

  • 更新travis配置,以淘汰基于容器的基础设施的支持

  • 默认将构建标记为开发版本(travis)

  • 认识到常量不能用作旋钮

  • 将load_yaml函数移动到madgui.util.yaml

  • 添加简单的回代轨道API

  • 回溯时从不要求betx、bety

  • ORM实用API的开发

18.10.3

日期:2018年10月31日

修复错误

  • 修复由于使用错误的栈而导致撤销功能无法工作的问题

  • 修复在指定表时Model.twiss中的异常

ORM分析

  • 与轨道校正共享get_orm()实现

  • 去重,多项代码改进和简化

  • 使用base_orbit回溯初始条件

  • 将绘图函数添加到分析脚本中

  • 更好的输出

  • 添加独立拟合X和Y的能力

  • 在未记录的规范文件中简化ealign表示法

18.10.2

日期:2018年10月25日

修复错误

  • 修复在Qt<5.9中缺少setObsolete的问题(之前只部分修复)

  • 修复输出文件中光学元件列表为空的问题

  • 修复由于洪水导致beamoptikdll未启动设备下载的问题

  • 修复读出逻辑中的重复值错误

  • 减少导致不一致读出的竞争条件的机会

UX改进

  • 也记录到主日志窗口

  • 在轨道响应测量期间增加日志详细程度

  • 每次写入后刷新文件

  • 按顺序改变引导器

  • 避免一个多余的读出

  • 将默认引导器变化增加到0.2毫弧度

ORM分析

  • 将缺少ORM条目视为零

  • 限制到使用的旋钮

  • 修复记录文件中的空引导器字段

  • 处理ORM分析中的累积错误

  • 添加简单的绘图脚本

18.10.1

日期:2018年10月20日

  • 修复打开匹配对话框时的异常

  • 修复由于fit_range错误导致的初始条件拟合问题

  • 在校正器小部件中添加对None偏移的保护措施

  • 将轨道校正限制为仅X/Y约束

  • 让用户选择是拟合测量值与设计值之间的差异,还是直接拟合设计值(这在回溯没有很好地描述监控值的情况下可能不同)

18.10.0

日期:2018年10月18日

现在使用calver(日历版本)YY.MM.patch,因为这样可以更好地适应madgui开发的本性,并且我相信这对最终用户更有用。

新功能

  • 添加.app图标作为.ico文件(用于快捷方式等)

  • 添加基于轨道响应矩阵(ORM)的轨道校正模式

  • 添加一个假设轨道响应矩阵=sectormap的更简单模式

  • 将方法选择添加到OVM对话框

  • 添加记录轨道响应矩阵的对话框

  • 添加生成测试ORM记录的脚本

  • 添加分析ORM记录的脚本

改进

  • 在执行前可以编辑引导器值

  • 在光学变化对话框中实现上一个/下一个按钮

  • 允许多个楼层平面窗口

  • 防止由于MPL重绘导致的烦人的忙碌光标

  • 打开我们自己的模块的警告

  • 正确关闭并等待MAD-X进程

  • 改进引导器/监控显示表更新

  • 不再为每个MAD-X会话自动创建日志文件

  • 让MAD-X不那么冗长:命令回显关闭!

错误修复

  • 修复在光学变化对话框中点击“应用”时的AttributeError

  • 修复在打开曲线管理器小部件时发生的NameError

  • 修复在OVM对话框中更改选中配置时缺失的反应

  • 修复在OVM自动模式下记录前的缺失更新

  • 修复在MGM对话框中编辑配置后的AttributeError

  • 编辑配置后更新配置组合框

  • 修复编辑配置后当前配置未更新的问题

  • 修复抖动选项...

  • 修复多个 DeprecationWarnings

  • 关闭小部件时停止 ORM 流程

  • 修复导出菜单项的状态消息

  • 修复模型加载器(路径)中的错误

  • 修复没有加载 csys 后端时的 yaml.RepresenterError

  • 修复加载独立的 .madx 文件时的错误

  • 对校正器代码进行一些杂项修复

  • 使用按钮组来防止取消选择单选按钮

元数据

  • 添加合理性检查(pyflakes、提示缺失导入、语法错误等)

  • 添加自动风格检查(pycodestyle)

  • 添加对(现在)非 UI 组件的第一次测试:模型/会话/校正器

  • 添加基本文档(在推送至 master 时更新)

  • 推送标签时自动上传发行版到 PyPI

  • 将源代码移动到不可导入的子目录

重构

  • 改进命名:set_rowgetter -> set_viewmodel

  • 删除光学变分和多网格模块(OVM/MGM)之间的重复代码

  • 删除我们的 ElementInfo 代理类,直接使用 cpymad 中的 Element

  • 删除几个过时/未使用的方法和死代码

  • 共享监控读数的管理

  • 将 AsyncReader 功能移动到 cpymad

  • 使用 cpymad 的多行输入收集命令

  • 自动显示 SingleWindow 小部件

  • 简化对 twiss 表的访问

  • 让在线插件管理其设置菜单

  • 移动几个模块和类

  • 去耦合 Model:没有 GUI,没有配置,没有图表!!!

  • 删除几个现在可以通过 cpymad 内省的 MAD-X 数据结构的静态配置项

  • 全局化几个不需要作为类接口一部分的私有方法

  • 稍微简化 twiss args 猜测器

  • 丢失过时的线程工具 [core.worker, QueuedDispatcher]

  • 不再需要线程安全(没有更多线程…;)

  • 重命名 control._plugin -> .backend

  • 删除需要单独的 Loader 类的需求

  • 添加 Model.changed 重载,它传递旧值和新值

  • 内联和简化几个方法

  • 引入一个新的 Session 对象,它作为上下文对象替换 MainWindow,并且可以在没有活动 GUI 的情况下使用

  • DRY up MANIFEST.in

  • 为非 GUI 使用去耦合 ProcBot

  • 使 Corrector 与 GUI 无关

  • 将记录/导出责任移动到 Corrector(从 CorrectorWidget)

  • 让 Corrector 仅知道活动配置

...等等

1.14.0

日期:2018.07.24

  • 重构和简化树形视图数据模型,更一致的表定义

  • 表中的等宽字体

  • 自动保存和恢复在线设置(MEFI)

  • 修复 Qt<5.9 上的 QUndoCommand.setObsolete 缺失

  • 在多网格配置中允许定义 limits 参数

  • 修复如果选择监控器太少时的 IndexError

  • 在轨道/发射对话框中实现缺失的导出功能

  • 使用 data_key 进行初始条件导入/导出

  • 添加与 mirko 中的类似导入/导出菜单

  • 实现从 YAML 导入强度

  • 重构导入/导出逻辑

  • 将 YAML 设置为强度导出的默认过滤器

  • 在 .str 文件中识别 '!' 注释字符

  • 修复树形视图编辑微调框以适合其列

  • 在 SyncParamWidgets(读写强度)中突出显示更改的项目

  • 在初始条件对话框中用粗体突出显示显式指定的束/twiss 参数

  • 在诊断对话框之间进行代码去重:共享相同的 rowgetter 方法

  • 为轨道/光学在不同的列表中保存选定的监控器

  • 同时支持 QTableView 和 QTreeView,这有一些优点,例如支持背景颜色

  • 在多网格对话框中用粗体突出显示更改的 steerers

  • 基于表格视图重构光变异对话框,添加了自动化UI

  • 在TableView中禁用部分高亮显示

  • 重构轨道校正对话框中变量的存储方式

  • 在“steerer校正”表格中始终显示当前值与“要应用”值的对比

  • 在轨道校正对话框中添加前后按钮

  • 在元素信息对话框中使用更美观的箭头按钮(QToolButton)

  • 在轨道校正期间显示监控器

1.13.0

日期:2018年7月15日

  • 简化curvemanager工具的激活逻辑(以前是一个具有复杂行为的切换项,现在是一个简单的按钮,将创建小部件)

  • 为curvemanager小部件添加“确定”按钮

  • 修复按下“确定”时beam diagnostic对话框保持打开且空白标签页的问题

  • 从setup.py中删除对minrpc版本的显式依赖(可能解决了cpymad对minrpc版本的要求被忽略的问题)

  • 改进匹配对话框中的旋钮选择/输入

  • 更改在多网格配置中定义“分配”表达式的方式,现在可以仅绑定到x或y

  • 添加基于光学的偏移校准小部件

  • 将回溯法作为计算初始坐标的方法(而不是反转sectormaps)

  • 在诊断对话框和多网格之间进行一些代码重复消除

  • 在多网格配置中允许指定匹配的“方法”(lmdif/jacobian/…)

  • 在日志窗口中显示/隐藏时间戳

  • 使树视图列可由用户调整大小(将在视图更改大小时重置)

  • 简化拉伸逻辑并删除自定义列拉伸因子

  • 对一些ColumnInfo定义进行少量清理

1.12.0

日期:2018年6月26日

  • 添加“关于Python”菜单项

  • 修复Model.get_transfer_maps / Model.sectormap中的错误

  • 将多个变量更新命令收集到一个RPC调用中

  • 添加一个用于封装通用值的类

  • Mainwindow.model改为Boxed对象!!

  • 删除Model.destroyed信号,改用更通用的Boxed.changed信号

  • get_elem_twiss添加envx/envy

  • 修复“读取强度”/“写入强度”对话框中的数据导出

  • 在导出小部件中将“确定”设置为默认按钮

  • 添加执行MAD-X文件(即CALL)的菜单项

  • 分别记住“加载强度”和“执行文件”项的文件夹

1.11.4

日期:2018年6月11日

  • 修复model.sectormapget_transfer_maps中sectormap区间开/闭不一致的问题

1.11.3

日期:2018年6月11日

  • 添加“导出强度”菜单项

  • 在全局编辑中添加导出为.str文件

  • 修复JSON错误地列为例子导出格式

  • 根据var_type(预定义性)显示全局

1.11.2

日期:2018年6月11日

  • 修复由于自动缩放而导致每次曲线重绘时丢失缩放/视图的问题

  • 修复尝试保存会话数据时出现的AttributeError。这仅在线控制未连接时出现,并阻止保存当前模型、文件夹等

  • 修复计算不同卷积上的模型相对路径时的ValueError

  • 让madgui在Windows上拥有自己的任务栏组

  • 添加初步窗口图标

  • 对model.get_transfer_maps有更一致的行为

  • 美化Python shell中numpy数组的默认输出格式

元素指示器:- 监控器有更明显的线条 - 正负偶极子强度的位移翻转 - 根据磁铁强度缩放位移/四极子颜色 - 在背景中绘制元素指示器 - 通过添加轮廓区分双峰曲线 - 为元素指示器设置alpha=1 - 在SBEND内添加KICK标记 - 突出显示选中和悬停的元素

1.11.1

日期:2018年6月1日

  • 修复主要在Windows上出现、在MAD-X命令中输出较长的死锁问题(此修复将导致目前性能略有下降)

  • 避免启动时的一些不必要的更新/重绘

  • 记住连接到哪个在线插件

  • 一些额外的日志语句信息

  • 再次更改onload,以便在加载模型之前执行

1.11.0

日期:31.05.2018

杂项

  • 需要cpymad 1.0.0rc3

  • 修复多网格视图未更新

  • 为K0添加单位

  • 在twiss后更新楼层平面测量

匹配

  • 将多个匹配约束在同一元素和位置合并为一个语句

  • 仅对使用的量指定权重

  • 如果约束数量不正确,则禁用匹配

  • 在禁用匹配模式时不要重置匹配

元素/参数对话框

  • 修复全局可编辑时的条件

  • 再次在标题中使用大写字母显示元素属性名称

  • 显示变量名称的开头部分为小写

  • 利用cpymad的informvar_type

TreeView

  • 改进/重构内部TableView API

  • 使用树视图

  • 在树视图中展开向量

  • 在全局编辑/命令编辑中展开出现在表达式中的变量

撤消

  • 支持撤消简单的.str文件

  • 移除有缺陷的接受/拒绝逻辑,即“取消”按钮,现在只留下“确定”按钮(正确实现“取消”的逻辑并不简单,行为可能仍然令人困惑)

  • 将撤消实用程序移动到自己的模块

  • 子类化QUndoStack

  • 从不显示空宏(QUndoCommand.setObsolete)

绘图

  • 在所有窗口之间共享加载的曲线

  • 在mainwindow中处理add_curve/del_curve

  • “快照”现在保存所有可用的twiss数据,以便在更改图表时,其他曲线的快照将显示出来

  • 优雅地处理用户曲线中的缺失数据(之前异常非常明显,现在显示调试消息)

  • 在Y图上反转四极聚焦颜色代码

  • 通过上下移动指示器位置来区分SBEND/KICKER的符号

  • 较小的但更明显的指示器

  • 淡出“非轴心”的击打器(例如Y图中的HKICKER)

  • 在Y方向上移除网格线

  • 修复状态栏中缺失的元素名称

  • 在每次绘制时更新元素标记

1.10.1

日期:15.05.2018

  • 修复ElementList.__contains__

  • 显示/编辑全局变量的表达式字段

  • 修复py34上的SyntaxError

  • 需要cpymad 1.0.0rc2

  • 在编辑束时,只有当显式给出时才使用e_kin

  • 设置新参数时更精确地处理撤消

  • 在更新表达式之前使用不区分大小写的字符串比较

  • 修复导致匹配过程中UI单位转换因子平方的bug

  • 在匹配小部件中使用内置的单位转换机制

  • 在编辑时,允许通过直接值覆盖延迟表达式

  • 修复未在撤消堆栈上跟踪元素属性修改的问题

  • 修复会阻止某些元素属性更新的过时检查

  • 通过依赖模型无效化来简化并统一ParamTable口味

  • 通过用它们的值替换它们来实现“表达式删除”

  • 对于字符串属性,使“表达式”字段不可变

1.10.0

日期:13.05.2018

  • 在加载模型后执行onload命令

  • 将坐标轴和尺寸指示器添加到楼层平面

  • 在发射度模块中使用logging记录警告

  • 使用全局记录器而不是个人记录器

  • 修复TableView中的bug,该bug可能导致使用错误的量进行单位转换

  • 旋钮现在是仅在延迟表达式中出现的全局变量

  • 移除Knob

  • 在全局变量对话框以及匹配对话框中不显示单位

  • 用大写字母显示全局变量名称

  • 使用.ui文件作为mainwindow

  • 在主窗口中添加过滤显示日志记录的UI

  • 默认抑制MAD-X输出

  • 大幅度重构和清理TableView API;旧的ValueProxy类现在被Delegate类取代,后者对单个单元格一无所知,以及一个提供上下文的Cell

  • 通过传递适当的值或回调函数到ColumnInfo,允许专门化几乎所有的数据角色

  • 统一并改进处理已选列的方式

  • 删除左/右数字对齐的配置项

  • 引入监控校准的偏移量

  • 添加一种简单的方法来定义监控偏移量,即模型和测量之间的差异

  • 在内部保持监控值以MAD-X单位

  • 为多个表格视图的列标题添加单位

  • 为元素添加“表达式”列

  • 使用粗体突出显示用户指定的值

  • 删除DataStore,由简化的TableView API和getter方法替代

  • 修复能量/质量UI单位

  • 为光束添加“E_kin”字段

  • 修复YAML参数导出器的异常

  • 修复由于插值导致的sectormap中的错误

  • 在更改之间只计算一次sectormap,并且仅在需要时计算

  • 修复在twiss后未重绘的问题

  • 修复kick编辑(仅适用于HIT-model风格的角/k0定义)的异常

  • 删除Element.id,改用.index

  • 删除对Element的代理层,直接使用cpymad元素

  • 删除对引用向量组件的标量名称(如“KNL[0]”)的支持

  • 简化ElementList以及如何访问元素

  • 修复open_graph始终显示“轨道”图的问题

  • 将不同的光束诊断任务作为标签对话框的一部分,增加代码共享

  • 重构光束诊断小部件、布局、按钮、默认值

  • 记住绘图窗口的位置、大小和图形名称

  • model中内联一些初始化方法

  • 使用撤销/重做机制和相应的历史小部件,修复在多个地方使用的备份/恢复机制

1.9.0

日期:2018年4月16日

改进

  • 将x/y/px/py值添加到元素信息对话框中的Twiss选项卡

  • 在每次新的监控读数时重新绘制回溯的twiss

  • 在检测旋钮时考虑SBEND->K0

  • 删除旋钮的转换机制,现在这是模型本身的职责(通过使用适当的表达式)或在线插件

  • 仅使用用户定义的变量作为延迟表达式中的旋钮,将固定数字视为静态

  • 在打开监控对话框时显示带有监控宽度和位置的标记,可以选择显示哪些

  • 向监控小部件添加更新/回溯功能

  • 在列标题上显示单位

  • 为监控添加简单的数据导出

  • 使监控小部件成为主窗口的子窗口(因此当主窗口关闭时,它也将关闭)

  • 使用session文件在多个madgui运行之间保持一些设置:主窗口大小/位置、模型、文件夹、选定的监控

  • 在twiss图中启用网格(主要针对y=0)

  • 为应用程序和模型添加onload配置条目

  • 删除基于setuptools的在线模型条目,必须由用户使用onload处理程序手动加载

  • 在元件的出口端绘制元件标记

  • 统一日志窗口与MAD-X输入命令、输出以及日志记录,基于带有不同颜色额外选择的PlainTextEdit,对眼睛和双手都更容易!在左侧显示行号和时间。

  • 在日志窗口中显示异常

  • 关闭Pint重新定义警告

  • 按时间顺序显示交错MAD-X输入/输出

  • 在配置编辑对话框(多网格)中显示行号

  • 仅在第二个信息选项卡中显示实际的MAD-X命令参数

  • 在摘要标签中为SBEND添加 kick 属性

错误修复

  • 修复py34上的异常:缺少 math.isclose

  • 修复平面图中的异常

  • 修复由于丢弃 Expression 导致的匹配错误

  • 修复横梁角度的单位转换

  • 修复配置文件中的多网格 assign

  • 使用浮点编辑框进行目标值

  • 修复多网格目标值的输入单位

  • 修复消失的监视器小部件的bug(与GC相关)

内部更改

  • 使用函数调用语法从布尔代理获取值

  • 删除一些遗留的py2兼容性代码

  • 支持配置条目的属性访问和 on_change 信号,使 config.NumberFormat 成为简单的配置条目

  • user_ns 重命名为 context

  • 清理一些未使用的导入、未定义的名称等(pyflakes)

  • 用不带 size 参数的更简单的函数替换 monospace 函数

  • 在访问元素属性时去除大写限制

  • 适应 cpymad 1.0 API 的变化

  • 翻转 gantry_angle 的定义(MAD-X 5.04.00 中 SROTATION->ANGLE 已更改)

1.8.0

日期:2018年3月25日

  • 从模型文件中删除 api_version 条目

  • 添加菜单项以加载 MAD-X 文件

  • 按“Home”按钮时自动缩放绘图

  • 添加 model.sectormap 短路方法以在 ipython shell 中使用

  • twiss/beam 初始化对话框
    • 删除单独的初始化标签的菜单项,移动到文件菜单

    • 将配置中指定的属性视为实数,而不是整数

    • 根据当前小部件更新保存/打开按钮的启用状态

  • 元素信息框
    • 为元素信息框添加带有 sectormap 的标签

    • 点击另一个元素时更新标题(之前只有在更改时使用组合框才会更新)

    • 修复“打开”按钮

  • 两个
    • 默认使用 spinbox=true

    • 使用 QuantityValue 对于浮点数(旋转以获胜!)

    • 修复编辑布尔值

    • 修复显示 SpinBox 时 IntValue 的显示bug

    • 修复“保存”按钮

  • 匹配
    • 匹配表达式中的变量

    • 在应用校正后重用计算出的初始化条件

  • 内部资源处理
    • 删除 PackageResource

    • 在适当的地方用 importlib_resources 替换 pkg_resources

    • 删除 madgui.resource 包

  • 省略号绘图
    • 为初始化对话框添加椭圆标签

    • 添加 x/y 标签

    • 使用 tight_layout

    • 使用 ui 单位

    • 在网格上绘制椭圆

    • 修复当 alpha 为负时交换的椭圆轴

    • 修复半轴公式的错误

  • 单位
    • 内部传递值为普通浮点数,仅进行输入/输出/用户界面转换(#2)

    • 将所有 Expression 实例替换为其值,摆脱 SymbolicValue

    • 为用于转换的 madx_unitsui_units 引入全局变量

    • 使用“°”符号格式化度数

    • 改进列表的单位标签

    • 删除 pint 单位文件,使用与 pint 一起提供的默认文件

1.7.2

日期:2018年3月5日

  • 添加椭圆轴长度的缺失因子2

  • 在此版本中不需要新 cpymad 的 AttrDict

1.7.1

日期:2018年3月2日

  • 修复斜四极子的旋钮

  • 修复与 posx/posy 别名相关的回归hotfix

  • 与 hit_models 0.7.0,hit_csys 0.6.0 兼容

1.7.0

日期:2018年3月2日

  • 从 sigma 矩阵计算 alfa/beta 以保持一致性

  • 在 python shell 小部件中暴露保存 twiss 表的 twiss 变量

  • 设置一些绘图更好的显示单位

  • 在大多数更新中保持绘图轴限制

  • 最终开始在某些地方使用位置相关的发射度

  • 添加更多绘图:动量/分散/相位提前/发射度/伽马

  • 将监控器以虚线形式绘制

  • 绘制加载/快照曲线时不显示标记

  • 更改元素时更新信息框窗口标题

  • 在初始化设置对话框中添加全局变量选项卡

  • 在信息框中添加选项卡:主要/专家/twiss/sigma/椭圆

  • 刷新值或元素时保持信息框中的位置

  • 将小工具按钮的大小调整到文本大小

  • 允许用户点击零长度元素

  • 根据序列长度缩放插值步长,以显示平滑曲线

  • 默认number_format.align=right

  • 默认mirror_mode=True

  • 在Windows下将madqt作为gui_script启动时修复Python shell

  • 重构多网格对话框(用于轨道校正)

  • 重命名为madgui

  • 新版本控制方案,解释:0.0.X -> 1.X.0,承认旧的基于wx的madgui的0.X.Y版本。

  • 删除pytao绑定

  • 匹配对话框:旋钮下拉菜单,细微的视觉改进

  • 内部重构,模块重命名

  • 可以连接在线控制,而无需加载模型

0.0.6

日期:2018年1月26日

  • 元素信息框:添加切换元素的UI

  • 楼层平面图:支持3D模型(但不再有弯曲的S型弯道…)

  • 楼层平面图:添加更改视图视角的UI

  • 楼层平面图:修复镜像反转

  • 主/绘图窗口:设置窗口标题

  • 主窗口:添加配置设置以设置初始位置

  • 代码库:统一工作空间/段混乱,现在只有“模型”了(实际上我们不太可能能够在同一个工作空间中工作于少于/多于一个序列)

0.0.5

日期:2018年1月24日

  • 修复MAD-X中的质量单位

  • 大幅简化了旋钮API以控制界面

  • 可以从在线插件中读取束参数

  • 在轨道校正模式下拟合后显示更新的轨道图(回归)

  • 为轨道校正模式打开轨道图

0.0.4

日期:2018年1月9日

  • 当工作空间更改时发出信号(用于插件…)

  • 只有当包存在时才显示关于框

  • 为pytao添加关于对话框

  • 当点击菜单时更改设置对话框中的选项卡

  • 当用户通过菜单调用操作且相应的对话框已存在时,聚焦现有窗口

  • 不再在菜单中显示twiss/束对话框的复选框

  • 从配置中读取spinbox设置

  • [回归]修复打开不同模型时的异常(关闭日志文件)

  • [回归]修复在在线控制模块中更改值到MAD-X时的异常

0.0.3

日期:2018年1月6日

  • 在匹配模式中删除约束时进行模糊选择(中间点击)

  • 以守护线程启动日志线程(永远不会阻塞程序退出)

  • 线程安全访问madx/tao

  • 在后台获取指标元素数据

  • 修复安装中缺失的.ui文件

  • 修复通过gui_scripts入口启动时在Windows上启动时的崩溃

0.0.2

日期:2017年12月5日

  • 连续匹配(在任何元素位置内)

  • 修复匹配代码中的错误

  • 更新依赖项:pint 0.8.1,cpymad>=0.18.2,pytao>=0.0.1

0.0.1

日期:2017年11月30日

第一次参考点,以定义相对稳定的版本。

功能列表

  • cpymad/pytao作为模拟后端

  • 绘图:alfa/beta/包络/轨道;以及tao定义的绘图

  • 集成Python shell(ipython/jupyter)目前不太有用:对象展示有限,未提供方便的API(绘图)

  • 日志选项卡显示madx/tao输出

  • 显示madx/tao命令的选项卡

  • 显示和编辑束参数;初始条件(即twiss);以及元素属性(目前为只读)的框

  • 2D楼层平面图

  • 匹配(交互式+对话框)

  • 发射率(对话框)

  • 轨道对齐:2网格+N+光学方法

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

madgui-20.10.0.tar.gz (182.4 kB 查看哈希值)

上传时间

构建分布

madgui-20.10.0-py3-none-any.whl (195.4 kB 查看哈希值)

上传时间 Python 3

由以下组织支持