Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Review of relevant existing art #1

Open
padraic-shafer opened this issue Oct 13, 2023 · 16 comments
Open

Review of relevant existing art #1

padraic-shafer opened this issue Oct 13, 2023 · 16 comments
Labels
documentation Improvements or additions to documentation help wanted Extra attention is needed

Comments

@padraic-shafer
Copy link
Collaborator

Let's start by compiling and reviewing other web UI projects in use or under development for experiment controls or data acquisition/exploration/analysis/ visualization, which we might be a able to incorporate, reuse or learn from.

@padraic-shafer padraic-shafer added documentation Improvements or additions to documentation help wanted Extra attention is needed labels Oct 13, 2023
@mrakitin
Copy link
Member

A prototype for data collection: https://github.com/bluesky/bluesky-webclient.

@keithralphs
Copy link
Collaborator

As discussed in the meeting te other day, we have prototypes for a composable UI element library

https://diamondlightsource.github.io/web-ui-components/

and a plotting subsystem similar to h5web:

https://github.com/DiamondLightSource/davidia/tree/main/davidia

@mrakitin
Copy link
Member

https://github.com/React-Automation-Studio/React-Automation-Studio was presented at ICALEPCS ("FR2BCO01: React Automation Studio: Modern Scientific Control With the Web", https://icalepcs2023.org/final-programme/).
h/t @whs92 for pointing out in Mattermost.

@padraic-shafer
Copy link
Collaborator Author

Daiquiri UI

Daiquiri UI is the web based javascript User Interface for Daiquiri, the beamline control and data acquisition framework. It is built in React with Redux and is modular in design, allowing it to be adapted to many different beamline setups and requirements.

  • NOBUGS 2002 presentation + slides by Stu Fisher (ESRF)
  • Daiquiri -- Daiquiri is a python based framework for beamline control and data acquisition. It is controls system agnostic accessing hardware and scans through interfaces. It exposes a REST and Websockets API that can be consumed via the web or any other client.

@padraic-shafer
Copy link
Collaborator Author

As we gather a critical mass of references here, we should think about creating a document in the repo that lists these references, and also provide some commentary that could help inform our efforts.

@prjemian
Copy link

Realtime Web Apps and Dashboards for Python and R

H2O Wave is a software stack for building beautiful, low-latency, realtime, browser-based applications and dashboards entirely in Python without using HTML, Javascript, or CSS.

It excels at capturing data, visualizations, and graphics from multiple sources and broadcasting them live over the web.

GitHub: https://github.com/h2oai/wave

@jacopoabramo
Copy link

Hi everyone, just wanted to mention also the existance of imgui; fast and quick to assembly UIs with C++. They have Python bindings and there is an example of a web GUI built with webassembly.

@callumforrester
Copy link
Collaborator

Also worth mentioning Diamond's work on a prototype react technical UI. Rough idea is phoebus in a browser.

https://github.com/dls-controls/cs-web-proto
https://github.com/dls-controls/cs-web-lib

@linupi
Copy link

linupi commented Oct 24, 2023

Daiquiri UI

Daiquiri UI is the web based javascript User Interface for Daiquiri, the beamline control and data acquisition framework. It is built in React with Redux and is modular in design, allowing it to be adapted to many different beamline setups and requirements.

* NOBUGS 2002 [presentation](https://www.youtube.com/watch?v=QdwANxtdLcY)  +  [slides](https://docs.google.com/presentation/d/e/2PACX-1vTACrCEOHQet3UdppgSIr-Kx5lvs8qzttHTcwyCC3zijSs5q4PYUrjv6hEWoQUmzsz94pItpiwN4_6w/pub?start=false&slide=id.p) by Stu Fisher (ESRF)

* [Daiquiri](url) -- _Daiquiri is a python based framework for beamline control and data acquisition. It is controls system agnostic accessing hardware and scans through interfaces. It exposes a REST and Websockets API that can be consumed via the web or any other client._

two more links around Daiquiri:

Daiquiri Doc
Daiquiri UI Doc

@mrakitin
Copy link
Member

mrakitin commented Nov 14, 2023

This may not be so relevant as it's a Qt app.

https://github.com/lbl-camera/tsuchinoko: Tsuchinoko is a Qt application for adaptive experiment execution and tuning.

@mrakitin
Copy link
Member

mrakitin commented Nov 14, 2023

https://github.com/nghia-vo/broh5: (Bro)wser-based GUI (H)DF(5) Viewer in Python

Based on https://github.com/zauberzeug/nicegui/.

@stufisher
Copy link

FYI we extracted some of the daiquiri-ui hardware objects such as motors, shutters, and some other basic components into a standalone library daiquiri-lib (https://www.npmjs.com/package/@esrf/daiquiri-lib). This allows these components to be used outside the daiquiri eco system but could be used to provide a common UX. They are written in typescript and have a well defined API. See https://ui.gitlab-pages.esrf.fr/daiquiri-ui/daiquiri-lib for more information (documentation likely lacking!)

@mrakitin
Copy link
Member

https://github.com/ml-tooling/best-of-web-python#web-ui lists a bunch of various frontend frameworks.

@whs92
Copy link
Member

whs92 commented Jan 25, 2024

There is exciting work going on at ANSTO in Australia. So far I only have these screenshots. Still need to get in touch to find out more. It looks like it interacts with Bluesky QS.

ANSTO Australian Synchrotron beamline GUIs.pdf

@danielot
Copy link

danielot commented Feb 7, 2024

Hi all. At SIRIUS we're currently looking for a unified approach to the user interfaces and experiment control based on bluesky.

Concerning user interfaces, it is still not clear if we'll go with a mix of Web (general experiment control interfaces) and desktop (expert and specialized, components GUIs) or fully embrace Web. Today we employ PyDM in both accelerator and beamline controls, on the other hand have had very good experience (from users' perspective) with MXCuBE 3 (Web) in our MX beamline. This makes Daiquiri a natural candidate for standardization if we adopt Web applications.

Unless there's a clear technical disadvantage in Daiquiri (or in its adaptability to the bluesky's environment), our preferred approach would be to stick with it and join efforts with the community to extend it to the use cases that we have, always willing to merge back our extensions to the official code base. We believe in the motto “If you want to go fast, go alone, if you want to go far, go together” :)

In any case, we'll try to go where there's more momentum and comprehensiveness, that is, where the bulk of the community is going. We'll be looking for a technical solution that is sound and modular/decoupled enough to evolve and sustain itself in the long run.

@mrakitin
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

10 participants