bluesky / bluesky-web

Composable bluesky user interface components for web browsers/clients
BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

Review of relevant existing art #1

Open padraic-shafer opened 8 months ago

padraic-shafer commented 8 months ago

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.

mrakitin commented 8 months ago

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

keithralphs commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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.

padraic-shafer commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 7 months ago

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 commented 7 months ago

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

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

stufisher commented 5 months ago

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 commented 5 months ago

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

whs92 commented 5 months ago

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 commented 5 months ago

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 commented 4 months ago

@tacaswell pointed to https://github.com/pydantic/FastUI.