pcdsdevices.signal.UnitConversionDerivedSignal

class pcdsdevices.signal.UnitConversionDerivedSignal(derived_from, *, derived_units: str, original_units: str | None = None, user_offset: Real | None = 0, limits: tuple[Real, Real] | None = None, **kwargs)

A DerivedSignal which performs unit conversion.

Custom units may be specified for the original signal, or if specified, the original signal’s units may be retrieved upon first connection.

Parameters:
  • derived_from (Signal or str) – The signal from which this one is derived. This may be a string attribute name that indicates a sibling to use. When used in a Device, this is then simply the attribute name of another Component.

  • derived_units (str) – The desired units to use for this signal. These can also be referred to as the “user-facing” units.

  • original_units (str, optional) – The units from the original signal. If not specified, control system information regarding units will be retrieved upon first connection.

  • user_offset (any, optional) –

    An optional user offset that will be subtracted when updating the original signal, and added when calculating the derived value. This offset should be supplied in derived_units and not original_units.

    For example, if the original signal updates to a converted value of 500 derived_units and the user_offset is set to 100, this DerivedSignal will show a value of 600. When providing a new setpoint, the user_offset will be subtracted.

  • write_access (bool, optional) – Write access may be disabled by setting this to False, regardless of the write access of the underlying signal.

  • name (str, optional) – The signal name.

  • parent (Device, optional) – The parent device. Required if derived_from is an attribute name.

  • limits (2-tuple, optional) – Ophyd signal-level limits in derived units. DerivedSignal defaults to converting the original signal’s limits, but these may be overridden here without modifying the original signal.

  • **kwargs – Keyword arguments are passed to the superclass.

Methods

describe()

Description based on the original signal description

forward(value)

Compute derived signal value -> original signal value

get(**kwargs)

Get the value from the original signal, with inverse applied to it

inverse(value)

Compute original signal value -> derived signal value

read()

Put the status of the signal into a simple dictionary format for data acquisition

Returns:

dict

read_configuration()

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

set(value, *, timeout=None, settle_time=None, **kwargs)

Set the value of the Signal and return a Status object.

Returns:

st (Status) – This status object will be finished upon return in the case of basic soft Signals

trigger()

Call that is used by bluesky prior to read()

Attributes

SUB_META = 'meta'
connected

Mirrors the connection state of the original signal

derived_from

Signal that this one is derived from

high_limit

The high, inclusive control limit for the Signal

hints

Field hints for plotting

kind
limits

Defaults to limits from the original signal (low, high).

Limit values may be reversed such that low <= value <= high after performing the calculation.

Limits may also be overridden here without affecting the original signal.

low_limit

The low, inclusive control limit for the Signal

metadata

A copy of the metadata dictionary associated with the signal

metadata_keys

Metadata keys that will be passed along on value subscriptions

read_access

Can the signal be read?

subscriptions: ClassVar[FrozenSet[str]] = frozenset({'meta', 'value'})
timestamp

Timestamp of the readback value

tolerance

The absolute tolerance associated with the value.

user_offset

A user-specified offset in derived, user-facing units.

value

The signal’s value

write_access

Can the signal be written to?

derived_units: str
original_units: str