History of changes in the apstools project. Project milestones describe future plans.
Bugfix released 2024-10-25.
- Allow imports to succeed when developing or testing with databroker v2.0+.
- In SpecWriterCallback2, set spec_filename in constructor.
- Use 'NeXus_release' file attribute in 'nxwriter' callback.
- 'EpicsMotorLimitsMixin' features are now part of 'ophyd.EpicsMotor'.
released 2024-09-21
- Add ad_creator() and ad_class_factory() -- Easy to create area detector objects.
- Add SpecWriterCallback2 (writes point-by-point to file).
- Support for most APS-U undulators. (All but for 29-ID.)
- Area detector image shape of (0, 0, 0) caused listdevice() to fail.
- PVPositionerSoftDone should set done=False at start of move.
- RuntimeError from listdevice() with area detector object.
- PV name typo in synApps SaveData() class. And capitalization.
- CI workflow artifact cache errors.
- Add ramp temperature and output enable to PTC-10.
- Remove Anaconda defaults channel from environment per TOS.
- Replace unit tests marked by 'local' decorator.
- Unit tests now support Python version 3.9, 3.10, & 3.11.
- Update common PVs for APS-U era.
released 2024-07-10
- Add new APS PlanarUndulator device.
- Add new APS Revolver_Undulator device.
- Add new APS STI_Undulator device.
- Add new APS Undulator2M device.
- Add new APS Undulator4M device.
- Describe
.component_names
in What are the objects to control? - Pin numpy<2 because upstream dask package needs a fix.
- Removed ApsUndulator and ApsUndulatorDual devices.
- Removed top-level requirements files. They were not used.
- Update APS cycle begin & end dates.
- Update device support for APS machine parameters (current, lifetime, ...).
released 2024-04-23
- Add new plan for edge alignment called edge_align.
- Added a mesh grid scan plan that will collect until number of collection points is met.
- lineup2() should work with low intensity peaks.
- lineup2() would raise ZeroDivideError in some cases.
- Increase minimum aps-dm-api version to 8.
- PVPositionerSoftDone should set 'done' to False at start of a move.
- Race condition with SR570 pre-amp.
- Code format conforms to 'ruff'.
- Add additional support for APS Data Management API.
- Make the home page more concise.
- Refactor packaging from setup.py to pyproject.toml.
released 2024-01-23
- Add (ophyd) device support for: * DG-645 digital delay/pulse generator. * Measurement Computing USB CTR08 High-Speed Counter/Timer * Simulated process controller as positioner using EPICS swait record. * Simulated process controller as positioner using EPICS transform record. * synApps userArrayCalcs and EPICS acalcout record.
- Add subnet check for APSU beamlines.
- Add template support for writing NeXus/HDF5 files.
- New lineup2() plan can be used in console, notebooks, and queueserver.
- Fix
AD_full_file_name_local()
for case when the read & write paths are identical.
- Avoid voltage spikes when changing gain of SRS570 preamplifier.
- In
listdevice(show_pv=True)
, setcname=True, dname=False
if not provided by caller. - Move
.OVAL
field fromEpicsRecordOutputFields to new ``EpicsRecordAnalogOutputFields
- Write tables of plot statistics in most compact form.
- Remove
ScalerMotorFlyer
, pending issue #763.
released 2023-07-19
- Add ophyd device support for APS Data Management workflows.
released 2023-05-23
- Add
fb_epid
database support from the optics module. - Add guide How to interrupt/stop/abort a running plan & recover to safe settings.
- Add
close_pv
&open_pv
kwargs toApsPssShutter
- Add
ensure_AD_plugin_primed()
convenience function. - Made
listdevice()
more tolerant of unconnectable signals.
- APS cycle set to
APSU
during this dark year. - Resolve AD ERROR reports "capture not supported in Single mode".
- Add unit tests for shutters.
- Apply consistent code style (black) throughout.
- Set
kind
attribute to add plugin to ad.read_attrs list. - Clear
PVPositionerSoftDone
's setpoint & readback subscriptions at exit.
released 2023-03-27
- add
log_path=None
kwarg toapstools.utils.stream_log_handler()
- resolved
AttributeError
for certain logging configurations
released 2023-03-12
- listobjects()
printing
keyword argument is deprecated. - ListRuns.to_dataframe()' method is deprecated.
- ListRuns.to_table() method is deprecated.
- listruns()
printing
keyword argument is deprecated. - listruns()
tablefmt
keyword argument is deprecated. Usetable_style
instead. - listruns() now returns pyRestTable.Table or pandas.DataFrame
- MeasCompTc32: Measurement Computing TC-32 Thermocouple reader
- Add guide What are the objects to control?
- labels_to_streams(): do not plot items in the labeled stream
- labels_to_streams(): failed when no motor label assigned
- add more unit tests for
apstools.plans
- addDeviceDataAsStream() renamed to write_stream()
- FileWriterCallbackBase.file_name now a property, uses pathlib
- listobjects() now returns pyRestTable (by default)
- listdevice() now returns pyRestTable (by default)
- listplans() now returns pyRestTable (by default)
- listruns() now returns pyRestTable (by default)
- NXWriter: unit tests added for proper NXdata@axes structure.
released 2023-02-16
- Release process updated on the wiki.
released 2023-02-16
- NXWriter: add wait_writer_plan_stub() method for use in a plan.
- Release process documented on the wiki.
released 2023-02-15
- Support to record all motor (or other ophyd-labeled devices) positions at start (or end) of run.
- SpecWriterCallback: write
#O
and#P
lines from motor positions recorded at start of run.
- NXWriter: scans with area detectors did not have image data. Fixed. Clients must wait for writer to finish.
- PVPositionerSoftDone: computation of 'done' signal and 'inposition' deconvoluted.
- Struck3820: changed (typo)
do_readl_all
todo_read_all
- Tests involving PVPositionerSoftDone call '.cb_readback()' method to upate 'done' signal.
- Added github/super-linter workflow, adds mypy, isort, and other tests.
- Apply isort code style.
- Observing random occurrence of unit test failures involving PVPositionerSoftDone.
released 2023-01-11
- Add
apstools.utils.plotxy()
utility function. - Add tag-based documentation selection via PyData switcher.
- In listruns(), also search the hints for keys.
- CI failed to build documentation when creating pip installation.
- ScalerMotorFlyer default fly_time_pad increased to 10 s.
- ScalerMotorFlyer now sets scaler to "OneShot" mode.
- ScalerMotorFlyer in-position comparison now based on motor's precision.
- Version number was not reported correctly in certain situations (issue #771).
- "Custom HDF5 File Name" example updated to latest advice.
- Pin Sphinx to <6 due to problems with PyData and Sphinx v6.
- Conda channel "nsls2forge" no longer needed.
- Remove
nsls2forge
channel from conda environment.
- @jwkim-anl (Jong Woo Kim, ANL) for the
plotxy()
idea.
released 2022-11-30
- Add
ScalerMotorFlyer()
device. - Add functions to support reporting of logging messages.
- Add :meth:`restorable_stage_sigs` decorator.
- Add support for Python 3.11.
- Add
utils.analysis_1D()
&utils.analysis_2D()
functions for peaks statistics.
- Add example notebook Fly Scans with EPICS motor and scaler.
- Add guide How to Search in Databroker.
- Add guide How to setup logging.
- Add convenience import:
from apstools.devices import AD_EpicsFileNameMixin
. - Enable:
from apstools.devices import AD_EpicsFileNameMixin
. - Resolve intermittent, random CI failures.
- Resolve problems reporting unit test coverage statistics.
- Unit tests now support Python version 3.8, 3.9, 3.10, & 3.11.
released 2022-10-16
- [again] Make sure that YML (and other) files are packaged for pip and conda.
skipped
released 2022-10-13
- Add
request_input()
plan stub, per user request. - Add fly scan for scaler v. continuous motor.
- Rename:
devices.make_dict_device()
is nowdevices.dict_device_factory()
.
- Make sure that YML (and other) files are packaged for pip and conda.
- PVPositioner got stuck if target position was the same as current position.
- Removed all snapshot support.
released 2022-10-04
- Pip requirements updated.
released 2022-10-03
- Example of imaging with AreaDetector in Single mode writing HDF5 files.
lineup()
: user can choose which feature (max, min, cen, com), additional API changes.devices.make_dict_device()
to make a recordable Device from a dictionary.- Only publish documentation on demand by executing GitHub workflow.
- Switch HTML documentation to use PyData theme.
- Re-arranged the documentation. Some examples renamed. Content unchanged.
- Update the APS cycle dates file through 2023-04-30.
released 2022-08-15
- Add devices.CamMixin_V3_1_1
- Add devices.CamMixin_V34
- Add devices.SingleTrigger_V34
- Add EpicsScanIdSignal (scan_id from EPICS PV).
- Add run_blocking_function() plan to run blocking functions in the RunEngine.
- Published on conda-forge
conda install -c conda-forge apstools
. - replay() can now take a run, [run], header, or [header]
- Switch HTML documentation to use furo theme.
- Combine install steps, workflows in CI
- Describe how to use the NXWriter callback.
- Refactor AD test with EPICS-controlled image file names.
- Refactor test_move_to_zero().
- Unit tests now support Python version 3.8, 3.9, & 3.10.
bluesky_snapshot_viewer
and underlying GUI code will be dropped by 2022-12-31.- Drop support for Python 3.7 per NEP29.
- Stop publishing on channel
-c aps-anl-tag
(use-c conda-forge
instead).
released 2022-07-06
- Confirmed: databroker finds HDF5 image files with custom names.
- Still not ready for databroker 2.0+.
- Documentation website: https://bcda-aps.github.io/apstools/
- New example: user-controlled HDF5 image file names.
- Using Jupyter notebooks directly (via
nbsphinx
extension). - User-controlled HDF5, JPEG, TIFF image file names.
- Fix timeout problem in utils.connect_pvlist().
- Fix unexpected key in datum kwargs.
- Fix
utils.listdevice()
mixing dot and underline name separators.
- Applied custom project badge for APS software License.
- Use micromamba in testing workflows.
- Drop LGTM.com static code analysis service.
- Drop RTD (readthedocs) documentation publishing service.
- Harry Zhou
released 2022-01-26
- Move
enable
Component out from synApps Record devices. - Renew the unit tests for PVPositionerSoftDoneWithStop.
released 2022-01-20
- Moved
apsbss
support to newapsbss
package (install with eitherpip
orconda
). See https://bcda-aps.github.io/apsbss/ for details. - Can use Python 3.7 - 3.9. Cannot use Python 3.10 yet due to upstream limitation from databroker and intake packages.
- Moved
command_list_as_table()
from utils intoplans/command_list
. - Removed
BusyStatus
from apstools.synApps.busy callbacks/
:DocumentCollectorCallback
,document_contents_callback
, andSnapshotReport
moved intocallbacks/
.devices/
: Reorganized all devices, includingsynApps/
, intodevices/
subpackage.devices/
:SynPseudoVoigt()
moved fromsignals/
todevices/
.plans/
: Reorganizedplans.py
and_plans/
intoplans/
subpackage.snapshot/
: Movedsnapshot
application and related files to a subdirectory.utils/
: Reorganizedutils.py
and_utils/
intoutils/
subpackage.
- Add support for Eurotherm 2216e temperature controller
- Add support for Lakeshore 336 temperature controller
- Add support for Lakeshore 340 temperature controller
- Add support for synApps calc
scalcout
record. - Add support for synApps calc
sseq
record. - Add support for EPICS base
sub
record. - Add support for synApps calc
userAve
database. - Add support for synApps calc
userStringSeq
database. - Add support for synApps calc
userStringCalc
database. - Add support for synApps optics
2slit
database.
- Convert
None
to"null"
when savingPeakStats
to stream.
Now testing with Python versions 3.7 - 3.9. (Can't use with Py3.10 yet due to upstream requirements.)
Update notebooks:
demo_specfile_example
demo_tuneaxis
Remove notebooks:
demo_specfile_databroker
- Applications
- apstools_plan_catalog application and related support.
- Devices
ApsCycleComputedRO
move_energy()
method inKohzuSeqCtl_Monochromator
classProcessController
- Utilities
device_read2table
json_export
json_import
listdevice_1_5_2
listruns_v1_4
object_explorer
- Gilberto Fabbris
- Jan Ilavsky
- Qingteng Zhang
released 2021-11-25
NOTE: The apsbss
component will be moved out of apstools
into its
own package with the next release (1.6.0, ~Feb 2022) of apstools
.
The Python version is limited to 3.7 due to aps-dm-api package. Expect this limitation to be relaxed, allowing any Python 3.7 and higher with the 1.6.0 release.
- Added table of APS run cycle dates. Use that if aps-dm-api not available.
- Restricted python version to 3.7 due to upstream aps_dm_api package.
- Rename name uid to token to avoid LGTM security false alert.
This support was marked as deprecated in release 1.5.4:
apstools.devices.ApsCycleComputedRO
released 2021-10-15
The apstools.beamtime
module and related content (includes apsbss
)
will be moved to a new repository for release 1.6.0. This will
remove the requirement that the APS data management tools (package aps-dm,
which only works on the APS computing network) be included. With this
change, users will be able to conda install apstools -c aps-anl-tag
on
computers outside of the APS computing network.
apstools.utils.listdevice
has a new API (old version renamed tolistdevice_1_5_2
)
- Kohzu monochromator
energy
,wavelength
, andtheta
each are now aPVPositioner
(subclass). - Linkam temperature controller CI94
- Linkam temperature controller T96
- Stanford Research Systems 570 current preamplifier
- Stanford Research Systems PTC10 temperature controller
- XIA PF4 filter now supports multiple PF4 units.
- Generalize that amplifiers will have a
gain
Component attribute. - Generalize that temperature controllers will have a
temperature
Component attribute that is a positioner (subclass ofophyd.PVPositioner
). - Enhanced positioners for EPICS Devices:
*
apstools.devices.PVPositionerSoftDone
*apstools.devices.PVPositionerSoftDoneWithStop
- Fixed bug in
devices.ApsCycleComputedRO
anddevices.ApsCycleDM
involvingdatetime
.
- Moved all device support into individual modules under apstools._devices because apstools.devices module was getting too big. Will refactor all with release 1.6.0.
- Add unit tests for
devices.ApsCycle*
Devices. - Add EPICS IOCs (ADSimDetector and synApps xxx) to continuous integration for use in unit testing.
- Unit tests now use pytest package.
- Suppress certain warnings during unit testing.
This support will be removed in release 1.6.0:
apstools.beamtime
module and related content (includesapsbss
) will be moved to a new repositoryapstools.devices.ProcessController
apstools.utils.device_read2table
apstools.utils.listdevice_1_5_2
apstools.utils.object_explorer
- Fanny Rodolakis
- Gilberto Fabbris
- Jan Ilavsky
- Qingteng Zhang
- 4-ID-C Polar
- 8-ID-I XPCS
- 9-ID-C USAXS
See this table for release change histories, highlighted by version control reference (pull request or issue):
1.5.2: | released 2021-09-29
|
---|---|
1.5.1: | released 2021-07-22
|
1.5.0: | released 2021-04-02
|
1.4.1: | released: 2021-01-23 |
1.4.0: | released: 2021-01-15
|
1.3.9: | released 2020-11-30
|
1.3.8: | released: 2020-10-23
|
1.3.7: | released: 2020-09-18 |
1.3.6: | released 2020-09-04 |
1.3.5: | released 2020-08-25 |
1.3.4: | released 2020-08-14
|
1.3.3: | released 2020-07-22 |
1.3.2: | released 2020-07-20
|
1.3.1: | released 2020-07-18
|
1.3.0: | release expected by 2020-07-15
|
1.2.6: | released 2020-06-26
|
1.2.5: | released 2020-06-05 |
1.2.3: | released 2020-05-07 |
1.2.2: | released 2020-05-06
|
1.2.1: | released 2020-02-18 - bug fix
|
1.2.0: | released 2020-02-18 - remove deprecated functions |
1.1.19: | released 2020-02-15 |
1.1.18: | released 2020-02-09
|
1.1.17: | released 2020-02-09 - hot fixes |
1.1.16: | released 2019-12-05
|
1.1.15: | released 2019-11-21 : bug fixes, adds asyn record support |
1.1.14: | released 2019-09-03 : bug fixes, more synApps support
|
1.1.13: | released 2019-08-15 : enhancements, bug fix, rename |
1.1.12: | released 2019-08-05 : bug fixes & updates |
1.1.11: | released 2019-07-31 : updates & new utility |
1.1.10: | released 2019-07-30 : updates & bug fix |
1.1.9: | released 2019-07-28 : updates & bug fix |
1.1.8: | released 2019-07-25 : updates
|
1.1.7: | released 2019-07-04
|
1.1.6: | released 2019-05-26 |
1.1.5: | released 2019-05-14
|
1.1.4: | released 2019-05-14
|
1.1.3: | released 2019-05-10
|
1.1.1: | released 2019-05-09
|
1.1.0: | released 2019.04.16
|