This repository has been archived by the owner on Dec 3, 2024. It is now read-only.
forked from mlz-ictrl/nicos
-
Notifications
You must be signed in to change notification settings - Fork 4
/
CHANGES
1715 lines (1046 loc) · 53.7 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Changelog
=========
Release 3.10.0
--------------
* Core
- Added an experimental InfluxDB backend for the NICOS cache.
- The cache supports prefiltering history by a minimum time interval, speeding
up query execution.
- The ``lowlevel`` parameter is replaced by finer-grained ``visibility``.
* Commands
- Use of ``time.sleep`` is now warned about, users should use NICOS' ``sleep``
instead.
* Devices
- Added a general slit based on two-bladed gap devices.
- Added a method to query the preset on the generic detector.
- The SECoP integration has been updated, and the ``frappy`` package is now
not required on the client side.
- On classes inheriting from Device, it is now a hard error to set attributes
with names not starting with ``_``, except if they are NICOS parameters.
- Data sink devices are now hidden from the user by default.
- The order of calling data sink handlers can now be configured by a new
class attribute.
* GUI
- Device targets are now displayed in a new column in the devices panel.
- The SSH tunnel option can now be configured in the GUI.
- Large scan metadata will not be transferred to the GUI anymore, speeding
up transfer of datasets.
- The point number can now be used as an X axis in scan plots.
- The scan plot should now use the same color series for each new graph,
making them easier to compare.
- Building installer packages for macOS is now supported. Packages will be
available on `our website <https://nicos-controls.org/download>`_.
- Qt 6 is now supported. At the moment, support is experimental and needs to
be activated using the environment variable setting ``NICOS_QT=6``.
- "Measure" type commandlets can now specify arbitrary presets, not only time.
- The guiconfig can now specify default connection presets for the GUI client
as an additional option.
* Other
- A ``/pause`` meta-command has been added to the CLI client.
- For watchdog conditions, a "precondition cooldown" time can now be
configured.
- Additional help topics can be added to each setup, and they will be
displayed in the GUI/CLI help section for the setup.
- The LDAP authenticator can now query multiple LDAP servers.
- The email notifier can now connect to an SMTP server requiring login.
- The electronic logbook daemon can now be configured to use multiple backend
handlers at the same time.
Release 3.9.0
-------------
* Core
- ``nicos.conf`` files are now in TOML format. The ``toml`` library is a new
dependency.
- Added general NeXuS support (taken from SINQ implementation).
- The ``lowlevel`` device parameter has been replaced by a new parameter
``visibility``, which can specify the visibility for different categories,
e.g. the user namespace or the measurement metadata.
- A new mixin ``HasAutoDevices`` can be used to consistently handle
auto-subdevices and their properties.
* Commands
- Added ``stddev`` statistics function for the environment to record the
standard deviation of a device's value during acquisition.
- Added the ``ListUsers`` command.
- Added the ``ListDatasinks`` command.
* Devices
- Added a generic "calculated readable" device that combines the values of two
other devices.
- The Epics integration now supports different protocols via the ``caproto``
and ``p4p`` libraries.
- The Tango devices depending on the MLZ interface specification have been
moved to ``nicos.devices.entangle``.
- The McStas support for virtual devices has been extended to cover single
detectors/counters and now includes a separate device to configure
parameters related to McStas.
* GUI
- NICOS Scan files can now be re-read and displayed in the scan window.
- The key expressions for history plots (and monitor widgets) can now
be any Python expression involving key names, e.g. ``(cryo + 5) * 3`` or
``sin(motor)**2``.
- The dry results can't be collapsed anymore but closed.
- Display 3D data by summing in z direction as 2D pictures in live
data panel.
- Added interface to initialize control elements in live data panel.
- Live plot images can now be easily added to the elog.
- Expert mode can now be pre-set in a connection profile.
- The live data window can now use colormaps from the ``colorcet`` library, as
well as custom ones defined by the user.
* Other
- A new IPython client interface has been added. See ``doc/iPython.rst`` for
usage and details.
* Docs
- Updated and expanded the "set up a new instrument" howto guide.
Release 3.8.0
-------------
* Core
- NICOS now requires Python 3.6 to run.
- All files produced by or delivered with NICOS will be encoded as UTF-8.
- The live data transport protocol has been extended, so that 1-D data
can be delivered with information about the abscissa labels, and
multiple data curves can be sent in a single event.
- The SECoP (https://github.com/SampleEnvironment/SECoP) integration has
been improved.
- McStas support has been improved and extended.
- Cleaned up the proposal management in the Experiment class.
- Added a notifier class for `Mattermost <https://mattermost.com/>`_.
- Tracebacks in logfiles and shown to the user now support Python 3 chained
exceptions.
* Commands
- Added ``gridscan``, which performs a scan over an orthogonal grid of
multiple devices.
* GUI
- The GUI now requires PyQt 5.
- Devices that fail to create are now shown in the devices list with an error
symbol, instead of being omitted from the list entirely.
- Add editor config to pop out dry run windows. This makes sense when the
editor is in a panel configuration with limited vertical space, e.g. with a
script builder on top.
- Live data view changes:
Add capability to display more than 1 curve in the live data view panel.
Add configuration to select the displayed data file types, marker types,
and line types. Additionally added some configuration to define the default
behaviour for new live data.
- Plots can now be exported as graphics from the history viewer.
- Improved Windows client building.
- Many more image data formats can now be read back in from file in the Live
Data panel.
- ``.desktop`` files are now provided for ``nicos-gui`` and ``nicos-history``
to add NICOS to the application menu on Linux.
- The electronic logbook now accepts Markdown formatted text entry.
* Watchdog
- Reduced the chattering if only the message changes but not the level.
- Added timeout parameter for each entry.
* Documentation
- Added data handling description and tutorial how to check the setup files.
Release 3.7.0
-------------
* Core
- The handling of detector presets has been changed: preset names (other than
time) now primarily come from device names. For example, "mon1=1000" can
only be used as a preset if there is a monitor channel called "mon1" in
the detector. Exceptions are possible, but must be configured.
- Any detector channel can now be used as a preset. For channels which don't
have the ability to stop the measurement at the hardware level, NICOS will
check that the preset is reached and stop in software. This allows, for
example, measuring until a certain number of counts in a region of interest
is reached.
- The "lttb" module has been unbundled and is now an external requirement.
* GUI
- Qt 5 is now preferred if installed, and Qt 4 can be forced by setting
"NICOS_QT=4" in the environment.
- A new panel has been added that allows run-time reconfiguration of which
watchdog conditions should be enabled. Resolved warnings are now shown as
such in the notification window.
* Commands
- Added new core commands "rmove()" and "rmaw()" for relative movement
of devices.
- The "help()" command can now be called with a string that represents
a command or device and will show the correct info.
- "appendscan()" now works for scans over multiple devices.
* Devices
- Support for accessing SECoP (Sample Environment Control Protocol) nodes as
NICOS devices has been added.
- QMesyDAQ devices with Tango interface have been added.
- Optional Slack notifier is not longer Python 2 compatible.
* Watchdog
- The watchdog daemon has been rewritten. Conditions can now be defined in
individual setups, together with the devices they relate to.
* Status Monitor
- Status monitor "block" elements can now be defined in individual setups,
together with the devices they relate to. This makes the creation of
status displays for common sample environments much easier.
Release 3.6.0
-------------
* Core
- In data acquisition, detector prepare() is now called after setPreset().
- The command-line client can now display subsecond timestamps.
- Experiments can now force single count()s to produce a scan dataset
with one point.
- A device parameter can now be defined as "internal", which means that it is
managed exclusively by the device's code, and not accepted in setup files.
- Non-Readable devices now also have an "active in dry-run" flag.
- The new parameter validator "oneofdict_or" allows naming some special
device values while also supporting unnamed values inbetween.
- The collector daemon can now map device keys when forwarding between caches.
- Added a Lorentzian fitter for use in the GUI and fit commands.
- Daemon user authenticators can now add metadata to the returned User
objects.
* GUI
- The display of the executed script now includes line numbers.
- The device panel shows more actions for non-moveable devices, such as
reset and enable/disable.
- A new panel is available for low-level access to PLC devices following
the PILS specification.
- The Qt monitor now supports scale/offset specifiers for plotted values.
- The standalone history application now also supports saved presets,
restoring views, and listing the available keys for display, and it allows
choosing the cache server to use.
- Tabs in a tab bar guiconfig element can now be displayed on the left side.
* Devices
- Added a debugging data sink.
- Added a Tango MotorAxis device.
- Added a device to receive instructions from a barcode reader.
- Slit devices can now reference their axes in parallel.
* Commands
- Added "abort()" which stops a script from within the script,
which is more intuitive than raising an exception.
* Tools
- Added systemd integration with a unit that generates and starts units for
each configured NICOS service, similar to the init script.
- Added a tool to generate password hashes for the daemon setup.
- Added a tool to rename devices in a flatfile cache database.
* Development
- Many more fixes for Python 3 and Qt 5.
Release 3.5.0
-------------
* Core
- Setups with group 'configdata' will now be handled like normal setups. This
allows to access to the values from any other setup file.
- The 'tupleof' parameter type now accepts numpy arrays.
- The 'ParamDevice' can now return the status of the referenced device.
- Improved 'Dry run' mode by fixing some issues like calling 'doVersion' and
(for TACO devices) 'doUpdate*' methods and using the hardware stubs for
TACO/TANGO/EPICS devices.
- Breakpoints now work as expected in the daemon debugger.
* GUI
- Improved compatibility with Qt 5.
- Created a nicer 'About' dialog and removed the 'About Qt' dialog.
- The scan plot now tries harder to select a proper X axis by determining
the first changing device.
- Show value labels for for multi-value devices in device dialogs.
* Commands
- The 'tomo' command now accepts additional detectors.
* Watchdog
- Conditions learned the full setup dependency syntax like the status monitor
fields and groups.
* Tests
- Instrument specific test scripts are now run during the test suite, in
dry-run mode.
* Development
- All modules now using several future imports for Python 3 compatibility.
- Import order has been made consistent using 'isort'.
Release 3.4.0
-------------
* New client/server protocol(s)
- The daemon communication layer has been made protocol independent. It is
now possible to configure the transport layer and serializer to allow
connections from clients which are not running in the Python world, without
implementing the Python pickle protocol on the client side.
* Core
- Added support for disabling devices. The components here are a new
'CanDisable' mixin, a new status 'DISABLED' to show disabled devices,
and new GUI elements to disable/reenable the devices.
- The compatibility of new setups will be checked *before* starting to
unload/load anything, so the user will not get an empty device list in case
of an error during loading a new setup.
- Attached devices can now be allowed to not exist in the loaded
configuration.
- Userlimits are reinitialized when set to (0, 0).
- 'Multi' methods (multiWait, multiStatus, ...) now raise the highest-
severity exception. Repeated display of exceptions when waiting on a
single device is avoided.
- Runtime re-assignment of device methods is now forbidden.
- Current script name is now returned in the daemon "getstatus" query.
* GUI
- Implemented log-x scale for scan plotting.
- Added an option to show/hide error bars in scan plots.
- The window entries in the GUI config learned the 'setups' option to display
them depending on the loaded setups in daemon.
- The "control device" dialog now hides the device parameters at first, but
allows to display them. In 'expert mode' they will be displayed by default.
* Commands
- tomo: add a parameter to rearrange the 180 deg position into the sequence
of the positions instead beeing the first position.
- Improved cosine fit.
* Dry-run
- Full log output is now available even in sandbox mode.
- Fixed TACO/TANGO/EPICS devices access.
- Fixed Measurables with hardware access.
- SeqSleep is now not executed anymore.
* Tools
- check_setups: 'Exp' device is now allowed in more than one setup.
* Tests
- Added timeout decorator to test functions that seem to hang sporadically.
- Do not try to import special/hidden dirs.
* Doc
- Added tutorials to create new devices, commands, and data sinks.
- Added options description of some panels.
* Development
- All includes are now sorted according to PEP8 rules (but facility
import follow nicos core imports).
Release 3.3.0
-------------
* Core
- Added commands "ListMailReceivers" and "ListDataReceivers".
- A longstanding bug with client connections not closing properly has
been fixed, it resulted in clients receiving events (like script
output) multiple times.
- A "doAdjust" method has been added to customize the action of
"adjust" and the "offset" parameter to different conventions.
- The "_Restart" command is now blocked if there are active background
threads.
* Devices
- Access restrictions with the "requires" parameter are now checked
when trying to set device parameters.
- Notifier devices can now be marked as "private", which means that their
receivers are not overwritten with the users' addresses for each new
experiment.
- Unit handling of several Tango device classes has been improved.
* GUI
- Rebinning of very large history datasets has been changed to use a
"triangular downsampling" algorithm that better preserves interesting
features of the data in question.
- Triangular downsampling also applies to status monitor plots.
Release 3.2.0
-------------
* Core
- The "center()" and "checkoffset()" commands can now use any defined
fitting function, or "center_of_mass", to determine the peak center.
- Fitting commands output the relative error as a column.
- The collector service can now forward cache values to multiple different
backends (NICOS cache/webhooks).
* Devices
- Tango VectorInput/VectorOutput are now supported.
- Added a device to read out the absolute Q value for TAS instruments.
- The generic detector can now calculate post-processed values from
scalar-valued PassiveChannels.
- Added an image sink for writing multiple arrays from a single detector.
* GUI
- Each setup can now name a "representative" device to show in the
device tree when the setup is collapsed.
- The history panel can now save multiple displayed curves in one data file.
- The selection of a fit function, and whether to pick initial fit points,
has been reworked in the scans and history panels.
- All available fit functions can be used in the scans and history panels.
- Fitting by default uses the currently viewed range to limit the fit range.
- Custom function presets can be added to the "Fit arbitrary function" dialog
in the GUI config.
- Instrument configurations can now include custom dialogs to show on
NewExperiment and FinishExperiment (if triggered through the proposal
window).
- Some minor visual enhancements in the plot displays.
* Demo
- The "nicos-demo" command now always starts with the demo instrument.
To use an instrument selected by nicos.conf or the INSTRUMENT environment
variable, pass the "-O" option.
Release 3.1.0
-------------
* Core
- The poller now doesn't completely give up when a setup file has syntax
errors. Instead, it tries to restart after each file change.
- The HTML monitor now uses GR instead of Matplotlib for plotting.
- Added a Kafka backend for the cache server.
- "Exec now" commands are now executed in the context of the calling client,
not a generic "system" user.
* GUI
- Qt 5 is now supported by the GUI application. Set ``NICOS_QT=5`` to enable
if PyQt5 is installed on the system. In later versions, this will become
the default mode.
- Support for Qwt as plotting backend has been removed.
- Added a SSH tunnel option to the client, available with the ``-t`` option.
- The GR live widget now supports one-dimensional data and multiple live channels.
- All curves in a history plot can now be saved to data files at the same
time.
- Offset and scale in history plots is now applied to string values mapped
to integers.
- All scan columns can now be plotted as Y values in scan plots.
- The setup panel now shows a hint if some setups are not offered for
loading because of errors.
* Devices
- Added a generic "pulse" device (that switches an attached device to a
different value for a selected time).
- Tango device creation now fails faster if the Tango host is down.
- Added a notifier class for Slack.
- The limit handling in the generic Axis class has been overhauled to
better take the motor's limits into account.
Release 3.0.0
-------------
In this release, the "custom" directory with setups and modules for instruments
has been replaced by Python packages. The most important consequences from this
change are:
* Individual instrument customizations are separated by facility, called
``nicos_<facility>``. By default, all such packages are installed alongside
with the main ``nicos`` package.
* Custom modules no longer need to be mapped into ``nicos.<instrument>`` with a
nonstandard manipulation of ``__path__``, which makes it much easier for tools
and IDEs to find and process them.
* All device and class names in setups, as well as ``guiconfig.py``, must now
be fully qualified. There are no shortcuts (leave out ``nicos.``) anymore.
* The ``custom_paths`` setting for ``nicos.conf`` has been replaced with a
setting ``setup_package``. It specifies only a Python package name. The
package is found along ``PYTHONPATH``.
* The ``INSTRUMENT`` environment variable should now be of the form
``nicos_<facility>.<instrument>``.
Other changes:
* GUI
- The GR-based live detector view can show ROIs.
- The device list can now show arbitrary parameters of a device, in addition
to the current value and status. Which devices should show which parameters
is configured in the ``guiconfig.py`` for each instrument.
- In the scans panel, opening new scans automatically can now be switched off.
- If a script exits with an error, the last executed line is marked with a
red arrow in the script view.
- Multiple bugs have been fixed in the find/replace dialog of the script
editor.
* Devices
- A new sequence item, ``SeqWait``, has been added for sequencer devices.
- EPICS support has been improved considerably.
- A ``ScanningDetector`` has been added to the generic devices. On count, it
will perform a scan of a device and collect the subscan results.
* Commands
- A new ``waitfor`` command has been added to replace simple while-loops.
* Core
- The ``rsa`` module is now a required dependency, and will always be used
for encrypting credentials between the daemon and its clients.
- Support has been added for encrypted password and other credentials storage.
- Daemon slowdown due to slow/hanging/intermittent network connections has
been reduced.
* Documentation
- The user documentation for some commands was extended.
* Test suite
- Many tests have been added, and the test suite is more reliable due to a
rework of test fixtures.
- Tests can be run in Docker containers.
Release 2.12.0
--------------
* Core
- Change in daemon protocol: Requests now use an id to allow for reordering
the requests.
- New sandboxing mode for simulation mode. This uses an external binary (needs
to be setuid root) that will call the unshare() system call, which gives the
process to create a new mount and network namespace. That allows remounting
the filesystem read-only in a chroot, and complete isolation of any network
ports that might be used.
- Alias config handling is now more useful: when loading setups that do not
have new selections for existing alias devices, the alias assignments are
not changed.
- A new command "pause()" is available to ask for user confirmation via GUI
before continuing with the script.
- The watchdog can now emit a message and/or execute an action when a
warning condition has gone back to normal.
- The electronic logbook now also saves a plain-text version of the console
output, which is very similar to the ``nicos-*.log`` files, but saved in
the user's proposal directory.
- Added "virtual" goniometers for TAS mode that tilt the sample along the
sample's orientation reflections, regardless of the physical offset.
* GUI
- A new livewidget for 2D-images based on gr is available.
- Allow switchable wrapping in console output.
- Added "ETA" (estimated finishing time) display to script status panel, which
uses the simulation mode to get an estimate and update it when individual
commands are finished. Care should be taken to only enable this if
sandboxing is available as well.
- Device parameters can now be refreshed from hardware on demand (right click
into the parameter list in a device control dialog).
- Selection of devices/parameters for the history plot can now optionally be
made through a tree widget.
- Value selections for switcher devices are now sorted by default.
- Reconnection after lost connection is now less aggressive, to avoid a
situation with infinite reconnect attempts stalling the daemon.
- Added an exponential fitting function for history plots.
- Alias selections in the setup dialog are not touched unless new selections
for the aliases are enabled by user choice.
- Added an optional dialog that pops up after a period of inactivity (to
remind users of changing the experiment if necessary).
- A watermark image can be displayed in the background of the console panel.
* Tests
- Tests now use py.test, which has better fixture and reporting support.
Besides these major changes, this release contains a lot of bugfixes and
instrument related changes.
Release 2.11.0
--------------
* GUI
- The history plotter, as well as the expressions for status monitor
displays, now understand scale and offset notation like this:
"dev/value*100+0.7".
- The history plotter now understands expressions with multiple sub-
indices, like "dev/value[0][1]".
- The history plotter now remembers previously opened views and offers
them for reopening with one click.
- Scans can now be normalized to the maximum of each curve.
- Added a sigmoid fitting function.
- Event masking has been improved in the client protocol, so that live
detector data is not sent to clients that haven't opened a panel
that displays it.
- Fit curves produced by script commands like "gauss" or "sigmoid"
are now drawn in the scans panel again.
* Commands
- Added the "sigmoid" command to fit a sigmoid curve from the
command line.
- Added a "live" command that starts counting on the detector in the
background for an unspecified amount of time, which is e.g. useful for
aligning the instrument or sample.
- Continuous scans can now be stopped by the regular "stop" command
between each virtual point.
- The "numpy" module is now automatically available in the NICOS
namespace.
* Core
- Added new utility function "waitForState()" which will wait on a device
getting into a state passed to the function.
- The "waitForStatus()" utility function has been renamed to
"waitForCompletion()" in order to clarify that this function will wait
for "doIsCompleted()" returning `True` and to avoid confusion with the
new "waitForState()" function.
- The code to automatically migrate counter files from the old, pre-2.9
data handling was removed.
- Added devices that represent a ROI on an area detector, which can be
configured by the user, return their total count as a data column,
and displayed in the GUI.
- Device parameters are now filled into dataset metainfo from the cache.
If there are parameters that must be queried from hardware, they
should either be polled (using "_pollParam") regularly, in a
"doPoll" method, or specifically before dataset collection, in a
"doInfo" method.
- Lowlevel devices are now always created by the session startup.
Previously, a lowlevel device would only be created when required
(as attached) by another device.
- Alias devices can now be non-lowlevel regardless of the lowlevel state
of their pointee devices.
- Parameters can now have their own format string used to format param
values in output.
* Services
- The error notification email now shows only a manageable excerpt of
the failed script, with line numbering.
- The watchdog's precondition handling has been improved.
* Devices
- The single-crystal diffraction facilities have been significantly
improved, and a lifting-counter geometry added.
- HasWindowTimeout now supports "timeout=None" properly. It also includes
the window in its time estimation for dry run mode.
- Added a device that acts as an on/off switch for Tango devices.
- Readback of targets has been added to EPICS moveables.
- The virtual image source has been made more realistic.
- The implementation of the CARESS accessing devices (used at STRESS-SPEC,
SPODI, and V20 instruments) has been significantly improved.
* Documentation
- Documentation of GUI widgets has been improved with more pictures, and
automatic insertion of widget property docstrings.
Release 2.10.0
--------------
* GUI
- Allow to configure the timefont size as well. This is useful for
non full-screen display, as they otherwise get quite large.
- Add cosine as standard fitting function.
- cmdlets: offer a box for continuous scanning for scan/cscan.
- Add "finish early and stop" action.
- Disable dry run buttons during dry run.
- Add the TAS setup to the Qt designer lib.
- Display elements of multi-dimensional arrays in status monitor. This access
is implemented as listed indices on key values in the configuration.
* Command line client
- support ~/x paths for /edit, /run etc.
* Commands
- Reimplementation of 'contscan' with respecting the device limits.
- In 'scan' command the device values will read after reaching point.
- 'tomo' command with multiple moveable devices.
* Tools
- Add 'reformat_setup' tool to format the setup files.
- 'check_setups' gives errors in case of using 'exclude' instead of
'excludes'.
* LIMA support
- Implement image flipping and rotation.
* CARESS support
- Fix some problems with the simulation.
- Add 'Driveable' base class.
- Add missing doStop for the active channels.
- Add 'histogram' and 'listmode' in QMesyDAQ module.
* EPICS support
- Add a validator for EPICS PV-names.
- Make epics test-safe.
* Demo version
- Improve start/stop of the processes on Windows.
- Add a virtual STRESS-SPEC instrument.
- Clean up startup state.
* Documentation
- Change the HTML style sheet to the 'readthedocs' style.
- Rearrange and rename the documentation menus.
- Add some missing documentation for devices/instruments.
- Restructure the PDF documentation.
- Add links to the customers in the custom entries.
* Other
- Add a new parameter tof configure the preferred scattering side of the
monochromator or analyzer crystal.
- Improve the test suite.
- Allow stopping sequencer devices with stop().
- Fits data sink: add unit to header key values and order the keys
in header.
Release 2.9.0
-------------
* Version requirements
- NICOS now requires Python 2.7.
* General behavior
- Better alias handling: alias preferences are now expressed in setups with
a new value "alias_config", instead of unconditionally setting aliases
from startup code.
- The "instrument" and other special devices are now (attempted to be)
created when accessed, not only once at setup loading time.
- Add basic EPICS support.
- Add basic CARESS support.
- 'Multi' sample support.