Releases: pcdshub/pcdsdevices
v3.3.0 (2020-11-17)
API Changes
-
The belens classes use
pcdscalc
to handle their calculations,
changing the lens file specifications as follows:- Changed the
read_lens
to open a normal file instead of a.yaml
file, and to be able to read one lens set at the time from a file
with multiple lens sets. - Changed the
create_lens
methods to use a normal file instead of
.yaml
file, and also to be able to create a set with multiple sets of lens.
- Changed the
-
This is not expected to be breaking, as this feature
is underused in the deployed environments.
Features
-
Added a
LensStack.set_lens_set
method to allow the user
to choose what set from the file to use for calculations. -
Added a factory function
acromag_ch_factory_func
to
support the creation of happi entries from the questionnaire
for a single acromag channel.- Added an alias for this function
AcromagChannel
.
- Added an alias for this function
-
Added a custom status print for motors by overriding the status info handler.
-
Added a new component for
EpicsMotorInterface.dial_position
-
Added a new method
EpicsMotorInterface.check_limit_switches
to return a
string visualization of the limit switch state. -
Added a custom status print for slits by overriding the status info handler.
-
Added a helper function in
utils.get_status_value
to support getting
a value from a dictionary. -
Added a custom status print for PIM by overriding the status info handler.
-
Added a custom status print for IPM by overriding the status info handler.
Device Updates
SmarActOpenLoop
: open loop steps signal changed to RO.
Added some docs.PCDSAreaDetectorTyphosBeamStats
Now sub-classes
PCDSAreaDetectorTyphosTrigger
TuttiFrutti
: Change camera class toLasBasler
New Devices
BaslerBase
: Base class for inheriting some Basler-specific PVs.Basler
: Class for "typical" Basler deployed in a hutch.LasBasler
: Class for more laser-specific Basler cameras.MPODChannelHV
, andMPODChannelLV
for MPOD high voltage and
low voltage channels, respectively.- Added the
AcromagChannel
that supports the creation of an Acromag Channel signal - Added
mirror.XOffsetMirrorBend
class for offset mirrors with benders. - Added
mirror.XOffsetMirrorSwitch
.
This is nearly identical to mirror.XOffsetMirror but with no Bender and
vertical axes YLEFT/YRIGHT instead of YUP/YDWN. - Added
spectrometer.Mono
,
this includes all motion axes and Pytmc signals for SP1K1-MONO system
Bugfixes
lasers/elliptec.py
: Fix conflict with BlueSky interface and 'stop'
signal.- For event scheduling, ensure that we only try to put into the queue
if event_thread is not None. This resolves some of the startup terminal spam
in lucid. - PTMPLC ilk pv was incorrect, changed from ILK_STATUS_RBV to ILK_OK_RBV
- Create a default status info message for devices that have
errors in constructing their status.
Maintenance
- Added more documentation to methods and
LensStack
class. - Refactored be lens classes to use
pcdscalc.be_lens_calcs
- Add laser imports to :mod:
pcdsdevices.device_types
. Test fixtures now
verify imported laser devices' tab completion settings.
Contributors
- cristinasewell
- ghalym
- hhslepicka
- jsheppard95
- klauer
- sfsyunus
- tjohnson
- zllentz
v3.2.0 (2020-10-23)
Device Updates
- PCDSAreaDetectorTyphos: Added a camera viewer button to the class to open a
python camera viewer for the camera. Removed the old 'cam_image' viewer in
favor of this new viewer. - El3174AiCh: Added ESLO, EOFF fields, removed EGUH, EGUL
New Devices
- SmarActTipTilt: Class for bundling two SmarActOpenLoop axis classes together
into a single device for Typhos screen generation and interactive use. - Added VGC_2S, a new valve class that extends the VGC
with the addition of a second setpoint and hysteresis.
Contributors
- ghalym
- tjohnson
v3.1.0 (2020-10-21)
API Changes
- The
SxrGmD
device has been removed frombeam_stats
module. SXR has been
disassembled and the GMD was moved into the EBD. Its MJ PVs was not working
anymore.
Device Updates
- Added RTD PVs to KBOMirror class for bender actuators
- Added PTYPE PV to SmarAct class
- Added metadata to SmarAct jog pvs for better screens
- Added additional PVs to lasers/elliptec.py classes
- TuttiFruttiCls: Added an option to specify the controller channel for
Thorlabs Elliptec sliders. - Added the Thorlabs WFS class to the TuttiFrutti class.
New Devices
-
Add XYTargetGrid, an interactive utility class for managing a target grid
oriented normal to the beam, with regular X-Y spacing between targets. -
PCDSAreaDetectorTyphosBeamStats, a variant of PCSDAreaDetectorTyphos that
includes centroid information and the crosshair PVs. -
KBOMirror Class: Kirkpatrick-Baez Mirror class, X, Y, Pitch, Bender axes
-
FFMirror Class: Kirkpatrick-Baez Mirror without Bender axes. (Fixed focus)
-
LAMP motion Class for the LAMP endstation TMO. This includes the following motion axes:
- Gas Jet X/Y/Z Axes
- Gas Needle X/Y/Z Axes
- Sample Paddle X/Y/Z Axes
-
A new LCLS class has been added to the
beam_stats
module that contains PVs
related to the Lcls Linac Status, as well as a few functions to support with
checking the BYKIK status, turning it On and Off, and setting the period. -
SmarActOpenLoopPositioner: Class intended for performing Bluesky scans using
open-loop SmarAct motors.
Bugfixes
- Corrected X/Y error in KBOMirror and FFMirror classes
- Fix issues with L2SI Reflaser Picos being unable to successfully move.
This was because they were using the wrong motor class, which had extra
PVs that would never connect. - Fixed a bug preventing instantiation of the Elliptec sliders in the
TuttiFrutti device.
Maintenance
- Add prefix and lightpath tests for KBOMirror.
Contributors
- cristinasewell
- jsheppard95
- sfsyunus
- tjohnson
- zllentz
v3.0.0 (2020-10-07)
API Changes
- The calculations for
alio_to_theta
andtheta_to_alio
inccm.py
have been reverted to the old calculations. - User-facing move functions will not be able to catch the
:class:~ophyd.utils.LimitError
exception. These interactive methods are
not meant to be used in scans, as that is the role of bluesky.
Features
- :class:
pcdsdevices.attenuator.AT2L0
now has a textual representation of
filter status, and supports the move interface by way of transmission values. - :class:
~pcdsdevices.pseudopos.SyncAxes
has been adjusted to support
scalar-valued pseudopositioners, allowing for more complex devices to be kept
in lock-step motion. - :class:
~pcdsdevices.pseudopos.PseudoPositioner
position tuples, when of
length 1, now support casting to floating point, meaning they can be used
in many functions which only support floating point values. - Added signal annotations for auto-generated notepad IOC support.
Device Updates
- Add event/trigger information to PPM, XPIM.
- Reclassify twincat motor and states error resets as "normal" for
accessibility. - Add PMPS maintenance/config PVs class for TwinCAT states devices,
propagating this to all consumers.
New Devices
- Adds :class:
~pcdsdevices.lxe.LaserTimingCompensation
(lxt_ttc
) which
synchronously moves :class:LaserTiming
(lxt
) with
:class:~pcdsdevices.lxe.TimeToolDelay
(txt
) to compensate so that the
true laser x-ray delay by using thelxt
-value and the result of time tool
data analysis, avoiding double-counting. - Adds :class:
~pcdsdevices.lxe.TimeToolDelay
, an alias for
:class:~pcdsdevices.pseudopos.DelayNewport
with additional contextual
information and room for future development. - Add LaserInCoupling device for TMO.
- Add ArrivalTimeMonitor device for TMO.
- Add ReflaserL2SI device for TMO.
Bugfixes
- Fixed a typo in a
ValueError
exception in
:meth:pcdsdevices.state.StatePositioner.check_value
. - A read-only PV was erroneously marked as read-write in
:class:pcdsdevices.gauge.GaugeSerialGPI
, componentautozero
.
All other devices were audited, finding no other RBV-related read-only items. - The direction of :class:
LaserTiming
(lxt
) was inverted and is now
fixed. - Allow setting of :class:
~ophyd.EpicsMotor
limits when unset in the motor
record (i.e.,(0, 0)
) when using
:class:~pcdsdevices.epics_motor.EpicsMotorInterface
.
Maintenance
- Added a copy-pastable example to
:class:~pcdsdevices.component.UnrelatedComponent
to ease creation of new
devices. - Catch :class:
~ophyd.utils.LimitError
in all
:class:pcdsdevices.interface.MvInterface
moves, reporting a simple error by
way of the interface module-level logger.
Contributors
- cristinasewell
- klauer
- zlentz
v2.11.0 (2020-09-21)
API Changes
- BaseInterface
no longer inherits from
ophyd.OphydObject`. - The order of multiple inheritance for many devices using the LCLS-enhanced
BaseInterface
,MvInterface
, andFltMvInterface
has
been changed. - Added
pcdsdevices.interface.TabCompletionHelperClass
to help hold
tab completion information state and also allow for tab-completion
customization on a per-instance level. ~pcdsdevices.interface.Presets
add_hutch
(and all similar
add_*
) methods no longer require a position. When unspecified, the
current position is used.
Features
- For
pcdsdevices.pseudopos.DelayBase
, added
~pcdsdevices.pseudopos.DelayBase.set_current_position
and its related
componentuser_offset
, allowing for custom offsets. - Epics motors can now have local limits updated per-session, rather than
only having the option of the EPICS limits. Setting limits attributes will
update the python limits, putting to the limits PVs will update the limits
PVs. - Add PVPositionerDone, a setpoint-only PVPositioner class that is done moving
immediately. This is not much more useful than just using a PV, but it is
compatibile with pseudopositioners and has a built-in filter for ignoring
small moves. - Moves using mv and umv will log their moves at info level for interactive
use to keep track of the sessions. - Add
user_offset
to :class:~pcdsdevices.signal.UnitConversionDerivedSignal
,
allowing for an arbitrary user offset in user-facing units. - Add
user_offset
signal to the :class:pcdsdevices.lxe.LaserTiming
, by
way of~pcdsdevices.signal.UnitConversionDerivedSignal
, offset
support.
Device Updates
- CCM energy limited to the range of 4 to 25 keV
- CCM theta2fine done moving tolerance raised to 0.01
- Beam request default move start tolerance dropped to 5eV
New Devices
- Add WaveFrontSensorTarget for the wavefront sensor targets (PF1K0, PF1L0).
- Add TwinCATTempSensor for the updated twincat FB with corrected PV pragmas.
Bugfixes
- Adds hints to the :class:
pcdsdevices.lxe.LaserTiming
class for
LiveTable
support. - umv will now properly display position and completion status after a move.
- Tab completion for many devices has been fixed. Regression tests have been
added. - Fix bug in PulsePickerInOut where it would grab only the first section of
of the PV instead of the first two - Tweak will feel less "janky" now and give useful feedback.
- Tweak now accepts + and - as valid inputs for changing the step size.
- Tweak properly clears lines between prints.
- Fix issue where putting to the limits property would update live PVs,
contrary to the behavior of all other limits attributes in ophyd. - Fix issue where doing a getattr on the limits properties would fetch
live PVs, which can cause slowdowns and instabilities. - Preset methods are now visible when not in engineering mode. (#576)
- Rework BeamEnergyPositioner to be setpoint-only to work properly
with the behavior of the energy PVs. - FltMvPositioner.wm will now return numeric values if the position
value is a tuple. This value is the first element of the tuple, which
for pseudo positioners is a value that can be passed into move and have
it do the right thing. This resolves consistency issues and fixes bugs
where mvr and umvr would fail. - Fixed a race condition in the EventSequencer device's status objects. Waiting
on these statuses will now be more reliable. - Fix issue where converting units could incur time penalties of up to
7 seconds. This should take around 10ms now. - Fix bug on beam request where you could not override the tolerance
via init kwarg, despite docstring's indication.
Maintenance
- Establish DOC conventions for accumulating release notes from every
pull request. - Tweak refactored for maintainability.
- Use more of the built-in ophyd mechanisms for limits rather than
relying on local overrides.
Contributors
- klauer
- zllentz
- zrylettc
v2.10.0 (2020-08-21)
Features
- Add LookupTablePositioner PseudoPositioner base class for moves
based on a calibration table. - Add UnitConversionDerivedSignal as a Signal class for converting
EPICS units to more desirable units for the user. - Add units to the IPython prettyprint repr.
Device Updates
- Add Vernier integration into the CCM class using BeamEnergyRequest.
New Devices
- Add support for Thorlabs WFS40 USB Wavefront Sensor Camera.
- Add LaserEnergyPositioner PseudoPositioner (lxe) using
LookupTablePositioner. - Add LaserTiming PVPositioner (lxt) using UnitConversionDerivedSignal.
- Add BeamEnergyRequest PVPositioner for requesting beam energies in eV from
ACR.
v2.9.0 (2020-08-18)
Features
- Devices will now show detailed status information when returned
in the ipython terminal.
Device Updates
- Update docs on FSV fast shutter valve
- Update AT2L0 with state positioners and calculator
- Update Elliptec classes for cleaner implementation
- Add missing CCM motors and fix the energy motion (no vernier yet)
- Add HDF5 plugin to PCDSAreaDetectorEmbedded
New Devices
- Add support for SmarAct motors
- Add attenuator calculator device for Ken's new calculator
- Add support for TuttiFruitti diagnostic stack
Bugfixes
- Fix typo in PV name of BeckhoffJet slits
v2.8.0 (2020-07-24)
v2.8.0 (2020-07-24)
Features
- Expand variety schema support and add dotted dictionary access.
Device Updates
- Update various vacuum char waveforms with
string=True
for proper
handling intyphos
. - Add various missing vacuum PVs to various vacuum devices.
- Switch twincat state device error reset to
kind=config
so it shows up
by default intyphos
. - Update LCLS-II imagers to use the new
AreaDetectorTyphos
. - The following devices now have
lightpath
support:FeeAtt
FEESolidAttenuator
XOffsetMirror
PPM
XPIM
PowerSlits
Kmono
VRC
and all subclasses, such asVGC
VFS
- Update
XOffsetMirror
y_up
,x_up
, andpitch
to
kind=hinted
(previouslynormal
). These axes are usually the
most important. - Rename
PPM.y_states
andXPIM.y_states
totarget
for reduced
redundancy in screens. The only name is aliased via a property. PowerSlits
now have a feature set on par with the old slits.- Update
VFS
valve_position
andvfs_state
tokind=hinted
(previouslynormal
) for more focused statuses.
New Devices
- Add support for Qmini Spectrometer.
- Add
AreaDetectorTyphos
class for optimized screen view of most used
area detector signals. - Add
RTDSL0
andRTDSK0
to support the rapid turnaround diagnostic
station configurations.
Bugfixes
- Fix issue with failing callback in
IMS
from upstreamophyd
change.
Maintenance
- Switch from using
cf-units
topint
for portability. - Add the following helpers:
interface.LightpathMixin
to help establishlightpath
support.signal.NotImplementedSignal
to help devices that will expand later.signal.InternalSignal
to help implement read-only signals that can
be updated by the parent class.utils.schedule_task
to help interface with theophyd
callback
queues.
- The
slits
module has been refactored to accomodate both old and new
slits.
v2.7.0
v2.7.0 (2020-07-01)
Features
- Add component variety metadata and schema validation.
Device Updates
- Add many components to
PIPPLC
class, adjust component
kinds
to be more appropriate, and fix errant PV names. - Update component names on
VVC
for clarity, and pvnames for accuracy. - Update
XPIM
class to reflect additional IOC features. - Update docs and metadata on all LCLS 2 imager classes.
- Update spammy TwinCAT state config parameters to omitted.
- Add interlock device information to
VGC
. - Add
SPMG
field toBeckhoffAxis
.
New Devices
- Add
SxrTestAbsorber
class. - Add
ZoomTelescope
to support MODS zoom telescope. - Add
El3174AiCh
to support EK9000 module. - Add
EnvironmentalMonitor
to support MODS environmental monitors. - Add support for ThorLabs Elliptec motors for MODS.
- Add
Ebara_EV_A03_1
class for specific roughing pump support. - Migrate SDS jet tracking classes into this repo.
- Add
VFS
class to support fast shutters.
Maintenance
- Remove monkeypatch of
EventSequence
in tests, as it was no longer needed. - Update dependency from
cf_units
to its renamedcf-units
. - xfail test that fails with
bluesky=1.6.2
v2.6.0
Features
happi
entry points have been moved to this library for proper
modularization.- Area detectors embedded inside of larger devices have been made
considerably smaller to improve performance in other applications,
for example intyphos
.
Bugfixes
- Provide
FakePytmcSignal
for testing in external libraries. This
fixes issues with fake devices not working if they containPytmcSignal
instances outside of thepcdsdevices
testing suite. - Fix various issues related to moving to
ophyd
v1.5.0
. - This library is now importable on win32.
Docs
- Docstrings now conform to the new pcds standards.