About GDA

Main features

Main features of the GDA framework:

  • Eclipse RCP graphical interface (there is a Swing interface that is being phased out).
  • Embedded Jython interpreter for scripting and command-line control.
  • Powerful and flexible scanning mechanism.
  • Control system agnostic: internal interfaces in the code enable the the control system(s) that operate individual pieces of hardware to be abstracted from the rest of the code.
  • Diffcalc for diffractometer control in reciprocal lattice space.
  • Distributed design: multiple object servers representing hardware communicating with multiple clients via CORBA.
  • Role-based access control to restrict users operations on hardware where necessary.
  • Baton control: multiple client GUIs may run at the same time on each beamline with control managed by a baton passed between them.
  • Nexus data file format. Other formats are used and may be implemented, but the code is optimised for the Nexus format.
  • Nexus data file viewer within the GDA client.
  • Online data analysis and visualisation.

Main features of the GDA code management:

  • Code organised into Eclipse plugins. The open-sourced 'core' plugins are not facility- or hardware-specific.
  • Heavy use of internal interfaces to abstract hardware and control-system specific code from the rest of the framework.
  • Configuration using the Spring framework.
  • Simulations of all hardware types for unit testing and 'offline' development.


The GDA is developed using the Eclipse IDE and is mainly tested and used on Red Hat Enterprise Linux 5. It is also developed and used with Windows and Ubuntu.

Software requirements:

  • Java 6
  • Python 2.5 or higher
  • Eclipse 3.5 or higher


The GDA is written in Java. Other technologies used in the framework are:

  • Jython 2.5 - embedded scripting engine
  • Python 2.5 - platform independent startup and deployment scripts
  • Eclipse 3.5 - the code is organised into Eclipse plugins and the UI is Eclipse RCP
  • Swing - the 'old' GDA GUI
  • JIDE - plugin framework for the Swing GUI
  • Ant 1.7 - deployment and build
  • Jenkins - continuous integration
  • Spring Framework - configuration
  • CORBA - distributed object services for performance

Developmental status

The GDA is in use on all but one of the beamlines at Diamond. Most recent beamlines are using the Eclipse RCP client and older beamlines are converting from the legacy Swing client.

The code is organised into Eclipse plugins. The core set of plugins, which are not Diamond specific, forms the open source release. The core is fully functioning and includes an example beamline configuration.

As of release 8.26 the core code is publically available .

The GDA is also installed on the Dubble beamline at the ESRF.

Detector integration

A list of some of the detectors which the GDA is used with

ADSC 315 CCD 4096x4096
Rapid II Gas Detector 4096x4096
XPress Germanium Strip 9x4096
Vortex Silicon Drift > 1024
MAR 345 Image Plate  
Oxford Diffraction Ruby/Onyx CCD 2048x2048
Pilatus Pixel array detector (PAD)  
MAR 300 CCD  
Mythen II Silicon strip 18x1280