Skip to content

Releases: pcdshub/pcdsdevices

v3.3.0 (2020-11-17)

18 Nov 01:30
19ab812
Compare
Choose a tag to compare

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.
  • 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 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 to LasBasler

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, and MPODChannelLV 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)

24 Oct 00:23
55a6143
Compare
Choose a tag to compare

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)

21 Oct 20:34
ab181c5
Compare
Choose a tag to compare

API Changes

  • The SxrGmD device has been removed from beam_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)

08 Oct 01:32
8053155
Compare
Choose a tag to compare

API Changes

  • The calculations for alio_to_theta and theta_to_alio in ccm.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 the lxt-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, component autozero.
    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)

21 Sep 20:19
c6b353f
Compare
Choose a tag to compare

API Changes

  • BaseInterfaceno longer inherits from ophyd.OphydObject`.
  • The order of multiple inheritance for many devices using the LCLS-enhanced
    BaseInterface, MvInterface, and FltMvInterface 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
    component user_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)

21 Aug 16:16
c209b8c
Compare
Choose a tag to compare

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)

18 Aug 22:52
b480a0a
Compare
Choose a tag to compare

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)

24 Jul 20:09
7d79821
Compare
Choose a tag to compare

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 in typhos.
  • Add various missing vacuum PVs to various vacuum devices.
  • Switch twincat state device error reset to kind=config so it shows up
    by default in typhos.
  • 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 as VGC
    • VFS
  • Update XOffsetMirror y_up, x_up, and pitch to
    kind=hinted (previously normal). These axes are usually the
    most important.
  • Rename PPM.y_states and XPIM.y_states to target 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 and vfs_state to kind=hinted
    (previously normal) 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 and RTDSK0 to support the rapid turnaround diagnostic
    station configurations.

Bugfixes

  • Fix issue with failing callback in IMS from upstream ophyd change.

Maintenance

  • Switch from using cf-units to pint for portability.
  • Add the following helpers:
    • interface.LightpathMixin to help establish lightpath 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 the ophyd callback
      queues.
  • The slits module has been refactored to accomodate both old and new
    slits.

v2.7.0

01 Jul 22:44
55ec5d2
Compare
Choose a tag to compare

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 to BeckhoffAxis.

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 renamed cf-units.
  • xfail test that fails with bluesky=1.6.2

v2.6.0

21 May 19:39
eb33e8f
Compare
Choose a tag to compare

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 in typhos.

Bugfixes

  • Provide FakePytmcSignal for testing in external libraries. This
    fixes issues with fake devices not working if they contain PytmcSignal
    instances outside of the pcdsdevices 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.