csaxs_bec.devices.epics.specMotors.PmMonoBender#
- class PmMonoBender(prefix='', *, concurrent=True, read_attrs=None, configuration_attrs=None, name, egu='', auto_target=True, **kwargs)[source]#
Bases:
PseudoPositionerMonochromator bender
Small wrapper to combine the four monochromator bender motors.
Methods
Register a callback which will receive each OphydObject instance.
Check if a new position for a single pseudo positioner is valid
Check if a new position for all pseudo positioners is valid
Remove a subscription, given the original callback function
Configure the device for something during a run
Provide schema and meta-data for
read().Provide schema & meta-data for
read_configuration()Disconnect and destroy all signals on the Device
Calculate a RealPosition from a given PseudoPosition
Get the value of all components in the device
The device tuple type associated with an Device class
Yields all of the instantiated signals in a device hierarchy
Calculate a PseudoPosition from a given RealPosition
Move to a specified position, optionally waiting for motion to complete.
Move one PseudoSingle axis to a position
Attempt to 'pause' the device.
Put a value to all components of the device
Read data from the device.
Dictionary mapping names to value dicts with keys: value, timestamp
Resume a device from a 'paused' state.
Move to a new position asynchronously
Set class-wide defaults for device communications
Stage the device for data collection.
Stop the Device and all (instantiated) subdevices
Subscribe to events this event_type generates.
summaryConvert arguments to a PseudoPosition namedtuple and kwargs
Convert arguments to a RealPosition namedtuple and kwargs
Trigger the device and return status object.
Unstage the device.
Remove a subscription
unsubscribe_allWait for signals to connect
Walk all components in the Device hierarchy
Walk all signals in the Device hierarchy
Walk all sub-Devices classes in the Device hierarchy
Walk all sub-Devices in the hierarchy
Attributes
SUB_ACQ_DONESUB_DONESUB_READBACKSUB_STARTaiA descriptor representing a device component (or signal)
attr_namebendA descriptor representing a device component (or signal)
boA descriptor representing a device component (or signal)
coA descriptor representing a device component (or signal)
component_namesThe composite engineering units (EGU) from all PseudoSingles
If concurrent is set, motors will move concurrently (in parallel)
configuration_attrsIf the device is connected.
connection_timeoutdiA descriptor representing a device component (or signal)
Return the dotted name
The engineering units (EGU) for positions
Events that can be subscribed to via
obj.subscribeAll PseudoSingle high limits as a namedtuple
hintskindlazy_wait_for_connectionAll PseudoSingle limits as a namedtuple
All PseudoSingle low limits as a namedtuple
Whether or not the motor is moving
name of the device
The parent of the ophyd object.
Pseudo motor position namedtuple
Pseudo positioners instances in a namedtuple
read_attrsReal motor position namedtuple
Real positioners instances in a namedtuple
A report on the object.
Walk parents to find ultimate ancestor (parent's parent...).
If sequential is set, motors will move in the sequence they were defined in (i.e., in series)
Amount of time to wait after moves to report status completion
signal_namessubscriptionsLast commanded target positions
Amount of time to wait before to considering a motion as failed
trigger_signals- class OphydAttrList(device, kind, remove_kind, recurse_key)#
Bases:
MutableSequencelist proxy to migrate away from Device.read_attrs and Device.config_attrs
- append(value)#
S.append(value) – append value to the end of the sequence
- clear() None -- remove all items from S#
- count(value) integer -- return number of occurrences of value#
- extend(values)#
S.extend(iterable) – extend sequence by appending elements from the iterable
- index(value[, start[, stop]]) integer -- return first index of value.#
Raises ValueError if the value is not present.
Supporting start and stop arguments is optional, but recommended.
- insert(index, object)#
S.insert(index, value) – insert value before index
- pop([index]) item -- remove and return item at index (default last).#
Raise IndexError if list is empty or index is out of range.
- remove(value)#
S.remove(value) – remove first occurrence of value. Raise ValueError if the value is not present.
- reverse()#
S.reverse() – reverse IN PLACE
- classmethod add_instantiation_callback(callback, fail_if_late=False)#
Register a callback which will receive each OphydObject instance.
- Parameters:
callback (callable) – Expected signature:
f(ophydobj_instance)fail_if_late (boolean) – If True, verify that OphydObj has not yet been instantiated and raise
RuntimeErrorif it has, as a way of verify that no instances will be “missed” by this registry. False by default.
- check_single(pseudo_single, single_pos)#
Check if a new position for a single pseudo positioner is valid
- check_value(pseudo_pos)#
Check if a new position for all pseudo positioners is valid
First checks limits against those set for individual pseudo axes. Second, calculates forward(pseudo_pos) => real_pos and checks it against the real positioners.
NOTE: If you have limits that are coupled together or are somehow more complicated than the above procedure, you should redefine this method in your subclass.
- clear_sub(cb, event_type=None)#
Remove a subscription, given the original callback function
See also
subscribe(),unsubscribe()- Parameters:
cb (callable) – The callback
event_type (str, optional) – The event to unsubscribe from (if None, removes it from all event types)
- property composite_egu#
The composite engineering units (EGU) from all PseudoSingles
- property concurrent#
If concurrent is set, motors will move concurrently (in parallel)
- 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.
- property connected#
If the device is connected.
Subclasses should override this
- 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 – The keys must be strings and the values must be dict-like with the
event_model.event_descriptor.data_keyschema.- Return type:
OrderedDict
- describe_configuration() OrderedDictType[str, Dict[str, Any]]#
Provide schema & meta-data for
read_configuration()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 – The keys must be strings and the values must be dict-like with the
event_model.event_descriptor.data_keyschema.- Return type:
OrderedDict
- destroy()#
Disconnect and destroy all signals on the Device
- property dotted_name: str#
Return the dotted name
- property egu#
The engineering units (EGU) for positions
- property event_types#
Events that can be subscribed to via
obj.subscribe
- forward(pseudo_pos)[source]#
Calculate a RealPosition from a given PseudoPosition
Must be defined on the subclass.
- Parameters:
pseudo_pos (PseudoPosition) – The pseudo position input
- Returns:
real_position – The real position output
- Return type:
RealPosition
- 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.
- classmethod get_device_tuple()#
The device tuple type associated with an Device class
This is a tuple representing the full state of all components and dynamic device sub-components.
- get_instantiated_signals(*, attr_prefix=None)#
Yields all of the instantiated signals in a device hierarchy
- Parameters:
attr_prefix (string, optional) – The attribute prefix. If None, defaults to self.name
- Yields:
(fully_qualified_attribute_name, signal_instance)
- property high_limit#
All PseudoSingle high limits as a namedtuple
- inverse(real_pos)[source]#
Calculate a PseudoPosition from a given RealPosition
Must be defined on the subclass.
- Parameters:
real_position (RealPosition) – The real position input
- Returns:
pseudo_pos – The pseudo position output
- Return type:
PseudoPosition
- property limits#
All PseudoSingle limits as a namedtuple
- property low_limit#
All PseudoSingle low limits as a namedtuple
- move(position, wait=True, timeout=None, moved_cb=None)#
Move to a specified position, optionally waiting for motion to complete.
- Parameters:
position – Position to move to
moved_cb (callable) – Call this callback when movement has finished. This callback must accept one keyword argument: ‘obj’ which will be set to this positioner instance.
wait (bool, optional) – Wait until motion has completed
timeout (float, optional) – Maximum time to wait for a motion
- Returns:
status
- Return type:
MoveStatus
- Raises:
TimeoutError – When motion takes longer than timeout
ValueError – On invalid positions
RuntimeError – If motion fails other than timing out
- move_single(pseudo, position, **kwargs)#
Move one PseudoSingle axis to a position
All other positioners will use their current setpoint/target value, if available. Failing that, their current readback value will be used (see
PseudoSingle.syncandPseudoSingle.target).- Parameters:
pseudo (PseudoSingle) – PseudoSingle positioner to move
position (float) – Position only for the PseudoSingle
kwargs (dict) – Passed onto move
- property moving#
Whether or not the motor is moving
- Returns:
moving
- Return type:
bool
- property name#
name of the device
- property parent#
The parent of the ophyd object.
If at the top of its hierarchy, parent will be None
- pause() None#
Attempt to ‘pause’ the device.
This is called when ever the
RunEngineis interrupted.A device may have internal state that means plans can not safely be re-wound. This method may: put the device in a ‘paused’ state and/or raise
NoReplayAllowedto indicate that the plan can not be rewound.- Raises:
bluesky.run_engine.NoReplayAllowed –
- property position#
Pseudo motor position namedtuple
- property pseudo_positioners#
Pseudo positioners instances in a namedtuple
- Returns:
positioner_instances
- Return type:
PseudoPosition
- put(dev_t, **kwargs)#
Put a value to all components of the device
Keyword arguments are passed onto each signal.put()
- Parameters:
dev_t (DeviceTuple or tuple) – The device tuple with the value(s) to put (see get_device_tuple)
- 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 – The keys must be strings and the values must be dict-like with the keys
{'value', 'timestamp'}- Return type:
OrderedDict
- 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.
- property real_position#
Real motor position namedtuple
- property real_positioners#
Real positioners instances in a namedtuple
- Returns:
positioner_instances
- Return type:
RealPosition
- property report#
A report on the object.
- resume() None#
Resume a device from a ‘paused’ state.
This is called by the
bluesky.run_engine.RunEnginewhen it resumes from an interruption and is responsible for ensuring that the device is ready to take data again.
- property root#
Walk parents to find ultimate ancestor (parent’s parent…).
- property sequential#
If sequential is set, motors will move in the sequence they were defined in (i.e., in series)
- set(position, **kwargs)#
Move to a new position asynchronously
- Parameters:
position (PseudoPosition) – Position for the all of the pseudo axes
- Returns:
status
- Return type:
MoveStatus
- 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.
- property settle_time#
Amount of time to wait after moves to report status completion
- stage() List[object]#
Stage the device for data collection.
This method is expected to put the device into a state where repeated calls to
trigger()andread()will ‘do the right thing’.Staging not idempotent and should raise
RedundantStagingif staged twice without an intermediateunstage().This method should be as fast as is feasible as it does not return a status object.
The return value of this is a list of all of the (sub) devices stage, including it’s self. This is used to ensure devices are not staged twice by the
RunEngine.This is an optional method, if the device does not need staging behavior it should not implement stage (or unstage).
- Returns:
devices – list including self and all child devices staged
- Return type:
list
- stop(success=False)#
Stop the Device and all (instantiated) subdevices
- subscribe(callback, event_type=None, run=True)#
Subscribe to events this event_type generates.
The callback will be called as
cb(*args, **kwargs)with the values passed to _run_subs with the following additional keys:sub_type : the string value of the event_type obj : the host object, added if ‘obj’ not already in kwargs
if the key ‘timestamp’ is in kwargs _and_ is None, then it will be replaced with the current time before running the callback.
The
*args,**kwargspassed to _run_subs will be cached as shallow copies, be aware of passing in mutable data.Warning
If the callback raises any exceptions when run they will be silently ignored.
- Parameters:
callback (callable) –
A callable function (that takes kwargs) to be run when the event is generated. The expected signature is
def cb(*args, obj: OphydObject, sub_type: str, **kwargs) -> None:
The exact args/kwargs passed are whatever are passed to
_run_subsevent_type (str, optional) –
The name of the event to subscribe to (if None, defaults to the default sub for the instance - obj._default_sub)
This maps to the
sub_typekwargs in _run_subsrun (bool, optional) – Run the callback now
See also
clear_sub,_run_subs- Returns:
cid – id of callback, can be passed to unsubscribe to remove the callback
- Return type:
int
- property target#
Last commanded target positions
- property timeout#
Amount of time to wait before to considering a motion as failed
- to_pseudo_tuple(*args, **kwargs)#
Convert arguments to a PseudoPosition namedtuple and kwargs
- to_real_tuple(*args, **kwargs)#
Convert arguments to a RealPosition namedtuple and kwargs
- 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 theStatusBaseobject 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 –
StatusBaseobject which will be marked as complete when the device is ready to be read.- Return type:
StatusBase
- unstage() List[object]#
Unstage the device.
This method returns the device to the state it was prior to the last stage call.
This method should be as fast as feasible as it does not return a status object.
This method must be idempotent, multiple calls (without a new call to ‘stage’) have no effect.
- Returns:
devices – list including self and all child devices unstaged
- Return type:
list
- unsubscribe(cid)#
Remove a subscription
See also
subscribe(),clear_sub()- Parameters:
cid (int) – token return by
subscribe()
- wait_for_connection(all_signals=False, timeout=<object object>)#
Wait for signals to connect
- Parameters:
all_signals (bool, optional) – Wait for all signals to connect (including lazy ones)
timeout (float or None) – Overall timeout
- classmethod walk_components()#
Walk all components in the Device hierarchy
- Yields:
ComponentWalk – Where ancestors is all ancestors of the signal, including the top-level device walk_components was called on.
- walk_signals(*, include_lazy=False)#
Walk all signals in the Device hierarchy
EXPERIMENTAL: This method is experimental, and there are tentative plans to change its API in a way that may not be backward-compatible.
- Parameters:
include_lazy (bool, optional) – Include not-yet-instantiated lazy signals
- Yields:
ComponentWalk – Where ancestors is all ancestors of the signal, including the top-level device walk_signals was called on.
- classmethod walk_subdevice_classes()#
Walk all sub-Devices classes in the Device hierarchy
- Yields:
(dotted_name, subdevice_class)
- walk_subdevices(*, include_lazy=False)#
Walk all sub-Devices in the hierarchy
EXPERIMENTAL: This method is experimental, and there are tentative plans to change its API in a way that may not be backward-compatible.
- Yields:
(dotted_name, subdevice_instance)