Recent Releases of EPICpy

EPICpy - Significant Text Output Speedup

Faster Text Output Windows

(remember that you can upgrade EPICpy at any time with pipx, e.g. pipx upgrade EPICpy)

The text outputs (Normal Output Window and Trace Window) were slowing down long simulations (or short simulations for complex models). We are now using a custom text widget that has the following consequences:

Pros

  • Significantly less of a bottleneck during simulation runs by only updating text in the visible window, out of view text is stored until you scroll it into view, at which point is gets rendered as expected.
  • Visual indication of currently selected line of text.
  • Simulation speed is around 4X faster, and continuous text output is only slightly slower than disabled text output.

Cons

  • For now, there is no horizontal scrollbar, but long text can be viewed by widening the window.
  • Although you can still copy all of the text in the context menu, you can no longer select subsets of the text using the mouse.

Because there is little difference between the "Continuously" and "None During Run" Text-Refresh settings within the Run-Settings dialog, the "After Every" setting has been disabled.

NOTE: Although Text-Refresh now has little effect on simulation time, Display-Refresh can still have a significant effect -- especially for devices with complex visuals.

Faster Text Output Search

Output for long simulations, especially those with complex devices and parameterized device specifications, can get very long. In fact, a full run of current simulation we're working on creates 20 million lines of text. Searching for text in 20 million lines of codes is slow. In this release, when there are more than 500,000 lines of text, the search code switches to a multiprocessing approach that scales with the number of CPU cores. This is not something people will need regularly, but when it comes up, it will be significantly faster than before.

Various Bug Fixes

Various bugs were fixed, some of which were accidentally introduced in the previous version. For a full list of changes, see CHANGELOG.md.

Other

  • Some Linux users may have to install libxcb-cursor0
  • Going forward, Mac and Windows testing will be slower than previously. When such testing is done, any fixes will be pushed as soon as they are made, though small changes may not generate new releases (pipx upgrade EPICpy will still pull them in).

Scientific Software - Peer-reviewed - Python
Published by travisseymour over 1 year ago

EPICpy - Changed to Newer Qt 6.5 Framework

v2023.6.1

From PyQt5 to PySide6

We PyQt5.15 being the last version of the PyQt5 series, we converted EPICpy to the PyQt6.x series. In particular, we are using Pyside6 on Linux, Windows and MacOS versions 11+. FOr MaOS 10.x, we're using Pyside2 (i.e., we're still using the PyQt5 technology there).

No More EpicCoder

Even though we just included the built-in editor EpicCoder in the last couple of versions, we were forced to remove it. The issue is that we decided to use PySide rather than PyQt because we are soon going to change the license to something more permissive. However, the library making the editor possible doesn't work with PySide. In addition, EpicCoder has several issues that have come up with additional testing: a) it crashes if you load the Normal Output window text from a long run, b) syntax highlighting breaks down in some cases, and c) searching is odd and there is no replace. If you still want to use EPICCoder, you can get it as a standalone app here: .

New Approach to DarkMode

This is superficial, but in addition to being better implemented, there is now an option to have EPICpy just follow your system's policy for dark/light mode.

Internal Stuff

  • Config changes should be more reliable, and get reliably rolled back when dialog changes are cancelled.
  • Using the qtpy library to ensure that EPICpy can be seamlessly switched between PyQt and PySide without any changes to the code. qtpy just uses which ever library it finds in the virtual environment.

Scientific Software - Peer-reviewed - Python
Published by travisseymour over 2 years ago

EPICpy - Huge Change To Codebase, Backend, and Distribution (fixed)

v2023.5.29

NOTE: Release 2023.5.29 is just a minor change to release 2023.5.28, which introduced large changes (those have been re-printed below). This release is critical because it fixed an issue preventing EPICpy from being installed using PipX directly from the github repository.

Highlights from the previous 2023.5.28 release:

  • There will be no more installer releases. Now EPICpy can be installed and (later upgraded) using PipX.
  • EPICpy can now be installed and run on (as well as developed on) Linux, MacOS, and Windows operating systems.
  • Demo devices have been updated to no longer rely on cppyy and C++ includes. Existing devices will need minor updates to work with EPICpy going forward (see demo choice-task device for an examle).

For specifics, see Installation section of the documentation.

Major changes:

  1. We are no longer creating executables with the FMan-Build System. The primary reason is the mismatch of using a paid/proprietary system as a major component in an open-source project. In addition, it became cumbersome to create executables for every OS after ever version bump.
  2. We are now using PipX for distribution and installation. This offers both easier distribution and installation, but the ability for users to upgrade EPICpy in-place.
  3. We are no longer using https://cppyy.readthedocs.io/en/latest/ for realtime automatic Python bindings of the C++ EPICLib codebase. Instead, we are compiling Python C-modules for each operating system using PyBind11. One benefit of this approach is the removal of any need for device and encoder writers to read or write any C++. Now all imports will come from the devicebase support files as standard Python imports.
  4. The EPICpy demo models and device-creation support files have been re-written to remove last vestiges of C++ and cppyy references.
  5. As a result of the above 3 changes, we are now able to support more operating systems including Linux, MacOS (Intel & M1), and Windows.
  6. We've added a built-in editor based on EPICCoder that supports syntax-highlighting for EPIC Production Rule files. A right-click menu on the Normal Output window allows viewing or editing of the current model's data, production rule file, or Normal Output window contents. When EPICCoder is disabled in settings, EPICpy will instead use to related system defaults.
  7. The main menu is now in the same place (atop the Normal Output window) across all versions of EPICpy (previously, the MacOS version was an outlier).
  8. It is now possible to Unload Visual and Auditory Encoders after they have been loaded.
  9. It is no longer possible to switch EPICLib versions, EPICpy now always uses the 2016 version.

Scientific Software - Peer-reviewed - Python
Published by travisseymour almost 3 years ago

EPICpy - Huge Change To Codebase, Backend, and Distribution

v2023.5.28 Highlights:

  • There will be no more installer releases. Now EPICpy can be installed and (later upgraded) using PipX.
  • EPICpy can now be installed and run on (as well as developed on) Linux, MacOS, and Windows operating systems.
  • Demo devices have been updated to no longer rely on cppyy and C++ includes. Existing devices will need minor updates to work with EPICpy going forward (see demo choice-task device for an examle).

For specifics, see Installation section of the documentation.

Major changes:

  1. We are no longer creating executables with the FMan-Build System. The primary reason is the mismatch of using a paid/proprietary system as a major component in an open-source project. In addition, it became cumbersome to create executables for every OS after ever version bump.
  2. We are now using PipX for distribution and installation. This offers both easier distribution and installation, but the ability for users to upgrade EPICpy in-place.
  3. We are no longer using https://cppyy.readthedocs.io/en/latest/ for realtime automatic Python bindings of the C++ EPICLib codebase. Instead, we are compiling Python C-modules for each operating system using PyBind11. One benefit of this approach is the removal of any need for device and encoder writers to read or write any C++. Now all imports will come from the devicebase support files as standard Python imports.
  4. The EPICpy demo models and device-creation support files have been re-written to remove last vestiges of C++ and cppyy references.
  5. As a result of the above 3 changes, we are now able to support more operating systems including Linux, MacOS (Intel & M1), and Windows.
  6. We've added a built-in editor based on EPICCoder that supports syntax-highlighting for EPIC Production Rule files. A right-click menu on the Normal Output window allows viewing or editing of the current model's data, production rule file, or Normal Output window contents. When EPICCoder is disabled in settings, EPICpy will instead use to related system defaults.
  7. The main menu is now in the same place (atop the Normal Output window) across all versions of EPICpy (previously, the MacOS version was an outlier).
  8. It is now possible to Unload Visual and Auditory Encoders after they have been loaded.
  9. It is no longer possible to switch EPICLib versions, EPICpy now always uses the 2016 version.

Scientific Software - Peer-reviewed - Python
Published by travisseymour almost 3 years ago

EPICpy - New Script Feature and Bug Fixes - Dec 22 Release

Bug Feature and Script Feature

  1. Improved layout and options on Normal Output popup window.
  2. Added initial version of Run-Script feature.
  3. Removed unnecessary spaces in Trace Output window.
  4. Fixed ability to edit rules following rule load error.
  5. Added ability to open device folder via Normal Output popup window.
  6. Added ability to search, copy, and clear tracewindow text via its own popup window.

Scientific Software - Peer-reviewed - Python
Published by travisseymour about 3 years ago

EPICpy - Nov 2022 Bug Fixes and EPICCoder Update

Bug Fixes and EPICcoder Update

  • Fixed background images not showing up, fixed background images not resizing.
  • Moved tests to submenu under help menu.
  • Font size menu example now updates as you change font size.
  • Rearranged NO popup, fixed NO edit file availaibility in popup, changed editor modes to either built-in or system default. no more entering an editor file path.
  • Updated EPICCoder to v1.1.0.

Scientific Software - Peer-reviewed - Python
Published by travisseymour over 3 years ago

EPICpy - Initial Release

This is the initial release for publication at The Journal of Open Source Software.

Binaries can be found at https://cogmodlab.sites.ucsc.edu/2022/03/14/epic/

Scientific Software - Peer-reviewed - Python
Published by travisseymour over 3 years ago