Here you can see the full list of changes between each Concert release.

Version 0.9

Released on August 15th 2014.


  • The state machine mechanism is not special anymore but directly inherits from Parameter.
  • Added walker mechanism to write sequence data in hierarchical structures such as directories or HDF5 files.
  • The long-standing gevent integration with IPython is finished at least for IPython >= 2.0.
  • Added @expects decorator to annotate what a function can receive.
  • Added async.resolve() to get result of future lists.
  • Added accumulate sink and timer coroutines.
  • Added Timestamp class for PCO cameras that decodes the BCD timestamp embedded in a frame.
  • Added optional wait_on to getter and setter of a ParameterValue.
  • We now raise an exception in if a uca frame is not available.
  • Experiments have now hooks for preparation and cleanup tasks.
  • Added basic control loop classes.
  • Add binary signal device class.

API breaks

  • scan yields futures instead of returning a list
  • Moved specific pco cameras to concert.devices.cameras.pco.
  • Moved write_images to
  • Removed base.MultiContext and base.Process


  • #198, #254, #271, #277, #280, #286, #293
  • The pint dependency had to be raised to 0.5.2 in order to compute sums of quantities.

Version 0.8

Released on April 16th 2014.


  • concert log can now --follow the current operation.
  • Soft limits and parameters can be locked both temporarily and permanently.
  • Added new @quantity decorator for simple cases.
  • The concert` binary can now be started without a session.
  • Added cross-correlation tomographic axis finding.
  • Added frame consumer to align_rotation_axis.
  • Simplify file camera and allow resetting it
  • Added ports property to the base IO device.
  • Added Photodiode base device class.
  • Added Fiber-Lite halogen lightsource.
  • Added LEDs connected within the wago.
  • Added stream coroutine to cameras.
  • Added EdmundOptics photodiode.
  • Added PCO.4000 camera.
  • Added Wago input/output device.

API breaks

  • Raise CameraError instead of ValueError
  • Change Pco’s freerun to stream


  • Fix FileCamera pixel units in grab
  • Import GLib.GError correctly
  • Make recording context exception-safe
  • Fix quantity problem with recent Pint versions
  • #200, #203, #206, #209, #228, #230, #245

Version 0.7

Released on February 17th 2014.


  • Added beam finding and centering
  • threaded decorator uses daemonic threads
  • Added downsize, queue, stall, PickSlice to coroutine filters
  • Added reconstruction of the whole volume using UFO Framework
  • Documentation was restructured significantly (split to usage/API)
  • Added tomography helper functions
  • Crio motor support continuous rotation
  • PyplotViewer can be configured for faster drawing capabilities using blit
  • Added dummy Scales
  • Tests cover all devices (at least try to instantiate them)
  • Added pixel units, q.pixel (shorthand q.px)
  • Changed prompt color to terminal default
  • Added Positioner device
  • Added Detector device

API Breaks

  • Finite state machine was reworked significantly
  • Motors were cleaned from mixins and hard-limit was incorporated into them
  • recording() context was added to cameras
  • backprojector coroutine filter was significantly simplified
  • average_images arguments changed
  • Experiments were completely restructured based on usage of Acquisition
  • PyplotViewer plotting signature changed
  • Remove leftover beam line specific shutters
  • Many getters/setters were replaced by properties, especially in the concert.ext.viewers module
  • Appropriate get_ set_ functions were replaced by non-prefixed ones


  • #118, #128, #132, #133, #139, #148, #149, #150, #157, #159, #165, #169, #173, #174, #175, #176, #178, #179, #181, #184, #189, #192

Version 0.6

Released on December 10th 2013.


  • Concert now comes with an experimental gevent backend that will eventually replace the thread pool executor based asynchronous infrastructure.
  • Each device can now have an explicit State object and @transition applied to function which will change the state depending on the successful outcome of the decorated function.
  • 1D data plotting is implemented as PyplotCurveViewer.
  • The concert binary now knows the cp command to make a copy of a session. The start command can receive a log level and with the --non-interactive option run a session as a script.
  • Devices and parameters can store their current parameter values with stash and restore them later with restore.
  • Changed the IPython prompt.
  • Added the NewPort 74000 Monochromator.
  • Provide a require function that will scream when the required Concert version is not installed.

API breaks

  • Motor is renamed to LinearMotor for all devices.
  • Parameter objects are now declared at class-level instead of at run-time within the class constructor.
  • renamed to
  • concert.ext.viewers.PyplotViewer substituted by 1D and 2D viewers concert.ext.viewers.PyplotCurveViewer and concert.ext.viewers.PyplotImageViewer
  • To wait on a Future you have to call .join instead of .wait.
  • Coroutine functions and decorators moved to concert.coroutines[.base], asynchronous functions and decorators moved to concert.async.
  • Removed is_async
  • Configuration moved to concert.config
  • Method names of concert.ext.ufo.InjectProcess changed.


  • #168, #166, #152, #147, #158, #150, #157, #95, #138
  • Many more concerning the camera implementation.

Version 0.5

Released on October 31st 2013.


  • Python 3 is supported and can be tested with tox.
  • Most imports are delayed in the concert binary to reduce startup time.
  • We do not depend on Logbook anymore but use Python’s logging module.
  • Experiments can now be modelled with the concert.experiments module.
  • concert.ext.viewers.PyplotViewer can be used to show 2D image data.
  • Spyder command plugin is now available. That means if you have Spyder installed you can control Concert from an IDE instead of from IPython.
  • Tests were restructured for easier access.

API breaks

  • concert.connections package moved to concert.networking module
  • Renamed concert.helpers.multicast to broadcast to reflect its true purpose.
  • Session helpers such as dstate and ddoc have been moved to concert.session.utils.
  • Frames grabbed with the libuca devices will return a copy instead of the same buffer.


  • #106, #113 and many more which did not deserve an issue number.

Version 0.4

Released on October 7th 2013.


  • Tests and rotation axis alignment is faster now.
  • Soft limits were added to the parameter (accessible with .lower and .upper)
  • Cleaner inet connection implemention.
  • Base pumps and scales were added.
  • Concert no longer depends on testfixtures for running tests.
  • Started work on flexible data processing schemes for light computation based on a coroutine approach.
  • Integrated in case libtiff is not available.
  • concert mv renames sessions.
  • @threaded decorator can be used to run a function in its own thread.
  • Scanner parameters can now be set in the constructor.
  • Parameters can now be locked independently of the parent device. However, if done so, no one else can lock the device.
  • Add code_of function to show the source of a function.
  • Introduced coroutine based data processing facility.

API breaks

  • Renamed to_steps to to_device and do not drop units
  • camera.grab returns None if no data is available
  • uca.Camera exposes the wrapped GObject camera as an attribute called uca instead of camera.
  • minimum, maximum and intervals are now longer implemented as Parameter objects of Scanner but simple attributes.
  • asynchronous module content has been moved to helpers
  • Removed Scanner class in favor of scan function.


  • Integration with all IPython releases works again.
  • returns 0 on success.
  • #19, #55, #71, #78, #79

Version 0.3

Released on August 19th 2013.

Note: This release breaks Python 2.6 compatibility!

  • Calibration classes moved to concert.devices.calibration
  • Remove concert.processes.focus and reorganize concert.optimization package, the focusing can be implemented by Maximizer with a proper feedback.
  • Add --repo parameter to the fetch command. With this flag, session files version controlled with Git can be imported.
  • Use pint instead of quantities. pint is faster for smaller Numpy arrays, stricter and does not depend on Numpy.
  • Things can now run serialized if concert.asynchronous.DISABLE is set to True.
  • Restructured tests into separate directories.
  • Fix PDF generation of the docs.
  • Fix problem with IPython version >= 0.10.

Version 0.2

Released on July 14th 2013.

  • Move third-party code to concert.ext. For example get_tomo_scan_result must be imported from
  • Adds concert fetch to pull session files from remote locations.
  • Code cleanup

Version 0.1.1

Bug fix release, released on May 25th 2013

  • Fixes Python 3 support.
  • Monochromator fix.

Version 0.1

First public release.