The project milestones describe the future plans.
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
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
- Drop Codacy (https://app.codacy.com/gh/BCDA-APS/apstools) as no longer needed.
- #540
Add
apstools.utils.listplans()
function.
- #534
Add
apstools.utils.OverrideParameters
class. Hoisted from APS USAXS instrument.
- #537
Enhancements to
apstools.utils.listruns()
:
- Add search by list of
scan_id
oruid
values.- Optimize search speed.
- #534
Add
apstools.plans.documentation_run()
plan. Hoisted from APS USAXS instrument.
- #528
Add
kind=
kwarg to synApps Devices.
- #539
Break
devices
into submodule_devices
.
- 1.5.1
released 2021-07-22
- #522
Deprecate apstools.devices.ProcessController. Suggest ophyd.PVPositioner instead.
- #521
Enhancement: new functions: getRunData(), getRunDataValue(), getStreamValues() & listRunKeys()
- #518
Bug fixed: TypeError from summary() of CalcoutRecord
- #517
Added support for python 3.9.
- #514
Refactor 'SIGNAL.value' to 'SIGNAL.get()'
- 1.5.0
released 2021-04-02
- #504 comment
Dropped support for python 3.6.
- #495
Dropped diffractometer support code.
- #506
spec2ophyd
can now read SPEC config files from APS 17BM
- #504
Overhaul of listruns() using pandas. Previous code renamed to listruns_v1_4().
- #503
Unit tests with data now used msgpack-backed databroker.
- #495
remove hklpy requirement since all diffractometer support code will be moved to [hklpy](https://github.com/bluesky/hklpy) package.
- 1.4.1
released: 2021-01-23
- 1.4.0
released: 2021-01-15
- #483
Python code style must pass
flake8
test.
- #482
specwriter: Fix bug when plan_args structure includes a numpy ndarray.
- #474
apstools.utils.listruns()
now defaults to the current catalog in use.New functions:
apstools.utils.getDatabase
apstools.utils.getDefaultDatabase
- #472
Respond to changes in upstream packages.
- package requirements
- auto-detection of command list format (Excel or text)
- use openpyxl instead of xlrd and pandas to read Microsoft Excel .xlsx spreadsheet files
- #470
Area Detector plugin preparation & detection.
apstools.devices.AD_plugin_primed()
re-written completely
apstools.devices.AD_prime_plugin()
replaced by
apstools.devices.AD_prime_plugin2()
- #463
Remove deprecated features.
apstools.suspenders.SuspendWhenChanged()
apstools.utils.plot_prune_fifo()
apstools.utils.show_ophyd_symbols()
apstools.synapps.asyn.AsynRecord.binary_output_maxlength()
apstools.devices.AD_warmed_up()
- #451
Undulator and Kohzu monochromator functionalities
apstools.devices.ApsUndulator()
Adds some
Signal
components (such as setting kind kwarg) that are helpful in moving the undulator
- 1.3.9
released 2020-11-30
- 1.3.8
released: 2020-10-23
- #449
diffractometer wh() shows extra positioners
- #446
utils: device_read2table() renamed to listdevice()
- #445
synApps: add Device for iocStats
- #437
diffractometer add pa() report
- #426
diffractometer add simulated diffractometers
- #425
BUG fixed: listruns() when no stop document
- #423
BUG fixed: apsbss IOC starter script
- 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
- #400
resolve warnings and example documentation inconsistency
- #399
parse iso8601 date for py36
- #398
DiffractometerMixin: add wh() method
- #396
provide spec2ophyd application
- #394
add utils.copy_filtered_catalog()
- #392
RTD make parameter lists clearer
- #390
improve formatting of parameter list in RTD
- #388
add utils.quantify_md_key_use()
- #385
spec2ophyd: make entry point
- 1.3.3
released 2020-07-22
- 1.3.2
released 2020-07-20
- #380
apsbss: fix object references
- 1.3.1
released 2020-07-18
- #378
apsbss_ioc.sh: add checkup (keep-alive feature for the IOC)
- #376
apsbss: example beam line-specific shell scripts
- #375
apsbss: add PVs for numbers of users
- #374
apsbss_ophyd: addDeviceDataAsStream() from USAXS
- #373
account for time zone when testing datetime-based file name
- #371
update & simplify the travis-ci setup
- #369
spec2ophyd: handle NONE in SPEC counters
- #368
spec2ophyd: config file as command-line argument
- #367
apsbss: move ophyd import from main
- #364
apsbss: add PVs for ioc_host and ioc_user
- #363
Handle when mailInFlag not provided
- #360
prefer logging to print
- 1.3.0
release expected by 2020-07-15
- add NeXus writer callback
- add
apsbss
: APS experiment metadata support
- #351
apsbss: put raw info into PV
- #350
apsbss: clarify meaning of reported dates
- #349
apsbss: add "next" subcommand
- #347
some apbss files not published
- #346
publish fails to push conda packages
- #344
listruns() uses databroker v2 API
- #343
review and update requirements
- #342
summarize runs in databroker by plan_name and frequency
- #341
tools to summarize activity
- #340
update copyright year
- #339
resolve Codacy code review issues
- #338
unit tests are leaving directories undeleted
- #337
Document new filewriter callbacks
- #336
add NeXus file writer from USAXS
- #335
update requirements
- #334
support APS proposal & ESAF systems to provide useful metadata
- #333
access APS proposal and ESAF information
- #332
listruns(): use databroker v2 API
- #329
add NeXus writer base class from USAXS
- 1.2.6
released 2020-06-26
- #331
listruns succeeds even when number of existing runs is less than requested
- #330
BUG: listruns: less than 20 runs in catalog
- #328
epid: add final_value (.VAL field)
- #327
epid: remove clock_ticks (.CT field)
- #326
BUG: epid failed to connect to .CT field
- #325
BUG: epid final_value signal not found
- #324
BUG: epid controlled_value signal name
- 1.2.5
released 2020-06-05
- 1.2.3
released 2020-05-07
- 1.2.2
released 2020-05-06
- DEPRECATION #306
apstools.plans.show_ophyd_symbols() will be removed by 2020-07-01. Use apstools.plans.listobjects() instead.
- #311
adapt to databroker v1
- #310
enhance listruns() search capabilities
- #308
manage diffractometer constraints
- #307
add diffractometer emhancements
- #306
rename show_ophyd_objects() as listobjects()
- #305
add utils.safe_ophyd_name()
- #299
set_lim() does not set low limit
- 1.2.1
released 2020-02-18 - bug fix
- #297
fix import error
- 1.2.0
released 2020-02-18 - remove deprecated functions
- 1.1.19
released 2020-02-15
- 1.1.18
released 2020-02-09
- PyPI would not accept the 1.1.17 version: filename has already been used
- see release notes for 1.1.17
- 1.1.17
released 2020-02-09 - hot fixes
- 1.1.16
released 2019-12-05
- #269
bug: shutter does not move when expected
- #268
add redefine_motor_position() plan
- #267
remove lineup() plan for now
- #266
bug fix for #265
- #265
refactor of #264
- #264
Limit number of traces shown on a plot - use a FIFO
- #263
device_read2table() should print unless optioned False
- #262
add lineup() plan (from APS 8-ID-I XPCS)
- 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
- #246
synApps: shorten name from synApps_ophyd
- #245
swait & calcout: change from EpicsMotor to any EpicsSignal
- #240
swait: refactor swait record & userCalc support
- #239
transform: add support for transform record
- #238
calcout: add support for calcout record & userCalcOuts
- #237
epid: add support for epid record
- #234
utils: replicate the unix() command
- #230
signals: resolve TypeError
- 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
- #196
spec2ophyd handle MOTPAR:read_misc_1
- #194
new
show_ophyd_symbols
shows table of global ophydSignal
andDevice
instances
- #193
spec2ophyd ignore None items in SPEC config file
- #192
spec2ophyd handles VM_EPICS_PV in SPEC config file
- #191
spec2ophyd handles PSE_MAC_MOT in SPEC config file
- #190
spec2ophyd handles MOTPAR in SPEC config file
- 1.1.7
released 2019-07-04
- DEPRECATION
apstools.plans.run_blocker_in_plan() will be removed by 2019-12-31. Do not write blocking code in bluesky plans.
- Dropped python 3.5 from supported versions
- #175
move plans.run_in_thread() to utils.run_in_thread()
- #168
new spec2ophyd migrates SPEC config file to ophyd setup
- #166
`device_read2table(): format `device.read() results in a pyRestTable.Table
- #161
`addDeviceDataAsStream()`: add Device as named document stream event
- #159
convert xlrd.XLRDError into apstools.utils.ExcelReadError
- #158
new
run_command_file()
runs a command list from text file or Excel spreadsheet
- 1.1.6
released 2019-05-26
- 1.1.5
released 2019-05-14
- #135
add refresh button to snapshot GUI
- 1.1.4
released 2019-05-14
- 1.1.3
released 2019-05-10
- adds packaging dependence on event-model
- #137
adds utils.json_export() and utils.json_import()
- 1.1.1
released 2019-05-09
- adds packaging dependence on spec2nexus
- #136
get json document stream(s)
- #134
add build on travis-ci with py3.7
- #130
fix conda recipe and pip dependencies (thanks to Maksim Rakitin!)
- #128
SpecWriterCallback.newfile() problem with scan_id = 0
- #127
fixed: KeyError from SPEC filewriter
- #126
add uid to metadata
- #125
SPEC filewriter scan numbering when "new" data file exists
- #124
fixed: utils.trim_string_for_EPICS() trimmed string too long
- #100
fixed: SPEC file data columns in wrong places
- 1.1.0
released 2019.04.16
- change release numbering to Semantic Versioning (remove all previous tags and releases)
- batch scans using Excel spreadsheets
- bluesky_snapshot_viewer and bluesky_snapshot
- conda package available