csaxs_bec.devices.epics.falcon_csaxs.FalconcSAXS#

class FalconcSAXS(*, name: str, prefix: str = '', scan_info: ScanInfo | None = None, device_manager: DeviceManagerBase | None = None, **kwargs)[source]#

Bases: PSIDeviceBase, FalconControl

Falcon Sitoro detector for CSAXS

class attributes:

dxp (EpicsDXPFalcon) : DXP parameters for Falcon detector mca (EpicsMCARecord) : MCA parameters for Falcon detector hdf5 (FalconHDF5Plugins) : HDF5 parameters for Falcon detector MIN_READOUT (float) : Minimum readout time for the detector

Initialize the PSI Device Base class.

Parameters:
  • name (str) – Name of the device

  • scan_info (ScanInfo) – The scan info to use.

Methods

add_instantiation_callback

Register a callback which will receive each OphydObject instance.

cancel_on_stop

Register a status object to be cancelled when the device is stopped.

check_value

Check if the value is valid for this object

clear_sub

Remove a subscription, given the original callback function

complete

Complete the device.

configure

Configure the device for something during a run

describe

Provide schema and meta-data for read().

describe_configuration

Provide schema & meta-data for read_configuration()

destroy

Destroy the device.

find_signal

Search through the signal docs on this detector for the string text

get

Get the value of all components in the device

get_asyn_digraph

Get the directed graph of the ASYN ports

get_asyn_port_dictionary

Return port name : component map

get_device_tuple

The device tuple type associated with an Device class

get_instantiated_signals

Yields all of the instantiated signals in a device hierarchy

get_plugin_by_asyn_port

Get the plugin which has the given asyn port name

kickoff

Kickoff the device.

missing_plugins

Find missing ports

on_complete

Complete detector and backend

on_connected

Setup Falcon Sitoro detector default parameters once signals are connected

on_destroy

Called when the device is destroyed.

on_init

Initialize Falcon Sitoro detector

on_kickoff

Called to kickoff a device for a fly scan.

on_pre_scan

Method for actions just before the scan starts.

on_stage

This method is called when the detector is staged for acquisition.

on_stop

Stop detector and backend

on_trigger

Called when the device is triggered.

on_unstage

Called while unstaging the device.

pause

Attempt to 'pause' the device.

pre_scan

Pre-scan function.

put

Put a value to all components of the device

read

Read data from the device.

read_configuration

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

resume

Resume a device from a 'paused' state.

set_defaults

Set class-wide defaults for device communications

set_trigger

Set triggering mode for detector

stage

Stage the device.

stop

Stop the device.

subscribe

Subscribe to events this event_type generates.

summary

trigger

Trigger the device.

unstage

Unstage the device.

unsubscribe

Remove a subscription

unsubscribe_all

validate_asyn_ports

Validate that all components of pipeline are known

visualize_asyn_digraph

This generates a figure showing the current asyn port layout.

wait_for_condition

Utility method to easily wait for signals or methods to reach an expected state.

wait_for_connection

Wait for signals to connect

walk_components

Walk all components in the Device hierarchy

walk_signals

Walk all signals in the Device hierarchy

walk_subdevice_classes

Walk all sub-Devices classes in the Device hierarchy

walk_subdevices

Walk all sub-Devices in the hierarchy

Attributes

MIN_READOUT

SUB_ACQ_DONE

SUB_DEVICE_MONITOR_1D

SUB_DEVICE_MONITOR_2D

SUB_DONE_MOVING

SUB_FILE_EVENT

SUB_MOTOR_IS_MOVING

SUB_PROGRESS

SUB_READBACK

SUB_VALUE

acquire_busy

A descriptor representing a device component (or signal)

acquiring

A descriptor representing a device component (or signal)

ad_root

apply

attr_name

auto_apply

auto_pixels_per_buffer

A descriptor representing a device component (or signal)

buffer_size

A descriptor representing a device component (or signal)

channel_advance

A descriptor representing a device component (or signal)

client_wait

A descriptor representing a device component (or signal)

collect_mode

A descriptor representing a device component (or signal)

component_names

configuration_attrs

configuration_names

A descriptor representing a device component (or signal)

connected

If the device is connected.

connection_timeout

copt_risetime_optimization

A descriptor representing a device component (or signal)

copy_decay_time

A descriptor representing a device component (or signal)

copy_detection_filter

A descriptor representing a device component (or signal)

copy_detection_threshold

A descriptor representing a device component (or signal)

copy_detector_polarity

A descriptor representing a device component (or signal)

copy_min_pulse_pair_separation

A descriptor representing a device component (or signal)

copy_roi_channel

A descriptor representing a device component (or signal)

copy_roi_energy

A descriptor representing a device component (or signal)

copy_roi_sca

A descriptor representing a device component (or signal)

copy_scale_factor

A descriptor representing a device component (or signal)

dead_time

A descriptor representing a device component (or signal)

destroyed

Check if the device has been destroyed.

do_read_all

A descriptor representing a device component (or signal)

do_read_traces

A descriptor representing a device component (or signal)

do_status_all

A descriptor representing a device component (or signal)

dotted_name

Return the dotted name

dwell

A descriptor representing a device component (or signal)

dxp

A descriptor representing a device component (or signal)

erase_all

A descriptor representing a device component (or signal)

erase_start

A descriptor representing a device component (or signal)

event_types

Events that can be subscribed to via obj.subscribe

file_event

A descriptor representing a device component (or signal)

hdf5

A descriptor representing a device component (or signal)

hints

idead_time

A descriptor representing a device component (or signal)

ignore_gate

A descriptor representing a device component (or signal)

input_logic_polarity

A descriptor representing a device component (or signal)

kind

lazy_wait_for_connection

list_mode

A descriptor representing a device component (or signal)

max_elapsed_live

A descriptor representing a device component (or signal)

max_elapsed_real

A descriptor representing a device component (or signal)

max_elapsed_trigger_live

A descriptor representing a device component (or signal)

max_events

A descriptor representing a device component (or signal)

max_input_count_rate

A descriptor representing a device component (or signal)

max_output_count_rate

A descriptor representing a device component (or signal)

max_scas

A descriptor representing a device component (or signal)

max_triggers

A descriptor representing a device component (or signal)

mbytes_read

A descriptor representing a device component (or signal)

mca

A descriptor representing a device component (or signal)

name

name of the device

nd_array_mode

A descriptor representing a device component (or signal)

next_pixel

A descriptor representing a device component (or signal)

num_scas

A descriptor representing a device component (or signal)

parent

The parent of the ophyd object.

pixel_advance_mode

A descriptor representing a device component (or signal)

pixels_per_buffer

A descriptor representing a device component (or signal)

pixels_per_run

A descriptor representing a device component (or signal)

poll_time

A descriptor representing a device component (or signal)

port_name

prescale

A descriptor representing a device component (or signal)

preset_events

A descriptor representing a device component (or signal)

preset_mode

A descriptor representing a device component (or signal)

preset_real_time

A descriptor representing a device component (or signal)

preset_triggers

A descriptor representing a device component (or signal)

read_all

A descriptor representing a device component (or signal)

read_all_once

A descriptor representing a device component (or signal)

read_attrs

read_rate

A descriptor representing a device component (or signal)

read_traces

A descriptor representing a device component (or signal)

report

A report on the object.

root

Walk parents to find ultimate ancestor (parent's parent...).

save_system

A descriptor representing a device component (or signal)

save_system_file

A descriptor representing a device component (or signal)

set_acquire_busy

A descriptor representing a device component (or signal)

set_client_wait

A descriptor representing a device component (or signal)

signal_names

snl_connected

A descriptor representing a device component (or signal)

staged

Check if the device has been staged.

start_all

A descriptor representing a device component (or signal)

status_all

A descriptor representing a device component (or signal)

status_all_once

A descriptor representing a device component (or signal)

stop_all

A descriptor representing a device component (or signal)

stopped

Check if the device has been stopped.

subscriptions

sync_count

A descriptor representing a device component (or signal)

trigger_signals

class OphydAttrList(device, kind, remove_kind, recurse_key)#

Bases: MutableSequence

list 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 RuntimeError if it has, as a way of verify that no instances will be “missed” by this registry. False by default.

apply = None#
auto_apply = None#
cancel_on_stop(status: StatusBase) None#

Register a status object to be cancelled when the device is stopped.

Parameters:

status (StatusBase) – The status object to be cancelled.

check_value(value, **kwargs)#

Check if the value is valid for this object

This function does no normalization, but may raise if the value is invalid.

Raises:

ValueError

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)

complete() DeviceStatus | StatusBase#

Complete the device.

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_key schema.

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_key schema.

Return type:

OrderedDict

destroy()#

Destroy the device.

property destroyed: bool#

Check if the device has been destroyed.

property dotted_name: str#

Return the dotted name

property event_types#

Events that can be subscribed to via obj.subscribe

find_signal(text, use_re=False, case_sensitive=False, match_fcn=None, f=<colorama.ansitowin32.StreamWrapper object>)#

Search through the signal docs on this detector for the string text

Parameters:
  • text (str) – Text to find

  • use_re (bool, optional) – Use regular expressions

  • case_sensitive (bool, optional) – Case sensitive search

  • match_fcn (callable, optional) – Function to call when matches are found Defaults to a function that prints matches to f

  • f (file-like, optional) – File-like object that the default match function prints to (Defaults to sys.stdout)

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.

get_asyn_digraph()#

Get the directed graph of the ASYN ports

Returns:

  • G (networkx.DiGraph) – Directed graph of pipelines

  • port_map (dict) – Mapping between port_name and ADBase objects

get_asyn_port_dictionary()#

Return port name : component map

Returns:

port_map – Mapping between port_name and ADBase objects

Return type:

dict

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)

get_plugin_by_asyn_port(port_name)#

Get the plugin which has the given asyn port name

Parameters:

port_name (str) – The port name to search for

Returns:

ret – Either the requested plugin or None if not found

Return type:

ADBase or None

kickoff() DeviceStatus | StatusBase#

Kickoff the device.

missing_plugins()#

Find missing ports

property name#

name of the device

on_complete() None[source]#

Complete detector and backend

on_connected()[source]#

Setup Falcon Sitoro detector default parameters once signals are connected

on_destroy() None#

Called when the device is destroyed. Cleanup resources here.

on_init() None[source]#

Initialize Falcon Sitoro detector

on_kickoff() DeviceStatus | StatusBase | None#

Called to kickoff a device for a fly scan. Has to be called explicitly.

on_pre_scan()[source]#

Method for actions just before the scan starts.

on_stage()[source]#

This method is called when the detector is staged for acquisition. We use the information in scan_info.msg about the upcoming scan to set all relevant parameters on the detector.

on_stop() None[source]#

Stop detector and backend

on_trigger() DeviceStatus | StatusBase | None#

Called when the device is triggered.

on_unstage() DeviceStatus | StatusBase | None#

Called while unstaging 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 RunEngine is 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 NoReplayAllowed to indicate that the plan can not be rewound.

Raises:

bluesky.run_engine.NoReplayAllowed

pre_scan() DeviceStatus | StatusBase | None#

Pre-scan function.

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_attrs list.

property report#

A report on the object.

resume() None#

Resume a device from a ‘paused’ state.

This is called by the bluesky.run_engine.RunEngine when 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…).

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 EpicsSignalBase has been instantiated for the first time.

set_trigger(mapping_mode: MappingSource, trigger_source: TriggerSource, ignore_gate: Literal[0, 1] = 0) None[source]#

Set triggering mode for detector

Parameters:
  • mapping_mode (MappingSource) – Mapping mode for the detector

  • trigger_source (TriggerSource) – Trigger source for the detector, pixel_advance_signal

  • ignore_gate (int) – Ignore gate from TTL signal; defaults to 0

stage() list[object] | DeviceStatus | StatusBase#

Stage the device.

property staged: Staged#

Check if the device has been staged.

stop(*, success: bool = False) None#

Stop the device.

Parameters:

success (bool) – True if the action was successful, False otherwise.

property stopped: bool#

Check if the device has been stopped.

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, **kwargs passed 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_subs

  • event_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_type kwargs in _run_subs

  • run (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

trigger() DeviceStatus | StatusBase#

Trigger the device.

unstage() list[object] | DeviceStatus | StatusBase#

Unstage the device.

unsubscribe(cid)#

Remove a subscription

See also subscribe(), clear_sub()

Parameters:

cid (int) – token return by subscribe()

validate_asyn_ports()#

Validate that all components of pipeline are known

Raises:

RuntimeError – If there any input ports to known plugins where the source is not known to ophyd

visualize_asyn_digraph(ax=None, *args, **kwargs)#

This generates a figure showing the current asyn port layout.

This method generates a plot showing all of the currently enabled Areadetector plugin asyn ports and their relationships. The current ports and relationships are found using self.get_asyn_digraph.

Parameters:
  • ax (matplotlib axes) – if None (default) then a new figure is created otherwise it is plotted on the specified axes.

  • *args (networkx.draw_networkx args and kwargs.) – For the allowed args and kwargs see the networkx.draw_networkx documentation

  • **kwargs (networkx.draw_networkx args and kwargs.) –

    For the allowed args and kwargs see the networkx.draw_networkx documentation

wait_for_condition(condition: Callable[[], bool], timeout: float, check_stopped: bool = False, interval: float = 0.05) bool#

Utility method to easily wait for signals or methods to reach an expected state.

Parameters:
  • condition (Callable) – function that returns True if the condition is met, False otherwise

  • timeout (float) – timeout in seconds

  • check_stopped (bool) – True if stopped flag should be checked

  • interval (float) – interval in seconds

Returns:

True if all signals are in the desired state, False if timeout is reached

Return type:

bool

Example

>>> self.wait_for_condition(condition=my_condition, timeout=5, interval=0.05, check_stopped=True)
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)