MXCuBE 3 web application, on the way to next generation experiment control
Creators: name: Eguiraun, Mikel
name: Milán Otero, Antonio
name: BOLMSTEN, Fredrik
name: NAN, Jie
name: THUNNISSEN, Marjolein
name: Spruce, Darren
name: HARDION, Vincent
name: GUIJARRO, Matias
name: OSKARSSON, Marcus
name: BETEVA, Antonia
name: DE SANCTIS, Daniele
name: MEYER, Jens
name: Gotz, Andy
name: Leonard, Gordon
Publisher: name: European Spallation Source ERIC
Year: 2016

description: NOBUGS 2016 Proceedings
description: The MXCuBE project started in 2005 at ESRF [1], with the objective of providing crystallography beamlines’ users an easy-to-use software platform to run their experiments. The current MXCuBE is based on PyQt, however the usage of old PyQt libraries, as well as the lack of a clear separation between the application control logic and the graphical layer makes it very difficult to maintain, upgrade and extend the current version. This, together with the need of extended capabilities for the operation of the new crystallography beamlines (such as improved remote operation, multiple user handling, cross platform, etc.) pushed the members of the MXCuBE collaboration into the development of a new software based on modern technologies, MXCuBE v3.

Taking into account the requirements, the path that best suited the needs is a web-based development. All the remote operation and cross platform needs fits in a natural way in a web environment. Thanks to the single page application paradigm the final user experience can be improved, and not be only a desktop application clone. Also, decoupling the application between client and server improves the code quality, since each element has a clear scope and makes it easier to maintenance, compared to the previous version of MXCuBE. Taking advantage of this new technology the user interface has been completely redesigned, with the aim of enhancing the user experience.

The main technologies in use are python-flask web framework [2] for the backend, and React JavaScript library [3] for the frontend, enhanced with several third party libraries for both components. Low-level control is achieved via connection to Tango, Sardana and custom protocols, by means of the so-called “Hardware objects”, which are self-contained pieces of software which links to the underlying instrumentation control. These libraries are being reused from the previous version of MXCuBE.

Currently, MXCuBE v3 is under an active development, mainly by MAXIV and ESRF, and has already achieved one of the first milestones defined in 2015, when the first data collection experiment was successfully performed in June 2016 during Biomax commissioning, Fig [fig:MXCuBE-v3-screenshot]. The next months are devoted to increase the stability of the application and to add new features that will be needed when the user operation starts. MXCuBE v3 will not only server as the experiment control environment at Biomax [4] beamline in MAXIV and other facilities in the near future, but also will serve as technological breakthrough for future developments for the whole facility.

References:

[1] Gabadinho J. et al. MxCuBE: a synchrotron beamline control environment customized for macromolecular crystallography experiments. J Synchrotron Radiat. 2010.

[2] Python Flask microwebframework, http://flask.pocoo.org

[3] React: a Javascript library for building user interfaces. https://facebook.github.io/react

[4] Thunnissen M. et al. The macromolecular crystallography beamlines BioMAX and MicroMAX at the MAX IV laboratory.  Acta Crystallographica Section A: Foundations and Advances. 2015.