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 - camonitor()
- Shows a live-updating motor position in the terminal. - This will be the value that is returned by the - positionattribute.- This method ends cleanly at a ctrl+c or after a call to - end_monitor_thread(), which may be useful when this is called in a background thread.
 - 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 - OrderedDictthis method returns must match the keys in the- OrderedDictreturn 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_keyschema.
 
 - 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. 
 - end_monitor_thread()
- Stop a - camonitor()or- wm_update()that is running in another thread.
 - 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 
 - mv(position, timeout=None, wait=False, log=True)
- Absolute move to a position. - Parameters:
- position – Desired end position. 
- timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use. 
- wait (bool, optional) – If - True, wait for motion completion before returning. Defaults to- False.
- log (bool, optional) – If - True, logs the move at INFO level.
 
 
 - mv_ginput(timeout=None)
- Moves to a location the user clicks on. - If there are existing plots, this will be the position on the most recently active plot. If there are no existing plots, an empty plot will be created with the motor’s limits as the range. 
 - mvr(delta, timeout=None, wait=False, log=True)
- Relative move from this position. - Parameters:
- delta (float) – Desired change in position. 
- timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use. 
- wait (bool, optional) – If - True, wait for motion completion before returning. Defaults to- False.
- log (bool, optional) – If - True, logs the move at INFO level.
 
 
 - post_elog_status()
- Post device status to the primary elog, if possible. 
 - 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 - OrderedDictreturned by this method must have identical keys (in the same order) as the- OrderedDictreturned 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_attrslist.
 - screen()
- Open a screen for controlling the device. - Default behavior is the typhos screen, but this method can be overridden for more specialized screens. 
 - set(new_position: Any, *, timeout: float = None, moved_cb: Callable = 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 - movemethod with the provided parameters, while keeping- wait=Falseand- sync_enable=Falseto allow multi-axis scans without one axis blocking other axes.
 - classmethod set_defaults(*, connection_timeout=10.0)
- Set class-wide defaults for device communications - This may be called only before any instances of Device are made. - This setting applies to the class it is called on and all its subclasses. For example, - >>> Device.set_defaults(...) - will apply to any Device subclass. - Parameters:
- connection_timeout (float, optional) – Time (seconds) allocated for establishing a connection with the IOC. 
- Raises:
- RuntimeError – If called after - EpicsSignalBasehas been instantiated for the first time.
 
 - set_position(position)
- Alias for set_current_position. - Will fail if the motor does not have set_current_position. 
 - 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- StatusBaseobject 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 - StatusBaseobject which is already completed.- Returns:
- status (StatusBase) – - StatusBaseobject which will be marked as complete when the device is ready to be read.
 
 - tweak(scale=0.1)
- Control this motor using the arrow keys. - Use left arrow to step negative and right arrow to step positive. Use up arrow to increase step size and down arrow to decrease step size. Press q or ctrl+c to quit. - Parameters:
- scale (float) – starting step size, default = 0.1 
 
 - umv(position, timeout=None, log=True, newline=True)
- Move to a position, wait, and update with a progress bar. - Parameters:
- position (float) – Desired end position. 
- timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use. 
- log (bool, optional) – If True, logs the move at INFO level. 
- newline (bool, optional) – If True, inserts a newline after the updates. 
 
 
 - umvr(delta, timeout=None, log=True, newline=True)
- Relative move from this position, wait, and update with a progress bar. - Parameters:
- delta (float) – Desired change in position. 
- timeout (float, optional) – If provided, the mover will throw an error if motion takes longer than timeout to complete. If omitted, the mover’s default timeout will be use. 
- log (bool, optional) – If True, logs the move at INFO level. 
- newline (bool, optional) – If True, inserts a newline after the updates. 
 
 
 - wait(timeout=None)
 - wm()
- Get the mover’s current positon (where motor). 
 - wm_update()
- Shows a live-updating motor position in the terminal. - This will be the value that is returned by the - positionattribute.- This method ends cleanly at a ctrl+c or after a call to - end_monitor_thread(), which may be useful when this is called in a background thread.
 - Attributes - actuate_value = 1
 - configuration_attrs
 - connected
 - connection_timeout
 - 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 - donePV 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
 - 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