Sep 23 – 27, 2024
ESRF Auditorium
Europe/Paris timezone

MXCuBE all in one - user interface, control, collaboration

Sep 25, 2024, 11:55 AM
15m
Hybrid event (ESRF Auditorium)

Hybrid event

ESRF Auditorium

EPN Campus ESRF - ILL 71 Av. des Martyrs, 38000 Grenoble
Talk Experiments automation Experiments automation

Speaker

Antonia Beteva (ESRF)

Description

he MXCuBE (Macromolecular Xtallography Customised Beamline Environment) software, originally developed at ESRF, provides a common user interface for the Crystallography experiments. The software offers an abstraction to control systems and hardware so that the application can run within most beamline environments. Today, it has evolved into a very successful collaboration between 12 Synchrotrons on 4 continents, celebrating its 15th anniversary. The project's aim is to render the same user experience, no matter where the experiment is taking part, and be a platform for sharing domain-specific knowledge, best practices as well as data acquisition protocols.

MXCuBE is used at the core of all the ESRF MX beamlines, enabling remote, high-throughput attended and unattended data collections.

The project is divided into two parts - mxcubecore and UI, both open source, hosted on GitHub and distributed under the terms of the GNU Lesser General Public License. The software benefits from a well-established technology stack. Within the MXCuBE developer community, there is a well-defined process for versioning, deployment and contributions.

mxcubecore is a library that provides software abstraction to different control systems and beamline instrumentation. It is written in Python. There are a number of already supported control systems, protocols and sequencers: Bliss, Tango, Sardana, Epics, Ophyd, TINE, SPEC, Exporter. It is also relatively easy to add new ones. The hardware can be controlled via something called channels and commands (e.g. Tango, Epics) or with direct access to a control system (e.g. bliss).

The heart of mxcubecore is a set of abstract classes. The role of these classes is to provide an API that can be used by any client. It defines methods, attributes and signals. Most of the methods are defined only to give a blueprint and should, when appropriate, be overloaded by the inheriting classes. This makes mxcubecore easy to step in for newcomers and cheap in time for development.

There are two distinct MXCuBE user interfaces, based on different technologies - mxcubeweb and mxcubeqt. The underlying beamline control layer is the same for both and is implemented using the mxcubecore library.

mxcubeweb is a web application, running in any recent browser. The application is built using standard web technologies, based on Flask, React and web sockets and does not require any third-party plug-ins to be installed in order to function.

mxcubeqt is a Qt based application. It is written in Python, using the PyQt bindings for Qt. mxcubeqt was the first implementation of the MXCuBE application. Being a desktop application, mxcubeqt needs a separate solution to run remote experiments.

Abstract publication I agree that the abstract will be published on the web site

Primary authors

Co-author

Mr Jens Meyer (ESRF)

Presentation materials