xes
OnDA Monitor for X-ray Emission Spectroscopy.
This module contains an OnDA Monitor for x-ray emission spectroscopy experiments.
XesProcessing
Bases: OmProcessingProtocol
See documentation for the __init__
function.
__init__(*, monitor_parameters)
OnDA Monitor for X-ray Emission Spectroscopy.
This Processing class implements and OnDA Monitor for X-ray Emission Spectroscopy experiments. The monitor processes camera data frames,extracting an energy spectrum from each of the data frames. The monitor computes smoothed and averaged spectral data information and broadcasts it to external programs (like OM's XES GUI, for visualization. In time resolved experiments, the monitor can process spectra for pumped and dark events separately, and compute their difference.
This monitor is designed to work with cameras or simple single-module detectors. It will not work with a segmented detector.
This class implements the interface described by its base Protocol class. Please see the documentation of that class for additional information about the interface.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
monitor_parameters |
MonitorParameters
|
An object storing OM's configuration parameters. |
required |
initialize_processing_node(*, node_rank, node_pool_size)
Initializes the processing nodes for the XES Monitor.
This function initializes the the spectrum extraction algorithm, plus some internal counters.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
initialize_collecting_node(*, node_rank, node_pool_size)
Initializes the collecting node for the XES Monitor.
This function initializes the data accumulation algorithms and the storage buffers used to compute statistics on the aggregated spectral data. Additionally, it prepares all the necessary network sockets.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
process_data(*, node_rank, node_pool_size, data)
Processes a detector data frame and extracts spectrum information.
This function processes retrieved data events, extracting an energy spectrum from each of them. It additionally prepares the spectral data for transmission to to the collecting node.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
data |
Dict[str, Any]
|
A dictionary containing the data that OM retrieved for the detector data frame being processed.
|
required |
Returns:
Type | Description |
---|---|
Tuple[Dict[str, Any], int]
|
A tuple with two entries. The first entry is a dictionary storing the processed data that should be sent to the collecting node. The second entry is the OM rank number of the node that processed the information. |
wait_for_data(*, node_rank, node_pool_size)
Receives and handles requests from external programs.
This function receives requests from external programs over a network socket and reacts according to the nature of the request, sending data back to the source of the request or modifying the internal behavior of the monitor.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
collect_data(*, node_rank, node_pool_size, processed_data)
Computes statistics on aggregated spectrum data and broadcasts them.
This method overrides the corresponding method of the base class: please also refer to the documentation of that class for more information.
This function computes aggregated statistics on spectral data received from the processing nodes. It then broadcasts the aggregated information to external programs for visualization.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
processed_data |
Tuple[Dict, int]
|
A tuple whose first entry is a dictionary storing the data received from a processing node, and whose second entry is the OM rank number of the node that processed the information. |
required |
end_processing_on_processing_node(*, node_rank, node_pool_size)
Ends processing on the processing nodes for the XES Monitor.
This function prints a message on the console and ends the processing.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |
Returns:
Type | Description |
---|---|
Union[Dict[str, Any], None]
|
Usually nothing. Optionally, a dictionary storing information to be sent to the processing node. |
end_processing_on_collecting_node(*, node_rank, node_pool_size)
Ends processing on the collecting node for the XES Monitor.
This function prints a message on the console and ends the processing.
Please see the documentation of the base Protocol class for additional information about this method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
node_rank |
int
|
The OM rank of the current node, which is an integer that unambiguously identifies the current node in the OM node pool. |
required |
node_pool_size |
int
|
The total number of nodes in the OM pool, including all the processing nodes and the collecting node. |
required |