Releases: ufo-kit/concert
Releases · ufo-kit/concert
Concert 0.31.0
Features
- it is possible to use
await
statements in concert sessions outside ofasync def
functions AsyncObject
allows us to have async constructorsasync 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 thestop
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 runsconcert.processes.common.align_rotation_axis
allows multiple frame consumersconcert.devices.cameras.uca.Camera
gets state from the libuca object
API breaks
Parameterizable
inherits fromAsyncObject
which needs an__ainit__
constructor, so every sub-class must change its__init__
toasync 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)
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 usingresolve
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 fromconcert.coroutines.filters
- Removed
Backproject
,FlatCorrectedBackproject
,FlatCorrect
(was
there twice),center_rotation_axis
,compute_rotation_axis
from
concert.ext.ufo
- Removed
concert.networking.aerotech
andconcert.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 byDevice.emergency_stop
- many functions which were not asynchronous before are now, e.g.
Camera.start_recording
Concert 0.11.0
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
Concert 0.10.1
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
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'sgrab
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
Addon
s 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
andconcert-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 toimport
. - Use positive config names (ENABLE_ instead of DISABLE_).
Fixes
Concert 0.9
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 andtimer
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 aParameterValue
. - 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
toconcert.storage
- Removed
base.MultiContext
andbase.Process
Fixes
Concert 0.8
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
Concert 0.7.2
Bug fix release, released on March 4th 2014.
- Fix prettytable on older distributions
- Fix aerotech motor.
Concert 0.7.1
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
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
usingblit
- Added dummy
Scales
- Tests cover all devices (at least try to instantiate them)
- Added pixel units,
q.pixel
(shorthandq.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 simplifiedaverage_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