Package: madgui
madgui is a Qt5 python GUI for interactive accelerator simulations usingMAD-Xviacpymad. It currently runs on python 3.4 and above, but higher
python versions may be required in the near future.InstallationpipinstallmadguiUsageNow, you should be able to start madgui with the command:madguiOptionally, madgui can take a filename for a madx/model file:madgui /path/to/model.madxNote that madgui is currently only suited for relatively small sequences, on
the scale of few hundred elements at the most.ConfigurationThe application loads a YAML config filemadgui.ymlin the current
directory or the user’s home directory.Example file:model_path:../hit_modelssession_file:madgui.session.ymlonline_control:connect:truebackend:'hit_acs.plugin:TestACS'onload:|code to execute on startupDevelopment guidelinesSeeDeveloper’s Guide.CopyingCopyright 2016-2019 HIT Betriebs GmbHThis program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.For a full text version of the license, seeCOPYING.GPLv3.txt.CHANGELOG20.10.0Date: 15.10.2020Add Optic Variation Method for orbit flatteningAdd Sphinx V4.2.4 as default for documentation20.7.0Date: 28.07.2020Change Pyqtconsole v1.2.120.6.0Date: 03.06.2020Fix bugs in optic variation methodDowngrade PyQt Version to 5.12.320.4.2Date: 25.04.2020Update the User Guide. Work in progressAdd dynamical color to snapshots20.4.1Date: 22.04.2020Add constrain to the match feature. If the residual is too high, then the
optics are not changed20.4.0Date: 08.04.2020Add execute button to match widgetDowngrade pyqtconsole to 1.1.3Add sample_model dependency20.1.0Date: 25.01.2020revisit auto load model featureauto loading was subtituted by a button in the read strengths dialogupdating pyqtconsole dependency to 1.1.519.8.0Date: 19.08.2019add auto load model feature19.6.3Date: 06.06.2019use the ORM orbit correction method by defaultadd tooltips for the elementinfo tabs19.6.2Date: 05.06.2019fix exception in GLWidget.closeEventexplicitly request OpenGL version to improve chances of getting a 3.0 contextrequest OpenGL 3.2 core profile (disallow deprecated features) to avoid
running into backward incompatibilities later on19.6.1Date: 05.06.2019fix menuitem “Interpolation points” not updating the plotfix monitor indicators not being updated after de-/selecting monitorsfix 3D survey widget by adding missing shaders to the installationlog OpenGL version and show a nicer error message for incompatible versionfix incorrect display of element indicators after sequence reversalcpymad 1.2.1 fixes deadlock that occurs when clicking “About MAD-X” menuitem
in application context without stdin (e.g. windows GUI)19.6.0Date: 02.06.2019fix exception when using element info after opening new modeldeal with issues of lingering signal handlers of the element Selection
after opening new model (by voiding the selection)decrease alpha for element indicators19.5.5Date: 27.05.2019fix drawing elements only once that occur multiple times in sequenceadd more documentationsplit twiss widget code from plotting module to allow using the plot
functions externally without importing GUI code3D survey widget:fix bug in diffuse lighting direction calculationsshow thin elements as discsshow more element types, colorful crowdfix not drawing the initial modelscale number of points on circles with radius19.5.4Date: 16.05.2019add true 3D OpenGL based survey widget (WIP)fix exception in curvemanager tool when clicking snapshot buttonfix TypeError when importing a table without a text columnshow warning when entering invalid number format (instead of silently
ignoring the invalid input)show warnings when ignoring invalid knob strings19.5.3Date: 13.05.2019allow negative values in step field (ORM measurement dialog)fix AttributeError if using model without undo stackfix ValueError for “Add” button in match dialogseparate “Write strengths” menu item further from “Read strengths”add hotkey for “Read strengths”find models in breadth-first manner, not depth firstfix bug that caused incorrect update when changing plot, especially from
plots with many curves to plots with less curves19.5.2Date: 11.05.2019add a selection of survey/sectormap plotsshow legend outside graph by default in shared plot mode19.5.1Date: 11.05.2019show UndoStack.macro invocations in the logging areaadd menuitem to reverse current sequence inplace (experimental)show DRIFT attributes as inheritedstart usrguide (very basic atm), document QT_SCALE_FACTORadd toolbar item to show/hide BPMsadd Backend.read_params method to read all/multiple params
(requires hit_acs>=19.5.0)export full parameter dump in orm measurement procedureupdate to cpymad 1.2.0, MAD-X version 5.05.0019.5.0Date: 07.05.2019fix a TypeError when changing the modelexport time along with BPM values in ORM measurement dialog19.4.4Date: 25.04.2019fix several minor exceptions that can occur in corrector dialog under rare
circumstances19.4.3Date: 25.04.2019fix RecursionError inUndoStack.macro(), that occurs e.g. when using
the MATCH/sectormap methods of corrector dialogfix potential NameError inUndoStack.rollback()fix unwanted signal connections that can lead to TypeErrors and multiple
signal handler executions (e.g. triggering the EditConfigDialog twice)19.4.2Date: 24.04.2019fix log widget to have monospace on windowsfix exception when setting max log size via menufix exception in corrector dialog when using MATCH or sectormap methods:
“TypeError: macro() missing 1 requried positional argument”fix TypeError in corrector dialog when changing config (combo box):
“TypeError: itemText(self, int): argument 1 has unexpected type ‘str’”19.4.1Date: 13.04.2019fix empty log after changing log levelimprove performance of log widget even after long use (#35)add menu and config entry for setting a maximum log lengthfix log entries without specified color receiving the color from the
previous entryimprove non-GUI mode app supportmake it possible to show the mainwindow on top of other windows, by turning
dialogs into top-level windowssimplify Dialog instanciation and internal logicfix the “Calibrate” button in “orbit correction -> measured response”
widget. It was missing the implementation after an earlier refactoringimplement notifyEvent in terms of eventFilter. This makes it possible to
these event notifications, and therefore prevent bugs due to calling dead
objects.turn shell from dockwidget into a normal dialogallow opening multiple console windows at a timereplace qtconsole by the faster and more lightweight pyqtconsolethis fixes an “AttributeError” when calling “exit()”also fixes “Execution aborted” error that prevents further statements from
being executed in the console after any exception has been raised in a
previous commandwork on improving documentation and cross-referencinguse pint 0.919.4.0Date: 01.04.2019drop python 3.5 compatibility, require at least 3.6fix exception when trying to show plots if loading a madx file that includes
aSELECT, flag=TWISScommandfix weird matplotlib offset behaviour when showing a nearly constant quantity
(by plotting an invisible horizontal line at y=0)add menuitem to redo twiss and refresh plotadd menuitem to set number of interpolation pointsadd config entry for number of interpolation pointsfix some warnings/errors in documentationreplace QUndoStack by our own implementation to simplify using Model in
non-GUI contextsremove QUndoView for now (limitation due to replacing QUndoStack)simplify setup.py using static metadata and rework travis scripts19.3.3Date: 21.03.2019install as gui scriptfixValueError: fallback required but not specifiedin pyqtconsole due
to missing stdout when called as gui script19.3.2Date: 21.03.2019fix TypeError: set_draggable() missing 1 required positional argument
(in shared plot mode)add units in curve y labelschange some quantity labelsseparate function to edit model parameters, for use in plugins etc19.3.1Date: 12.03.2019add missing filetwissfigure.ymladdimport_pathconfig entry for adding plugin folders tosys.pathexpand ‘~’ and environment variable in config:run_path,model_path,import_path,session_file19.3.0Date: 12.03.2019drop python 3.4 supportremove the “by delta” checkbox in orbit correction dialogs, always use the
measured monitor position if possibledepend on cpymad 1.1.0auto-update plotted monitor markersfix Ctrl+P closing mainwindowhandle menu hotkeys within all application windowsadd menu options and hotkeys to increase or decrease font sizeremember font size settingsome bugfixesremove obsolute “Update” buttons from diagnostic dialogsinternal:move ORM analysis code its own independent packageadd PyQt5 as regular dependency (can automatically installed via pip)add tests on py35refactor modules inmadgui.plotremove context-managing ability fromSessionreplacepyqtSignalby our own lightweight solution (in preparation for
letting models etc be instanciated without GUI)not subclassingcpymad.madx.Madxanymore, moved functionality directly
to cpymadrefactor/simplify caching classesmaketwissfiguremodule more independent from mainwindow/session and
simplify plotting API (standalone functions that can be used without madgui)refactor scene graphs, prepare for fully consistent management of all scene
elements via curvemanager dialogoptimize performance when updating plotfix error while building the documentationstart a developer’s guide documentation sectionintroduce a lightweight history type to manage history in several componentsuse PyQt5 imports directly, remove themadgui.qtcompatibilty modulesplit up the correction dialogs into components, in preparation for a great
unification19.01.0Date: 19.01.2019fix SyntaxError in py3.4internal development of ORM analysis utilitiesadd method to model to reverse sequence inplacegeneralize and slightly simplify the orbit fitting APItreat only “direct” variables (i.e. not deferred expressions) as knobssearch for knobs recursively through deferred expressionsparse unit strings from ACS backend on the flyadapt to the renaming hit_csys -> hit_acsadapt to changes in hit_acs 19.01.0basic version of measured response method for empirical orbit correctioninstall a common BeamSampler that monitors and publishes new readouts18.12.0Date: 11.12.2018Updated dependencies:update to cpymad1.0.10new dependency on scipy!Bug fixes:fix a TypeError in beam tab widgetfix bug that some widgets are shown only on second clickexplicitly specify the correct datatype for most editable tablesfix exceptions in some import routinesfix exception when starting without config filefix early exception on some systems due to encoding nameMisc:display sectormap and beam matrix as matrix-like tableimprove lookup logic for beam matrixremove the “Expression” column in favor of a composite edit widgetsome internal API changesadd fitting API inmadgui.util.fitallow loading table files with text columninfer missingSfromnamecolumn loading table filesautogenerate apidoc files during travis buildupdate travis config for phased out support of container based infrastructuremark build as dev version by default (travis)recognize that consts cannot be used as knobsmove load_yaml function tomadgui.util.yamladd simpler API for back-fitting orbitnever require betx, bety when backtrackingdevelopment on the ORM utility API18.10.3Date: 31.10.2018bugfixes:fix undo feature not working because of using the wrong stackfix exception in Model.twiss when a table is specifiedORM analysis:share get_orm() implementation with orbit correctiondeduplications, several code improvements and simplificationsuse base_orbit to backtrack initial conditionsadd plot functions to the analysis scriptbetter outputadd ability to fit X and Y independentlycompacter ealign notation in undocumented spec file18.10.2Date: 25.10.2018bugfixes:fix for missing setObsolete on Qt<5.9 (was previously fixed only partially)fix empty list of optic elements in output filefix beamoptikdll not initiating device download due to floodingfix duplicate value bug in the readout logicdecrease chance of race condition leading to inconsistent readoutsUX improvements:log to main logwindow as wellincrease logging verbosity during orbit response measurementsflush file after each writevary steerers in sequence orderavoid one redundant readoutincrease default steerer variation to 0.2 mradORM analysis:handle missing ORM entries as zerorestrict to used knobsfix empty steerers field in record filehandle accumulated errors in ORM analysisadd simple plotting script18.10.1Date: 20.10.2018fix exception when opening matching dialogfix bad fit_range leading to bad initial conditions fitadd safeguard forNoneoffsets in corrector widgetsrestrict orbit correction to only X/Y constraintslet user choose whether to fit the difference between measured and design
values or just fit the design value directly (this can be different in case
the backtrack does not describe the monitor values very good)18.10.0Date: 18.10.2018Now incalver(calendaric versioning)YY.MM.patchsince this better fits
the nature of madgui development and is I believe more useful for end-users.New features:add app icon as .ico file (for shortcuts etc)add orbit response matrix (ORM) based mode for orbit correctionadd even simpler mode that assumes orbit response matrix = sectormapadd method selection to OVM dialogadd dialog for recording orbit response matrixadd script for generating test ORM recordingsadd script for analyzing ORM recordingsImprovements:can edit the steerer values before executingimplement prev/next buttons in optic variation dialogallow multiple floor plan windowsprevent annoying busy cursor due to MPL redrawsturn on warnings for our own modulesclose and wait for the MAD-X process properlyimprove update of steerer/monitor display tablesdon’t automatically create logfile for every MAD-X session anymoremake MAD-X less verbose: command echo off!Bug fixes:fixAttributeErrorwhen clickingApplyin optic variation dialogfixNameErrorwhen opening curve manager widgetfix missing reaction to changing selected config in OVM dialogfix missing update before recording in OVM automatic modefixAttributeErrorafter editing config in MGM dialogupdate the config combo box after editting configfix current config not being updated after editting configfix jitter option…fix several DeprecationWarningsstop ORM procedure upon closing the widgetfix status messages for export menuitemsfix bug in Model loader (path)fixyaml.RepresenterErrorwhen no csys backend is loadedfix error when loading stand-alone .madx filemisc fixes to corrector codeuse button groups to safeguard against deselecting radio buttonsMeta:add sanity checks (pyflakes, hinting to missing imports, syntax errors, etc)add automatic style checks (pycodestyle)add first tests for the (now) non-UI components: model/session/correctoradd rudimentary documentation (updated when pushing to master)automatically upload release to PyPI when pushing tagsmove source code to unimportable subdirectoryRefactoring:improve naming: set_rowgetter -> set_viewmodeldeduplicate code between optic variation and multi grid modules (OVM/MGM)remove our ElementInfo proxy class, simply use Element from cpymadremove several obsolete/unused methods, dead codeshared management of monitor readoutsmove AsyncReader functionality to cpymadmake use cpymad multiline input for collected commandsauto show SingleWindow widgetssimplify access to twiss tablelet the online plugin manage its settings menurelocate several modules and classesdemeterize Model: no GUI, no config, no graphs!!!!remove several static configuration items for MAD-X data structures that can
now be introspected via cpymadglobalize several private methods that don’t need to be part of class
interfacesslightly simplify the twiss args guesserlose obsolete thread utils [core.worker, QueuedDispatcher]don’t need thread-safety anymore (no more threads…;)rename control._plugin -> .backendremove the need for a separate Loader classaddModel.changedoverload that passes old and new valueinline and simplify several methodsintroduce a newSessionobject that replacesMainWindowas context
object and can be used without active GUIDRY up MANIFEST.indemeterize ProcBot for non-GUI usagemake the Corrector GUI-independentmove recording/export responsibilities to Corrector (from CorrectorWidget)let Corrector know only the active configuration…and many more1.14.0Date: 24.07.2018refactor and simplify treeview data model, more cohesive table definitionsmonospace in tablesautosave and restore online settings (MEFI)fix missing QUndoCommand.setObsolete on Qt<5.9allow defining alimitsparameter in multigrid configfix IndexError if too few monitors are selectedimplement missing export functionality in orbit/emit dialogsusedata_keyfor initial conditions im-/exportsadd import/export menus as in mirkoimplement strength import from YAMLrefactor import/export logicset YAML as the default filter in strengths exportrecognize ‘!’ comment character in .str filesfix treeview edit spin boxes to fit into their columnhighlight changed items in SyncParamWidgets (read/write strengths)highlight explicitly specified beam/twiss parameters in bold (initial
conditions dialogs)code deduplication among diagnostic dialogs: share same rowgetter methodsave selected monitors for orbit/optics in different listssupport QTableView again in parallel to QTreeView, this has some advantages
such as supporting background colorshighlight changed steerers in bold in multigrid dialog)rework the optic variation dialog, based on tableview, added automation UIdisable section highlighting in TableViewrefactor how variables are stored in orbit correction dialogsalways show the current value versus the “to-be-applied” value in the
“steerer corrections” tableadd back/forward button in orbit correction dialogsnicer arrow buttons (QToolButton) in element info dialogshow monitors during orbit correction1.13.0Date: 15.07.2018simplify the activate logic of the curvemanager tool (was a toggle item with
complex behaviour, is now simply a button that will create the widget)add “Ok” button for curvemanager widgetfix beam diagnostic dialog staying open with blank tab when pressing Okremove explicit dependency on minrpc version from setup.py (possibly fixes
problem where cpymad’s requirement on the minrpc version is then ignored)improve knob selection/input in match dialogchange how “assign” expressions must be defined in the multigrid config, can
now be bound to only x or y specificallyadd widget for optics-based offset calibrationuse backtracking as method for calculating initial coordinates (instead of
inverting sectormaps)some code deduplication between diagnostic dialog and multigridallow to specify matching ‘method’ (lmdif/jacobian/…) in multigrid configcan show/hide timestamps in the log windowmake treeview columns user resizable (will be reset whenever the view
changes size)simplify stretch logic and remove custom column stretch factorsminor cleanup for some ColumnInfo definitions1.12.0Date: 26.06.2018add “About python” menuitemfix bugs inModel.get_transfer_maps/Model.sectormapcollect multiple variable update commands into one RPC calladd class for boxing generic valuesmakeMainwindow.modelaBoxedobject!!removeModel.destroyedsignal in favor of the more generalBoxed.changedsignaladdenvx/envycolumns toget_elem_twissfix data export in “Read strengths”/”Write strengths” dialogsset “Ok” as default button in export widgetsadd menuitem for executing MAD-X files (i.e. CALL)remember folders separately for “load strengths” and “execute file” items1.11.4Date: 11.06.2018fix inconsistency with open-/closedness of sectormap intervals inmodel.sectormapandget_transfer_maps1.11.3Date: 11.06.2018add ‘export strengths’ menu itemadd export as .str file in globals editfix JSON incorrectly being listed as export formatshow globals according to var_type (predefinedness)1.11.2Date: 11.06.2018fix losing zoom/view on every curve redraw due to autoscalingfix AttributeError when trying to save session data. This appeared only if
online control was not connected and prevented saving the current model,
folder etcfix ValueError when computing relative path for a model on different volumelet madgui have its own taskbar group on windowsadd preliminary window iconmore consistent behaviour for model.get_transfer_mapsprettify default output format for numpy arrays in python shellelement indicators:
- more distinctive lines for monitors
- flip displacement for pos/neg dipole strengths
- scale displacements/quadrupole colors according to magnet strength
- draw element indicators in background
- distinguish twiss curve by adding outlines
- set alpha=1 for element indicators
- add KICK marker within SBEND
- highlight selected and hovered elements1.11.1Date: 01.06.2018fix deadlock appearing mainly on windows during MAD-X commands with long
output (the fix will cause minor performance degradation for now)avoid some unnecessary updates/redraws on startuprememberwhichonline plugin to connect tosome more info log statementschangeonloadagain to be executed before loading the model1.11.0Date: 31.05.2018Miscellaneous:require cpymad 1.0.0rc3fix multi grid view not being updatedadd units for K0update floor plan survey after twissMatching:group multiple matching constraints at the same element and position
into one statementspecify weights only for the used quantitiesdisable matching if the number of constraints is incorrectdon’t reset matching when deactivating the match modeElement/param dialogs:fix condition for when globals are editabledisplay element attribute names in title case againshow leading part of variable names in lowercasemake use of cpymad’sinformandvar_typeTreeView:improve/refactor internal tableview APIuse tree viewexpand vectors in tree viewexpand variables occuring in expressions in GlobalsEdit/CommandEditUndo:support undoing simple .str filesremove flawed accept/reject logic, i.e. “Cancel” buttons, leaving only
“Ok” buttons for now (the logic required to properly implement “Cancel”
is nontrivial, and the behaviour might still be confusing)move undo utils to their own modulesubclass QUndoStacknever show empty macros (QUndoCommand.setObsolete)Plotting:share loaded curves between all windowshandle add_curve/del_curve in mainwindow“snapshot” now saves all available twiss data so that when changing
graphs, the snapshot for the other curves will be showngracefully deal with missing data in user curves (showed exception very
loudly previously, showing debug message now)invert quadrupole focussing color codes in Y plotdistinguish SBEND/KICKER sign by shifting the indicator position up/downsmaller but more distinct indicatorsfade out “off-axis” kickers (e.g. HKICKER in Y plot)remove grid lines in Y directionfix missing element name in status barupdate element markers on each draw1.10.1Date: 15.05.2018fixElementList.__contains__show/edit expression field for global variablesfix SyntaxError on py34require cpymad 1.0.0rc2usee_kinonly if it was given explicitly when editting beammore accurate undo handling for settingnewparametersuse space-insensitive string comparison before updating expressionsfix bug that results in squared UI unit conversion factor during matchinguse the builtin unit conversion mechanism in match widgetallow overwriting deferred expressions by direct values when edittingfix for not tracking modifications to element attributes on the undo stackfix obsolete checks that would prevent certain updates to element attributessimplify and unify ParamTable flavours by relying on model invalidationimplement “expression deletion” by replacing them with their valuesmake “Expression” field immutable for string attributes1.10.0Date: 13.05.2018executeonloadcommandsafterloading modelsadd coordinate axes and size indicator to floor planuseloggingfor warnings in emittance moduleuse the global logger instead of personal loggersfix bug in TableView that can cause using the wrong quantity for unit conversionknobs are now exclusively global variables occuring in deferred expressionsremoveKnobclassdon’t show units in globals dialog nor in matching dialogshow globals names in uppercaseuse .ui file for mainwindowadd UI for filtering shown log records in main windowsuppress MAD-X output by defaultrefactor and cleanup TableView API considerably; the oldValueProxyclasses are now replaced byDelegateclasses that no nothing about the
individual cell and aCellclass that provides a contextallow specializing virtually all data roles by passing an apropriate value or
callback function toColumnInfounify and improve handling of checked columnsremove config item for left/right number alignmentintroduce offsets for monitor calibrationadd naive way to define monitor offsets as the difference between model and
measurementkeep monitor values in MAD-X units internallyadd units to column title for several table viewsadd “Expression” column for elementshighlight user-specified values using boldremoveDataStore, replaced by simplified TableView API and getter methodsfix energy/mass UI unitsadd “E_kin” field for beamfix exception in YAML params exporterfix bug in sectormap due to interpolatecompute sectormap only once between changes, and only on demandfix missing redraw aftertwissfix editingkick(works only for HIT-model style angle/k0 definitions)removeElement.idin favor of.indexremove our own proxy layer forElement, use the cpymad elements directlyremove support for scalar names referring to vector components (“KNL[0]” etc)simplifications forElementListand how elements can be accessedfixopen_graphalways showing “orbit” plotmake the different beam diagnostic tasks part of a tabbed dialog,
increase code sharingrework the beam diagnostic widgets, layout, buttons, defaultsremember plot window positions, sizes and graph namesinline some initializer methods inmodeluse undo/redo mechanism and a corresponding history widget that fixes the
backup/restore mechanism used in several places1.9.0Date: 16.04.2018Improvements:add x/y/px/py values toTwisstab in element info dialogreplot backtracked twiss on every new monitor readoutconsiderSBEND->K0when detecting knobsremove conversion mechanism for knobs, this is now the responsibility of the
model itself (by using appropriate expressions) or the online pluginuse only user defined variables in deferred expressions as knobs, consider
fixed numbers as staticshow marks with monitor width/position when opening monitor dialog, can
select which ones to showadd update/backtrack functionality to monitor widgetshow unit on the column titleadd simple data export for monitorsmake the monitorwidget child to the main window (so it will be closed like
everything else when the main window is closed)persist some settings across multiple madgui runs usingsessionfiles:
main window size/position, model, folder, selected monitorsenable grid in twiss plot (mainly for y=0)addonloadconfig entry for application, and in modelremove setuptools based entrypoint for online models, must be manually
loaded by the user using theonloadhandler insteaddraw element markers at the exit end of the elementunify log window with MAD-X input commands, output, as well as logging
records, based on PlainTextEdit with extra selections in different colors,
much easier on the eyes and hands! Shows line numbers and times on the left.show exceptions in log window as wellsilence Pint redefinition warninglog interleaved MAD-X input/output in chronological order!display line numbers for config edit dialog (multi grid)show only the actual MAD-X command parameters in the second info tabaddkickattribute for SBEND in summary tabBug fixes:fix exception on py34: missingmath.isclosefix exception in floor planfix error in matching due to discardingExpressionfix unit conversion for gantry anglefix multi grid withassignin config fileuse float edit boxes for target valuesfix input unit of multi-grid target valuesfix bug with disappearing monitor widget (GC related)Internal changes:use function call syntax to get the values from Bool proxiesremove some remaining py2 compatibility codesupport attribute access andon_changesignals for config entries, makeconfig.NumberFormata simple config entryrenameuser_nstocontextcleanup some unused imports, undefined names etc (pyflakes)replacemonospacefunction by a simpler one withoutsizeparameterremove uppercase restritcion when accessing element attributesadapt to changes in cpymad 1.0 APIflip definition ofgantry_angle(SROTATION->ANGLEhas changed in
MAD-X 5.04.00)1.8.0Date: 25.03.2018removeapi_versionentry from model filesadd menu item to load MAD-X fileautoscale plots when pressing “Home” buttonadd shortcut methodmodel.sectormapfor use in ipython shelltwiss/beam init dialog:remove menuitems for separate init tabs, move to file menutreat attributes specified in the config as reals, not intsupdate enabled-state of save/open buttons according to current widgetelement infobox:add tab with sectormap for element infoboxupdate title clicking on another element (previously was updated only
when changing using the combobox)fix “open” buttonboth:use spinbox=true by defaultuse QuantityValue for floats (spin to win!)fix editting bool valuesfix display bug when showing SpinBox for IntValuefix “save” buttonmatching:match against variables inside expressionsreuse computed init conditions after applying correctionsinternal resource handling:remove PackageResourcereplace pkg_resources with importlib_resources where appropriateremove madgui.resource packageellipses plots:add ellipse tab for init dialogadd x/y labelsuse tight_layoutuse ui unitsdraw ellipse over gridfix swapped ellipse axes when alpha is negativefix swapped formulas for the half axesunits:pass values internally as plain floats, convert only for IO/UI (#2)Replace all Expression instances by their values, get rid of
SymbolicValueintroduce globals formadx_unitsandui_unitsused for
conversionformat degrees with “°” symbolimprove unit labels for listsremove pint units file, use the default one shipped with pint instead1.7.2Date: 05.03.2018added missing factor 2 in ellipse axes lengthsdon’t need AttrDict from new cpymad in this version1.7.1Date: 02.03.2018fix knobs in skew quadrupoleshotfix regression with posx/posy aliasescompatible with hit_models 0.7.0, hit_csys 0.6.01.7.0Date: 02.03.2018compute alfa/beta from sigma matrix for consistencyexposetwissvariable holding twiss table in python shell widgetset better display units for some plotskeep plot axis limits on most updatesfinally start to use position dependent emittances in some placesadd more plots: momentum/dispersion/phase advance/emittance/gammaplot monitors as dashed linesplot loaded/snapshot curves without markersupdate infobox window title when changing elementadd tab with global variables to init-settings dialogadd tabs to info box: primary/expert/twiss/sigma/ellipsekeep position in info-box when refreshing values or elementfit small tool buttons to text sizelet user click on zero-length elementsscale interpolation step length with sequence length, to show smooth curvesdefault number_format.align=rightdefault mirror_mode=Truefix python shell, when starting madqt as gui_script under windowsrework the multi-grid dialog (for orbit correction)rename back to madguinew versioning scheme, interpret:0.0.X->1.X.0, acknowledging the
the0.X.Yreleases of the old wx-based madgui.remove pytao bindingmatch dialog: dropdown menu for knobs, minor visual improvementsinternal refactoring, module renamingscan connect online control without loaded model0.0.6Date: 26.01.2018element info box: add UI to switch elementfloor plan: support 3D models (no more curved sbends anymore though…)floor plan: add UI to change view perspectivefloor plan: fix mirror inversionmain/plot window: set window titlemain window: add config setting for initial positioncodebase: unify the workspace/segment mess, now only have ‘model’ again
(it’s unlikely that we will ever be able to work on less/more than one
sequence in the same workspace anyway)0.0.5Date: 24.01.2018fix mass unit in MAD-Xmassive simplification of knobs API for interfacing control systemcan read beam parameters from online pluginshow updated orbit plot after fitting in orbit-correction-mode (regression)open orbit plot for orbit-correction-mode0.0.4Date: 09.01.2018Emit signal when workspace is changed (for plugins…)Show about boxes only if the package existsAdd about dialog for pytaoChange tab in settings dialog when clicking menuWhen user invokes an action via a menu and the corresponding dialog
already exists, focus the existing windowNo longer show checkboxes for twiss/beam dialogs in menuRead spinbox setting from config[regression] Fix exception (closed logfile) when opening different model[regression] Fix exception in online-control module when changing values
into MAD-X0.0.3Date: 06.01.2018fuzzy select when removing constraints in matching mode (middle click)start log threads as daemon thread (never blocks program exit)thread safe access to madx/taofetch element data for indicators in backgroundfix missing .ui files in installationfix crash on windows at startup when starting via gui_scripts entrypoint0.0.2Date: 05.12.2017continuous matching (within any element position)fix bugs in matching codeupdated dependencies: pint 0.8.1, cpymad>=0.18.2, pytao>=0.0.10.0.1Date: 30.11.2017First reference point to define somewhat stable versions.List of features:cpymad/pytao as simulation backendsplots: alfa/beta/envelope/orbit; and the ones defined by taointegrated python shell (ipython/jupyter) not very useful as of yet:
limited exhibition of objects, no convenient APIs provided (plotting)log tab that shows madx/tao outputtab that shows madx/tao commandsdisplay and edit box for beam parameters; initial conditions (i.e. twiss);
and element attributes (read-only so far)2D floor planmatching (interactive + dialog)emittance (dialog)orbit alignment: 2-grid + N+optic methods