pcdsdevices.sqr1.SQR1Axis

class pcdsdevices.sqr1.SQR1Axis(prefix: str, axis: Axis, sync_setpoints: Callable | None = None, **kwargs)

Single axis of the square-one tri-sphere motion system.

A PVPositionerIsClose subclass that includes attributes for setting the setpoint, reading back the current position, actuating the motion, and stopping the motion.

Parameters:
  • prefix (str) – The EPICS PV prefix for this axis.

  • axis (str) – The axis identifier (‘X’, ‘Y’, ‘Z’, ‘rX’, ‘rY’, ‘rZ’).

  • sync_setpoints (callable or None, optional) – A callback function to synchronize setpoints before moving the axis.

  • **kwargs (dict) – Additional keyword arguments to pass to the base class constructor

setpoint

An EPICS signal for setting the desired position of the axis.

Type:

ophyd.signal.EpicsSignal

readback

An EPICS signal for reading back the current position of the axis.

Type:

ophyd.signal.EpicsSignal

actuate

An EPICS signal for initiating the motion of the axis.

Type:

ophyd.signal.EpicsSignal

actuate_value

The value to be set on the ‘actuate’ signal to initiate motion.

Type:

any, optional

stop_signal

An EPICS signal for stopping the motion of the axis.

Type:

ophyd.signal.EpicsSignal

stop_value

The value to be set on the ‘stop_signal’ to stop motion.

Type:

any, optional

Example
>>> axis_x = SQR1Axis(prefix="SQR1:AXIS_X", axis="X")
>>> axis_x.move(5.0)  # Move the X-axis to position 5.0
Ophyd Device Components

Attribute

Class

Suffix

Docs

Kind

Notes

done

InternalSignal

normal

Inherited from PVPositionerIsClose

setpoint (FCpt)

EpicsSignal

{prefix}:TARGET:{_axis}

normal

readback (FCpt)

EpicsSignal

{prefix}:TARGET:{_axis}:RBV

hinted

actuate

EpicsSignal

:MOV

normal

stop_signal

EpicsSignal

:KILL

normal

Methods

configure(d: Dict[str, Any]) Tuple[Dict[str, Any], Dict[str, Any]]

Configure the device for something during a run

This default implementation allows the user to change any of the configuration_attrs. Subclasses might override this to perform additional input validation, cleanup, etc.

Parameters:

d (dict) – The configuration dictionary. To specify the order that the changes should be made, use an OrderedDict.

Returns:

  • (old, new) tuple of dictionaries

  • Where old and new are pre- and post-configure configuration states.

describe() OrderedDictType[str, Dict[str, Any]]

Provide schema and meta-data for read().

This keys in the OrderedDict this method returns must match the keys in the OrderedDict return by read().

This provides schema related information, (ex shape, dtype), the source (ex PV name), and if available, units, limits, precision etc.

Returns:

data_keys (OrderedDict) – The keys must be strings and the values must be dict-like with the event_model.event_descriptor.data_key schema.

done_comparator(readback: float, setpoint: float) bool

Check if the readback is close to the setpoint value.

Uses numpy.isclose to make the comparison. Tolerance values atol and rtol for numpy.isclose are taken from the attributes self.atol and self.rtol, which can be defined as class attributes or passed in as init parameters.

If atol or rtol are omitted, the default values from numpy are used instead.

get(**kwargs)

Get the value of all components in the device

Keyword arguments are passed onto each signal.get(). Components beginning with an underscore will not be included.

move(position: float, wait: bool = True, timeout: float = None, moved_cb: Callable | None = None, sync_enable: bool = True)

Move the axis to the specified position.

Parameters:
  • position (float) – The desired position to move the axis to.

  • wait (bool, optional) – If True (default), wait for motion to complete before returning. If False, return immediately after initiating the motion.

  • timeout (float, optional) – The maximum time (in seconds) to wait for the motion to complete.

  • moved_cb (callable or None, optional) – A callback function to execute when the motion has completed.

  • sync_enable (bool, optional) – If True (default) synchronize setpoints before moving the axis.

Returns:

MoveStatus – Track the state of a movement from some initial to final position.

Example

>>> axis_x = SQR1Axis(prefix="SQR1:AXIS_X", axis="X")
>>> axis_x.move(5.0)  # Move the X-axis to position 5.0
read() OrderedDictType[str, Dict[str, Any]]

Read data from the device.

This method is expected to be as instantaneous as possible, with any substantial acquisition time taken care of in trigger().

The OrderedDict returned by this method must have identical keys (in the same order) as the OrderedDict returned by describe().

By convention, the first key in the return is the ‘primary’ key and maybe used by heuristics in bluesky.

The values in the ordered dictionary must be dict (-likes) with the keys {'value', 'timestamp'}. The 'value' may have any type, the timestamp must be a float UNIX epoch timestamp in UTC.

Returns:

data (OrderedDict) – The keys must be strings and the values must be dict-like with the keys {'value', 'timestamp'}

read_configuration() OrderedDictType[str, Dict[str, Any]]

Dictionary mapping names to value dicts with keys: value, timestamp

To control which fields are included, change the Component kinds on the device, or modify the configuration_attrs list.

set(new_position: Any, *, timeout: float | None = None, moved_cb: Callable | None = None, wait: bool = False) MoveStatus

Set SQR1 single axis new position.

Parameters:
  • new_position (Any) – The target position to move to.

  • timeout (float, optional) – The maximum time to wait for the move to complete.If None, no timeout is applied.

  • moved_cb (Callable, optional) – A callback function that is called when the move is complete.

  • wait (bool, optional) – always will be false. kept for consistent method signature across future implementations.

Returns:

StatusBase – Status object to indicate when the motion is done.

Notes

This method calls the move method with the provided parameters, while keeping wait=False and sync_enable=False to allow multi-axis scans without one axis blocking other axes.

stop(*, success=False)

Stop the Device and all (instantiated) subdevices

summary()
trigger() StatusBase

Trigger the device and return status object.

This method is responsible for implementing ‘trigger’ or ‘acquire’ functionality of this device.

If there is an appreciable time between triggering the device and it being able to be read (via the read() method) then this method is also responsible for arranging that the StatusBase object returned by this method is notified when the device is ready to be read.

If there is no delay between triggering and being readable, then this method must return a StatusBase object which is already completed.

Returns:

status (StatusBase) – StatusBase object which will be marked as complete when the device is ready to be read.

Attributes

actuate_value = 1
atol: float | None = None
configuration_attrs
connected
done_value = 1
egu

The engineering units (EGU) for a position

high_limit
hints
kind
limits
low_limit
moving

Whether or not the motor is moving

If a done PV is specified, it will be read directly to get the motion status. If not, it determined from the internal state of PVPositioner.

Returns:

bool

position

The current position of the motor in its engineering units

Returns:

position (any)

put_complete
rtol: float | None = None
settle_time

Amount of time to wait after moves to report status completion

stop_value = 1
subscriptions: ClassVar[FrozenSet[str]] = frozenset({'_req_done', 'acq_done', 'done_moving', 'readback', 'start_moving'})
timeout

Amount of time to wait before to considering a motion as failed