What’s new?
Below you will find the most relevant news that brings the Sardana releases. For a complete list of changes consult the Sardana CHANGELOG.md file.
What’s new in Sardana 3.5?
Date: 2024-06-26 (Jan24 milestone)
Type: biannual stable release
It is backwards compatible and comes with new features, changes and bug fixes.
Exceptionally, this release was not tested on Windows platform.
Added
Experiment Status widget, a complete interface to monitor the status of the elements and running macros. It can be launched with
sardanactl expstatus
script.-
Now it is possible to split the configuration file into multiple files for easier management (added
!include
statement).sardanactl config graph
script to generate a graph with controllers and elements to visualize the configuration from a YAML file.Description field to document the purpose of the elements in the config file. This will map directly to the Tango device description property.
sardanactl config validate
now checks if required properties are declared in the config.
Possibility to execute one point step scan by configuring
starts
equal tofinals
andnb_intervals = 0
(e.g.ascan mot01 1 1 0 .1
).Showscan online widget enhancements (
showscan online
):Click-to-move functionality to move a motor to a clicked position.
Pre-scaling of x-axis on scan start according to the scan’s range.
Possibility to execute
mesh
/dmesh
scans without moving the second (slow) motor by setting the macro parameterm2_correct_drift
toFalse
or by setting this value to theMeshM2CorrectDrift
environment variable (so it will be used as default). See documentation.Possibility to use characters from other encodings than Latin1 e.g. UTF-8 by changing
LOG_MESSAGE_CODEC
Diffractometer improvements:
New diffractometer HKL controller type
Diffrac4Cp23
.Added Ki and Kf attributes to diffractometer HKL controllers.
Elements used (reserved) by running macros are now exposed on the Door device
Compatibility with Python 3.12
Changed
Now Sardana uses by default non-numeric ids and physical roles properties. Custom setting
USE_NUMERIC_ELEMENT_IDS
is now by defaultFalse
andUSE_PHYSICAL_ROLES_PROPERTY
is now by defaultTrue
. Old installations should migrate (migration guide) or, alternatively, force the old values.Sardana command-line interface tool renamed to
sardanactl
Fixed
Multiple fixes in Sardana Configuration Tool to improve reliability and usability.
Plotting of
timescan
inshowscan online
tool.Reload macro when the macro name is the same as the macro library name.
What’s new in Sardana 3.4.4?
Date: 2024-03-20
Type: hotfix release
Fixed
Fixed scan velocity verification before to move the motor when the velocity of the motor is 0, in the case of the meshct it happens for the slow motor.
What’s new in Sardana 3.4.4?
Date: 2024-03-20
Type: hotfix release
Fixed
Fixed scan velocity verification before to move the motor when the velocity of the motor is 0, in the case of the meshct it happens for the slow motor.
What’s new in Sardana 3.4.3?
Date: 2023-11-15
Type: hotfix release
Added
Spock documentation for developers.
Fixed
Fix trigger/gate moveable_on_input in time synchronized measurement. See documentation for more details.
What’s new in Sardana 3.4.2?
Date: 2023-08-31
Type: hotfix release
Fixed
Build process of the sardana package when using setuptools < 40.1.0.
What’s new in Sardana 3.4.1?
Date: 2023-08-30
Type: hotfix release
Added
Make installation of sardana extra dependencies optional for pip and conda. See Installation instructions for more details.
Fixed
Improve handling of motion errors and error reporting in continuous scans. This avoids confusion about the source of the error between acquisition and motion.
Errors in continuous scan when motor velocities were using units.
Restore compatibility with taurus < 5.1.4.
What’s new in Sardana 3.4?
Date: 2023-04-06 (Jan23 milestone)
Type: biannual stable release
It is backwards compatible and comes with new features, changes, deprecations and bug fixes.
Exceptionally, this release was not tested on Windows platform.
This release simplifies Tango DB configuration so Sardana does not rely on some properties
anymore. It is highly recommended that you cleanup your systems created prior to this release
using the upgrade_ids.py
script, using the following command: python upgrade_ids.py --server=Pool/sep20_example_pool --cleanup
.
Added
Sardana configuration format and CLI tools. The format is based on YAML and covers all the Tango DB configuration points. The tools can be invoked with the
sardana config
script sub-commands (temporarilysardanacli config
on Windows):dump
load
diff
update
validate
Additionally, Sardana configuration was improved with the following features:
Element names are used instead of numeric ids when referring to elements in configuration (including Tango DB configuration). To enable this feature you need to switch the
USE_NUMERIC_ELEMENT_IDS
flag and migrate existing systems. This feature is incompatible with renaming elements at runtime.More self-descriptive configuration of pseudo controllers (
physical_roles
property with role names and ids). To enable this feature you need to switch theUSE_PHYSICAL_ROLES_PROPERTY
flag.
Some of the previously existing standalone scripts were unified under one general script
sardana
(temporarilysardanacli
on Windows) with sub-commands:spock
macroexecutor
sequencer
expconf
showscan
config
Scan directory or file can be automatically changed on every new scan execution and its name can be parametrized with the ScanID environment variable.
New macros:
for configuring moveable limits:
set_user_lim
,set_dial_lim
andset_dial_pos
stoppable/abortable
sleep
set_step_per_unit
with an option to update limits
Macros can be executed programmatically more easily with the new API of
runMacro()
Improved macro execution widgets:
Import/export history in MacroExecutor User’s Interface
Exceptions raised during macro execution are showed with a pop-up dialog in MacroButton User’s Interface
Improved
scanstats
macro:Can be executed independently right after the scan macro
N-dimensional scans are supported
Continuous scans better validate:
scan velocity before moving to pre-start position
if pre-start move ended correctly
Default Pool concept to macro server to disambiguate macro parameters when present in more than one pool. It is configurable with DefaultPool environment variable.
Generic data recorders (not file recorders) can be configured with DataRecorder environment variable.
Scan points in step scans can be repeated based on an arbitrary condition. Configurable with GeneralCondition environment variable.
Controller plugins tests can now be easily developed thanks to the sardana core pytest fixtures.
It is now possible to not move certain motors in custom step scans developed with
SScan
.Automatically test sardana with different python versions using conda.
Changed
Experiment Configuration user interface measurement group tab by default starts with a simplified view instead of showing all the possible configuration options.
showscan
magic command (in Spock) shows the Showscan online instead of Showscan offline
Deprecated
Some of the standalone scripts:
spock
macroexeutor
sequencer
showscan
in favor of
sardana
(temporarilysardanacli
on Windows) script with sub-commands.showscan online
magic command (in Spock) in favor ofshowscan
magic commandset_lim
,set_lm
andset_pos
macros in favor ofset_user_lim
,set_dial_lim
andset_dial_pos
macros
Fixed
Compatibility with Python 3.11.
Make Spock prompt always visible at the bottom in the secondary session (when macros are executed from outside of this Spock session).
Pseudo counters with complex hierarchy.
Changes of controller (plugins) default properties and attribute values are now correctly applied.
MacroButton User’s Interface state correctly reflects exceptions raised during macro execution.
Remove Taurus deprecation warnings
What’s new in Sardana 3.3.8?
Date: 2022-01-09
Type: hotfix release
Fixed
Properly stop/abort macros which call other macros when the interrupt request was sent while the internal macro was executing either of:
pre-cleanup and post-cleanup hooks
macro’s
do_backup()
anddo_restore()
What’s new in Sardana 3.3.7?
Date: 2022-12-23
Type: hotfix release
Fixed
Protect against exceptions in hardware acquisition and synchronization action starting procedure (exception raised in controller’s methods like:
StartAll()
,StartOne()
, etc.). Such exceptions were impeding further executions of these actions.
What’s new in Sardana 3.3.6?
Date: 2022-10-05
Type: hotfix release
Fixed
Regression introduced in version 3.3.0 causing final padding up to
nb_points
after interrupting atimescan
.
What’s new in Sardana 3.3.5?
Date: 2022-09-21
Type: hotfix release
Fixed
Regression introduced in version 3.3.3 causing attributes with memorization
MemorizedNoInit
to restore their memorized values on the server startup and thereconfig
execution.Allow to reduce size of the
expconf
widget by making the mode warning label wrap its text when there is not enough space.
What’s new in Sardana 3.3.4?
Date: 2022-09-06
Type: hotfix release
Fixed
Regression introduced in version 3.2.1 causing deadlocks in macros which use disposable
taurus.Device()
objects.macroexecutor
andsequencer
widget compatibility with Python 3.10
What’s new in Sardana 3.3.3?
Date: 2022-08-10 (Jul22 milestone)
Type: biannual stable release
It is backwards compatible and comes with new features, changes and bug fixes.
Added
View and Edit alternative use modes of Experiment Configuration user interface. These modes let avoid annoying pop-ups with external changes e.g. when experiment configuration was changed programmatically by a macro.
Allow to not acquire the last point in Continuous scans (by specifying negative value of
nr_interv
macro parameters e.g.ascanct mot01 0 3 -3 1
will acquire only 3 scan points). This enables scans composed from only one scan point and does not extend the motion range beyond the point that was requested as the final position plus the necessary deceleration range.rscanct
macro - continuous scan with multiple regions.reconfig
macro - reconfigure a single axis element or the whole controller. Reconfiguration consists of the element initialization and application of memorized attribute values.Recalculate and set software limits in the
set_user_pos
macro.Fully stop macro sequences in Spock (multiline input macro execution) with
Ctrl+c
by propagatingKeyboardInterrupt
exception.Possibility to use spectrum attributes in Scan snapshots in SPEC recorder.
Improved instruments usage experience:
Fix order of Restoring memorized attributes.
Trigger/gate coupled and multiplexor modes in position domain.
Allow to load Sardana custom settings from
ini
configuration files.
Changed
timescan
first parameter fromnr_interv
tonb_points
what results in one acquisition less during the scan.Allow to execute new macros during Handling macro stop and abort.
TriggerGateController
API:PreSynchOne()
andSynchOne()
receive synchronization description in position domain in dial position instead of user position. The old way was maintained for backwards compatibility but is deprecated.
Fixed
Corruption of move targets leading to wrong movements, especially affecting motor groups - some motors were erroneously sent to 0.
Decouple attribute default values from memorized values i.e. changes of the attribute default values in the controller code will take effect.
Issues with aborting Continuous scans.
Avoid hung Measurement group acquisition with hardware synchronization when working with extended timeout.
Removed
Hard links in NXscan HDF5 files
measurement
group pointing tomeasurement/pre_scan_snapshot
items. Optionally could be re-introduced as soft links usingNXSCANH5_RECORDER_LINK_PRE_SCAN_SNAPSHOT
.Auto-update mode in Experiment Configuration user interface in favor of the View mode.
Master timer/monitor from measurement group configuration. Measurement group configurations with master timer/monitor are still supported but are deprecated.
What’s new in Sardana 3.2.1?
Date: 2022-03-21
Type: hotfix release
Fixed
Make Sardana compatible with Python 3.10.
Regression introduced in Sardana 3.2.0 causing hangs on motion/acquisition start.
Macro plotting for matplotlib < 3.
What’s new in Sardana 3.2?
Date: 2022-01-31 (Jul21 milestone)
Type: biannual stable release
It is backwards compatible and comes with new features, changes and bug fixes.
Added
Possibility to release hung operations e.g. motion or acquisition hung due to a hung hardware controller. Such a release could be issued, for example, from Spock using further Control+c in the process of Stopping macros.
rscan
,r2scan
andr3scan
scan macros (formerly available as examples under different namesregscan
,reg2scan
andreg3scan
). These macros were enahnced with the standard scan hooks and scan data support and fixed so theregion_nr_intervals
macro parameter type is now anint
and theinteg_time
macro parameter was moved to the end.Possibility to disable overshoot correction in continuous scans using the ScanOvershootCorrection environment variable.
Print in form of a table relevant motion parameters: acceleration, velocity, etc. used during continuous scans before the scan starts.
macro_start_time
dataset inNXscan
(HDF5, NeXus) data file which contains the scan macro execution start timestamp in addition to already existingstart_time
dataset which contains the scan measurement start timestamp.Possibility to change custom data format e.g.:
#UVAR
,#C
, etc. in the SPEC data filelsp
macro to list Pools the MacroServer is connected toImprove error handling for state read in
mv
family macros and step scan macros.History log of motor attributes (sign, offset and step_per_unit) changes.
Validate new limit values before applying them in
set_lim
andset_lm
macros.
Changed
Execute
post-scan
hooks also in case an exception occurs during the scan execution.Default SPEC recorder custom data format:
#C
->#UVAR
Fixed
Memory leaks in scans.
Deletion of Pool element now checks if dependent elements exists. For example, if you delete a motor it will be checked if any pseudo motor depends on it and eventually it will prevent the deletion.
Several issues with stopping macros:
Remove annoying info messages of stopping instruments when stopping macros
Stop motion only once in scans
Stop/abort element in
ct
macro when used directly with a channel instead of a measurement groupAllow aborting macros without prior stopping of them
Allow to recreate measurement group with the same name but other channels at runtime.
Showscan offline widget is again usable.
Avoid problems with duplicated entries in Scan snapshots
Spock prompt informs when the Door is offline i.e. MacroServer server is not running.
Make MeasurementGroup state readout evaluate states of the involved elements
Prevent start of operation e.g. motion or acquisition when the element is not ready.
Fix restoring velocity in software (
ascanc
) continuous scans.Ensure controller, element and group state are set to Fault and details are reported in the status whenever plugin code i.e. controller library, is missing.
Hang of IPython when Asking for user input gives timeout
Allow running Spock without an X-session on Linux.
amultiscan
macro parameters interpretationRespect measurement group
enabled
configuration inuct
macroset_meas_conf
macro when setting plot axes on all channelsSequencer widget action buttons (new, save and play) state (enabled/disabled)
Make PoolMotorTV User’s Interface relative move combobox accept only positive numbers.
post_mortem
Spock’s magic command which is useful for debugging problems.
What’s new in Sardana 3.1.3?
Date: 2021-09-17
Type: hotfix release
Fixed
Regression introduced in Sardana 3.0.3 affecting grouped move/scan of pseudo motors proceeding from the same controller e.g. slit’s gap and offset, HKL pseudo motors. Such a grouped move was only sending set possition to the first pseudo motor.
Regression introduced in Sardana 3.1.2 affecting custom continuous scans composed from waypoints with non-homogeneous number of points. Such scans were producing erroneuous number of points due to an error in the final padding logic.
What’s new in Sardana 3.1.2?
Date: 2021-08-02
Type: hotfix release
Fixed
Avoid memory leak in continuous scans (
ascanct
,meshct
, etc.). The MacroServer process memory was growing on each scan execution by the amount corresponding to storing in the memory the scan data.
What’s new in Sardana 3.1.1?
Date: 2021-06-11
Type: hotfix release
Fixed
Correctly handle stop/abort of macros e.g.
Ctrl+c
in Spock in case the macro was executing another hooked macros e.g. a scan executing a general hook.
What’s new in Sardana 3.1?
Date: 2021-05-17 (Jan21 milestone)
Type: biannual stable release
It is backwards compatible and comes with new features, changes and bug fixes.
Note
This release, in comparison to the previous ones, brings significant user experience improvements when used on Windows.
Added
HDF5 write session, in order to avoid the file locking problems and to introduce the SWMR mode support. It enables safe introspection e.g.: using data analysis tools like PyMCA or silx, custom scripts, etc. of the scan data files written in the HDF5 data format while scanning. You can control the session using e.g.:
h5_start_session
andh5_end_session
macros or theh5_write_session
context manager. More information in the NXscanH5_FileRecorder documentationscan information and scan point forms to the showscan online widget. See example in the showscan online screenshot .
Handle
pre-move
andpost-move
hooks by:mv
,mvr
,umv
,umvr
,br
andubr
macros. You may usePRE_POST_MOVE_HOOK_IN_MV
for disabling these hooks.Include trigger/gate (synchronizer) elements in the per-measurement preparation. This enables possible dead time optimization in hardware synchronized step scans. More information in the How to write a trigger/gate controller documentation .
ScanUser environment variable.
Support to
PosFormat
ViewOption inumv
macro.Avoid double printing of user units in PoolMotorTV User’s Interface: read widget and units widget.
Print of allowed Macro Hooks when Getting help on macros in Spock.
Documentation:
How to write a 1D controller and How to write a 2D controller
How to write a counter/timer controller now contains the SEP18 concepts.
Properly Handling exceptions in macros in order to not interfere with macro stopping/aborting
Update Installation instructions
Changed
Experimental channel’s shape is now considered as a result of the configuration e.g. RoI, binning, etc. and not part of the measurement group configuration:
Added shape controller axis parameter (plugin),
shape
experimental channel attribute (kernel) andShape
Tango attribute to the experimental channelsRemoved the shape column from the measurement group’s configuration panel in Experiment Configuration user interface.
Fixed
Sardana server (standalone) startup is more robust.
Storing string values in datasets, pre-scan snapshot and custom data in NXscanH5_FileRecorder.
Stopping/aborting grouped movement when backlash correction would be applied.
Randomly swapping target positions in grouped motion when moveables proceed from various Device Pool’s.
Enables possible dead time optimization in
mesh
scan macro by executing per measurement preparation.Continuously read experimental channel’s value references in hardware synchronized acquisition instead of reading only once at the end.
Problems when Changing default interface of standard attributes in controllers e.g. shape of the pseudo counter’s Value attribute.
Sequencer related bugs:
Fill Macro’s
parent_macro
in case of executing XML hooks in sequencerProblems with macro id’s when executing sequences loaded from plain text files with spock syntax
Loading of sequences using macro functions from plain text files with spock syntax
Apply position formatting (configured with
PosFormat
ViewOption) to the limits in thewm
macro.