Skip to content

Releases: ufo-kit/concert

Concert 0.31.0

11 May 13:40
Compare
Choose a tag to compare

Features

  • it is possible to use await statements in concert sessions outside of async def functions
  • AsyncObject allows us to have async constructors async def __ainit__,which is very useful when we need to use async code in constructors, e.g. setting a parameter on a device
  • Experiments were greatly extended by classes which can be customized and run at beam lines without many more changes
  • Monochromators were enhanced
  • Experiment director was introduced to take care of high-throughput measurements
  • Experiments can write metadata to json
  • Parameter limits getters and setters are coroutine functions
  • Add ElementSelector device for having discrete choices
  • ascan allows one to include the stop value in the scan
  • walkers have create_writer method for convenience
  • walkers can be used in async with statements for safe access from multiple
    concurrent coroutines
  • concert.coroutines.sinks.Accumulate allows non-re-setting behavior between runs
  • concert.processes.common.align_rotation_axis allows multiple frame consumers
  • concert.devices.cameras.uca.Camera gets state from the libuca object

API breaks

  • Parameterizable inherits from AsyncObject which needs an __ainit__ constructor, so every sub-class must change its __init__ to async def __ainit__.
  • run_in_loop_thread_blocking is gone in favour of using one event loop and
    __ainit__ constructors

Notes

  • we replaced Travis by CircleCI

Pull Requests

#485 from ufo-kit/circleci-project-setup
#483 from ufo-kit/new-metadata
#464 from ufo-kit/monochromator-enhancement
#459 from ufo-kit/experiment-director
#409 from ufo-kit/fix-uca-state
#467 from ufo-kit/grating-inteferometry-experiment
#478 from ufo-kit/hercules
#473 from ufo-kit/walkers
#471 from ufo-kit/ascan-include-last
#470 from ufo-kit/elementselector
#466 from ufo-kit/fix-tango-loop
#458 from ufo-kit/new-experiments
#461 from ufo-kit/async-limits

Concert 0.30.0 (Python 3)

17 Dec 15:15
Compare
Choose a tag to compare

Stop Python 2 support and require Python 3.7+.

Features

  • concurrency transition to asyncio, from user perspective the usage is more or
    less the same, e.g. motor.move(1 * q.mm) starts relative motion in the
    background, motor.position = 1 * q.mm sets the position in a blocking way.
  • simplify scans, no Region and no need of using resolve on the result
  • ctrl-k cancels all background commands and calls emergency_stop on all
    devices in the session
  • Online reconstruction is capable of doing the flat correction with image
    averaging
  • concert.experiments.addons.ImageWriter blocks for every acquisition

Viewers

  • Subclass Parameterizeable, properties turned into parameters
  • Added Simple matplotlib backend without colorbar but faster
  • Added PyQtGraphViewer
  • Added downsampling parameter
  • Added show_refresh_rate parameter
  • Parameter limits accepts "stream", i.e. the limits are updated for the first
    image of call and then kept the same, "auto" updates limits for every
    image and a tuple fixes them to min and max.

API breaks

  • Removed queue, sinograms, backproject, PickSlice, process
    coroutines from concert.coroutines.filters
  • Removed Backproject, FlatCorrectedBackproject, FlatCorrect (was
    there twice), center_rotation_axis, compute_rotation_axis from
    concert.ext.ufo
  • Removed concert.networking.aerotech and concert.networking.wago
  • Removed concert.devices.motors.crio
  • Removed concert.helpers.hasattr_raise_exceptions
  • Removed Future.cancel_operation, cancellation is implemented via
    asyncio.CancelledError
  • Removed concert.helpers.Region
  • Removed devices:
    • concert.devices.motors.aerotech
    • concert.devices.io.aerotech
    • concert.devices.lightsources.fiberlite
    • concert.devices.lightsources.led.
    • concert.devices.photodiodes.edmundoptics
    • concert.devices.scales.adventurer
    • concert.devices.monochromators.newport.py
  • Removed processes:
    • concert.processes.common.find_beam
    • concert.processes.common.drift_to_beam
    • concert.processes.common.center_to_beam
    • concert.processes.common.scan_param_feedback
  • Removed callbacks from concert.processes.common.scan
  • Removed concert.experiments.base.Acquisition.connect for simplicity, i.e.
    the acquisition and consumption of data happens always at the same time, for
    special behavior, special classes/functions should be used
  • Device.abort replaced by Device.emergency_stop
  • many functions which were not asynchronous before are now, e.g.
    Camera.start_recording

Concert 0.11.0

14 Apr 12:02
Compare
Choose a tag to compare

Last release for Python 2 ☠️

Features

  • 345c2e7 Add stack-based name resolution
  • f8e9ec5 experiments: add per-run log handler
  • 41bfa5e Add State to Experiment
  • 253d4d5 Add external limits to parameter
  • 40debd7 Added target value to parameter
  • 6eb07fd Added LensChanger
  • dc0b395 Add readers
  • ec90dcd ufo: Add FlatCorrect class
  • e7326bd Add dummy ImagingExperiment
  • f90379d Add fwhm to find_parameters
  • a8c705b imageprocessing: add filter_low_frequencies
  • e181587 Add a simple online reconstruction addon
  • 51d6ec2 Add ROI selection support to ImagingFileExperiment
  • 2ba2fe1 add fraction and percent to quantities
  • e59697b Add progress bar
  • 43c4e98 Add ImagingFileExperiment
  • e823b52 base and dummy attenuatorbox added
  • ece80dd Add flat field correction task
  • 1ec03be addons: Enable async I/O by ImageWriter
  • 6535790 Add docs command to Concert program
  • 0f91277 Add Flask-like extension system
  • 6c02a84 abort on ctrl-c
  • align axis: auto-compute metric_eps by default (better rotation axis alignment)

Pull Requests

  • #374 from ufo-kit/calculate_motor_velocity
  • #389 from ufo-kit/add-flatcorrect
  • #396 from ufo-kit/fix-388
  • #419 from ufo-kit/add-percent-quantity
  • #436 from ufo-kit/align-rotation-axis
  • #450 from ufo-kit/experiment-state
  • #447 from ufo-kit/device-names
  • #445 from ufo-kit/experiment-logs
  • #437 from ufo-kit/add-lens-selector
  • #442 from ufo-kit/always-execute-finish-in-experiment
  • #443 from ufo-kit/add_enable_disable_to_motors
  • #434 from ufo-kit/add-state-to-experiment
  • #435 from ufo-kit/add-external-softlimits
  • #439 from ufo-kit/add-state-to-monochromator
  • #339 from ufo-kit/ufo-multi-gpus
  • #432 from ufo-kit/fix-requirements-python2.7
  • #433 from ufo-kit/fix-typo-in-experiment
  • #430 from ufo-kit/cleanup-writers
  • #429 from ufo-kit/add-readers
  • #425 from ufo-kit/add_parameters_to_experiments
  • #428 from ufo-kit/dependabot/pip/pyxdg-0.26
  • #427 from ufo-kit/fix-fsm-transitioning-error
  • #417 from ufo-kit/add-progressbar
  • #412 from ufo-kit/enable-writer-offset
  • #411 from ufo-kit/multipage-file-camera
  • #410 from ufo-kit/faster-dummy-camera
  • #408 from ufo-kit/write_multi
  • #405 from ufo-kit/add-attenuator
  • #401 from ufo-kit/fix-400
  • #399 from ufo-kit/Flake8
  • #397 from ufo-kit/fix-367
  • #395 from ufo-kit/fix-385
  • #394 from ufo-kit/docs
  • #393 from ufo-kit/docs
  • #391 from ufo-kit/forbid-addon-reattachment
  • #387 from ufo-kit/extend-queue
  • #379 from ufo-kit/fix-flatcorrectedbackproject
  • #383 from ufo-kit/fix-dimax-start-recording
  • #381 from ufo-kit/fix-ufo-segfault
  • #370 from ufo-kit/generalize-acquisitions
  • #378 from ufo-kit/print-noasync-traceback
  • #377 from ufo-kit/accumulate-addon
  • #376 from ufo-kit/numpy-accumulate
  • #375 from ufo-kit/fix-DirectoryWalker-relative-paths
  • #369 from ufo-kit/extensions

Fixes

  • #400: Fix properties mixup of uca-cameras
  • #392 and support for current Pint versions'
  • #388: Fixed units checking of Numeric
  • #385: Optional output of resolve without units
  • #371: override grab only in uca cameras
  • #301: don't print traceback for DISABLE_ASYNC

Concert 0.10.1

28 May 14:54
Compare
Choose a tag to compare

Fixes

  • Change camera trigger-mode to trigger-source
  • Rename cut-roi to crop in ufo
  • Don't set properties after start in ufo
  • Fix #365: use a single scheduler instance
  • Replace bundled tifffile with the one from PyPI
  • Fix wrong input in walker tests
  • Print module docstring only if present
  • Fix filtering
  • Make sure there are devices when calling abort
  • Image reading supports capital letter extensions
  • Don't use upper bound on measure test duration

Concert 0.10

09 Feb 15:19
Compare
Choose a tag to compare

Released on February 9th 2015.

Improvements

  • Uca cameras support optional parameters.
  • We added convenience functions for acquiring certain image types like dark
    fields, etc.
  • We can determine tomographic rotation axis based on the convenince functions
    mentioned above.
  • Hard-limit state is allowed as target in motor's home method.
  • Added a decorator for measuring function execution time.
  • Added XRayTube device.
  • Added Gripper device.
  • Added asynchronous grab Camera.grab_async.
  • Added SampleChanger device.
  • Parameter setters are abortable. Thanks to that we added the abort function
    to stop actions on devices. It can be used also per-device.
  • Simplified concert.base, we don't use metaclasses anymore.
  • Added normalize for intensity normalization.
  • Added Camera.convert for converting images before they are returned by the
    camera's grab method (useful for flipping, etc.).
  • Added a generic process coroutine which takes a callable and applies it to
    the coming data.
  • We check soft limits for correct unit.
  • Added EDF reading support via fabio.
  • Added experiment Addons which operate on the data produced by an experiment
    (e.g. image viewing, online reconstruction, etc.).
  • Added n-dimensional scans.
  • Added ssh+tmux support via concert-server and concert-connect.
  • Added session export command.
  • Added session loading via --filename.
  • Walker can write data stored in lists, not only in a coroutine way.

API breaks

  • Renamed fetch command to import.
  • Use positive config names (ENABLE_ instead of DISABLE_).

Fixes

Concert 0.9

15 Aug 16:19
Compare
Choose a tag to compare

Released on August 15th 2014.

Improvements

  • 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 concert.storage
  • Removed base.MultiContext and base.Process

Fixes

Concert 0.8

16 Apr 07:11
Compare
Choose a tag to compare

Released on April 16th 2014.

Improvements

  • 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

Fixes

  • 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

Concert 0.7.2

04 Mar 09:22
Compare
Choose a tag to compare

Bug fix release, released on March 4th 2014.

  • Fix prettytable on older distributions
  • Fix aerotech motor.

Concert 0.7.1

20 Feb 08:26
Compare
Choose a tag to compare

Bug fix release, released on February 20th 2014.

  • Fix FileCamera pixel units in grab
  • Fix GLib.GError imports with recent PyGI releases
  • Fix old-style state check from pco camera
  • Fix quantity problem with recent Pint versions

Concert 0.7

17 Feb 22:36
Compare
Choose a tag to compare

Released on February 17th 2014.

Improvements

  • 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

Fixes