Speaker
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 |
---|