poolsynchronization

This module is part of the Python Pool library. It defines the classes for the synchronization

Classes

PoolSynchronization

Inheritance diagram of PoolSynchronization
class PoolSynchronization(main_element, name='Synchronization')[source]

Bases: PoolAction

Synchronization action.

It coordinates trigger/gate elements and software synchronizer.

add_listener(listener)[source]
start_action(ctrls, synch_description, moveable=None, software_synchronizer_initial_domain=None, *args, **kwargs)[source]

Start synchronization action.

Parameters:
  • ctrls (list) – list of enabled trigger/gate controllers

  • synch_description (SynchDescription) – synchronization description

  • moveable (PoolMotor or PoolPseudoMotor) – (optional) moveable object used as the synchronization source in the Position domain

  • software_synchronizer_initial_domain – (optional) - initial domain for software synchronizer, can be either Time or Position

is_triggering(states)[source]

Determines if we are synchronizing or not based on the states returned by the controller(s) and the software synchronizer.

Parameters:

states (dict<PoolElement, tuple(tuple(int, str), str))) – a map containing state information as returned by read_state_info: ((state, status), exception_error)

Returns:

returns True if is triggering or False otherwise

Return type:

bool

action_loop(*args, **kwargs)[source]

action_loop method

SynchDescription

Inheritance diagram of SynchDescription
class SynchDescription(iterable=(), /)[source]

Bases: list

Synchronization description. It is composed from groups - repetitions of equidistant synchronization events. Each group is described by SynchParam parameters which may have values in SynchDomain domains.

property repetitions
property delay_time
property active_time
property total_time
property passive_time
property integration_time
to_dial(sign, offset)[source]

Convert position domain group parameters to dial position

Maintain time domain group parameters (if present) as they are.

Formula is: pos = sign * dial + offset.

Parameters:
  • sign (int) – sign (1 or -1) to apply in the formula

  • offset (float) – offset to apply in the formula

Returns:

new synchronization description in dial position

Return type:

SynchDescription

static from_json(synch_description_json)[source]

JSON decode synchronization description data structure and cast SynchParam and SynchDomain keys from strings to enums.

Todo

At some point remove the backwards compatibility for memorized values created with Python 2. In Python 2 IntEnum was serialized to “<class>.<attr>” e.g. “SynchDomain.Time” and we were using a class method fromStr to interpret the enumeration objects.