DiamondLightSource / fastcs-eiger

Prototype Eiger Control System Integration with FastCS
https://github.com/DiamondLightSource/FastCS
Apache License 2.0
1 stars 0 forks source link

Handle real detector #17

Closed GDYendell closed 5 months ago

GDYendell commented 10 months ago

Startup output when running against I03 eiger and dumping responses:

detector/status:
['humidity', 'link_0', 'link_1', 'series_unique_id', 'state', 'temperature', 'time']
detector/status:
[{'access_mode': 'r', 'unit': '%', 'value': 0.12640380859375, 'value_type': 'float'}, {'access_mode': 'r', 'allowed_values': ['up', 'down'], 'value': 'up', 'value_type': 'string'}, {'access_mode': 'r', 'allowed_values': ['up', 'down'], 'value': 'up', 'value_type': 'string'}, {'access_mode': 'r', 'value': '01HGB8M74CD389SXWHQ84TXCSQ', 'value_type': 'string'}, {'access_mode': 'r', 'allowed_values': ['na', 'idle', 'ready', 'acquire', 'configure', 'initialize', 'error'], 'value': 'idle', 'value_type': 'string'}, {'access_mode': 'r', 'unit': 'deg C', 'value': 28.676132202148438, 'value_type': 'float'}, {'access_mode': 'r', 'value': '2023-11-28T17:06:34+0100', 'value_type': 'string'}]
detector/config:
['auto_summation', 'beam_center_x', 'beam_center_y', 'bit_depth_image', 'bit_depth_readout', 'chi_increment', 'chi_start', 'compression', 'count_time', 'counting_mode', 'countrate_correction_applied', 'countrate_correction_count_cutoff', 'data_collection_date', 'description', 'detector_distance', 'detector_number', 'detector_orientation', 'detector_readout_time', 'detector_translation', 'eiger_fw_version', 'element', 'extg_mode', 'fast_arm', 'flatfield_correction_applied', 'frame_count_time', 'frame_time', 'incident_energy', 'incident_particle_type', 'instrument_name', 'kappa_increment', 'kappa_start', 'mask_to_zero', 'nexpi', 'nimages', 'ntrigger', 'ntriggers_skipped', 'number_of_excluded_pixels', 'omega_increment', 'omega_start', 'phi_increment', 'phi_start', 'photon_energy', 'pixel_mask_applied', 'roi_mode', 'sample_name', 'sensor_material', 'sensor_thickness', 'software_version', 'source_name', 'test_image_mode', 'test_image_value', 'threshold/1/energy', 'threshold/1/mode', 'threshold/1/number_of_excluded_pixels', 'threshold/2/energy', 'threshold/2/mode', 'threshold/2/number_of_excluded_pixels', 'threshold/difference/lower_threshold', 'threshold/difference/mode', 'threshold/difference/upper_threshold', 'threshold_energy', 'total_flux', 'trigger_mode', 'trigger_start_delay', 'two_theta_increment', 'two_theta_start', 'virtual_pixel_correction_applied', 'x_pixel_size', 'x_pixels_in_detector', 'y_pixel_size', 'y_pixels_in_detector']
detector/config:
[{'access_mode': 'rw', 'value': True, 'value_type': 'bool'}, {'access_mode': 'rw', 'value': 2048.133333333333, 'value_type': 'float'}, {'access_mode': 'rw', 'value': 2166.0, 'value_type': 'float'}, {'access_mode': 'r', 'value': 16, 'value_type': 'uint'}, {'access_mode': 'r', 'value': 16, 'value_type': 'uint'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'allowed_values': ['lz4', 'bslz4', 'none'], 'value': 'bslz4', 'value_type': 'string'}, {'access_mode': 'rw', 'max': 3600.0, 'min': 0.000892758, 'unit': 's', 'value': 0.0019999, 'value_type': 'float'}, {'access_mode': 'rw', 'allowed_values': ['normal', 'retrigger'], 'value': 'retrigger', 'value_type': 'string'}, {'access_mode': 'rw', 'value': True, 'value_type': 'bool'}, {'access_mode': 'r', 'value': 23023, 'value_type': 'uint'}, {'access_mode': 'r', 'value': '2023-11-28 16:26', 'value_type': 'string'}, {'access_mode': 'r', 'value': 'Dectris EIGER2 Si 16M', 'value_type': 'string'}, {'access_mode': 'rw', 'value': 100.0, 'value_type': 'float'}, {'access_mode': 'r', 'value': 'E-32-0117', 'value_type': 'string'}, {'access_mode': 'rw', 'value': [-1, 0, 0, 0, -1, 0], 'value_type': 'float'}, {'access_mode': 'r', 'min': 1e-07, 'unit': 's', 'value': 1e-07, 'value_type': 'float'}, {'access_mode': 'rw', 'value': [0.15360999999999997, 0.16244999999999998, -100], 'value_type': 'float'}, {'access_mode': 'r', 'value': 'release-2022.1.2', 'value_type': 'string'}, {'access_mode': 'rw', 'allowed_values': ['Ag', 'As', 'Ba', 'Br', 'Cd', 'Ce', 'Co', 'Cr', 'Cs', 'Cu', 'Fe', 'Ga', 'Ge', 'I', 'In', 'Kr', 'La', 'Mn', 'Mo', 'Nb', 'Ni', 'Pd', 'Rb', 'Rh', 'Ru', 'Sb', 'Se', 'Sn', 'Sr', 'Tc', 'Te', 'Xe', 'Y', 'Zn', 'Zr'], 'value': '', 'value_type': 'string'}, {'access_mode': 'rw', 'allowed_values': ['single', 'double'], 'value': 'double', 'value_type': 'string'}, {'access_mode': 'rw', 'value': False, 'value_type': 'bool'}, {'access_mode': 'rw', 'value': True, 'value_type': 'bool'}, {'access_mode': 'r', 'value': 36400.0, 'value_type': 'float'}, {'access_mode': 'rw', 'min': 0.000892858, 'unit': 's', 'value': 0.002, 'value_type': 'float'}, {'access_mode': 'rw', 'unit': 'eV', 'value': 12700.0, 'value_type': 'float'}, {'access_mode': 'r', 'value': 'photons', 'value_type': 'string'}, {'access_mode': 'rw', 'value': '', 'value_type': 'string'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': False, 'value_type': 'bool'}, {'access_mode': 'rw', 'min': 1, 'value': 1, 'value_type': 'uint'}, {'access_mode': 'rw', 'max': 2000000000, 'min': 1, 'value': 1, 'value_type': 'uint'}, {'access_mode': 'rw', 'max': 2000000000, 'min': 1, 'value': 1000000, 'value_type': 'uint'}, {'access_mode': 'rw', 'min': 0, 'value': 0, 'value_type': 'uint'}, {'access_mode': 'r', 'value': 1253074, 'value_type': 'uint'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': 90.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': 0.0, 'value_type': 'float'}, {'access_mode': 'rw', 'unit': 'eV', 'value': 12700.0, 'value_type': 'float'}, {'access_mode': 'rw', 'value': True, 'value_type': 'bool'}, {'access_mode': 'rw', 'allowed_values': ['disabled', '4M'], 'value': 'disabled', 'value_type': 'string'}, {'access_mode': 'rw', 'value': '', 'value_type': 'string'}, {'access_mode': 'r', 'value': 'Si', 'value_type': 'string'}, {'access_mode': 'r', 'value': 0.00045, 'value_type': 'float'}, {'access_mode': 'r', 'value': '1.8.0', 'value_type': 'string'}, {'access_mode': 'rw', 'value': '', 'value_type': 'string'}, {'access_mode': 'rw', 'allowed_values': ['', 'cal_pulse', 'chip', 'mcb_id', 'value'], 'value': '', 'value_type': 'string'}]
Could not process bit_depth_image - {'access_mode': 'r', 'value': 16, 'value_type': 'uint'}
Could not process bit_depth_readout - {'access_mode': 'r', 'value': 16, 'value_type': 'uint'}
Could not process countrate_correction_count_cutoff - {'access_mode': 'r', 'value': 23023, 'value_type': 'uint'}
Could not process nexpi - {'access_mode': 'rw', 'min': 1, 'value': 1, 'value_type': 'uint'}
Could not process nimages - {'access_mode': 'rw', 'max': 2000000000, 'min': 1, 'value': 1, 'value_type': 'uint'}
Could not process ntrigger - {'access_mode': 'rw', 'max': 2000000000, 'min': 1, 'value': 1000000, 'value_type': 'uint'}
Could not process ntriggers_skipped - {'access_mode': 'rw', 'min': 0, 'value': 0, 'value_type': 'uint'}
Could not process number_of_excluded_pixels - {'access_mode': 'r', 'value': 1253074, 'value_type': 'uint'}
Could not process test_image_value - {'access_mode': 'rw', 'min': 1, 'value': 1, 'value_type': 'uint'}
Could not process threshold/1/number_of_excluded_pixels - {'access_mode': 'r', 'value': 1253074, 'value_type': 'uint'}
Could not process threshold/2/number_of_excluded_pixels - {'access_mode': 'r', 'value': 1252977, 'value_type': 'uint'}
Could not process threshold/difference/lower_threshold - {'access_mode': 'r', 'value': 1, 'value_type': 'uint'}
Could not process threshold/difference/upper_threshold - {'access_mode': 'r', 'value': 2, 'value_type': 'uint'}
Could not process x_pixels_in_detector - {'access_mode': 'r', 'value': 4148, 'value_type': 'uint'}
Could not process y_pixels_in_detector - {'access_mode': 'r', 'value': 4362, 'value_type': 'uint'}
stream/status:
['dropped', 'state']
stream/status:
[{'access_mode': 'r', 'min': 0, 'value': 0, 'value_type': 'uint'}, {'access_mode': 'r', 'allowed_values': ['disabled', 'ready', 'acquire', 'error'], 'value': 'ready', 'value_type': 'string'}]
Could not process dropped - {'access_mode': 'r', 'min': 0, 'value': 0, 'value_type': 'uint'}
stream/config:
['format', 'header_appendix', 'header_detail', 'image_appendix', 'mode']
stream/config:
[{'access_mode': 'rw', 'allowed_values': ['legacy', 'cbor'], 'value': 'legacy', 'value_type': 'string'}, {'access_mode': 'rw', 'value': '', 'value_type': 'string'}, {'access_mode': 'rw', 'allowed_values': ['none', 'basic', 'all'], 'value': 'all', 'value_type': 'string'}, {'access_mode': 'rw', 'value': '', 'value_type': 'string'}, {'access_mode': 'rw', 'allowed_values': ['enabled', 'disabled'], 'value': 'enabled', 'value_type': 'string'}]
monitor/status:
['buffer_fill_level', 'buffer_free', 'dropped', 'error', 'state']
monitor/status:
[{'access_mode': 'r', 'value': [98, 100], 'value_type': 'uint'}, {'access_mode': 'r', 'max': 13110071040, 'min': 0, 'unit': 'B', 'value': 5972365696, 'value_type': 'uint'}, {'access_mode': 'r', 'min': 0, 'value': 650, 'value_type': 'uint'}, {'access_mode': 'r', 'value': [], 'value_type': 'string'}, {'access_mode': 'r', 'allowed_values': ['normal', 'overflow'], 'value': 'overflow', 'value_type': 'string'}]
Could not process buffer_fill_level - {'access_mode': 'r', 'value': [98, 100], 'value_type': 'uint'}
Could not process buffer_free - {'access_mode': 'r', 'max': 13110071040, 'min': 0, 'unit': 'B', 'value': 5972365696, 'value_type': 'uint'}
Could not process dropped - {'access_mode': 'r', 'min': 0, 'value': 650, 'value_type': 'uint'}
monitor/config:
['buffer_size', 'discard_new', 'mode']
monitor/config:
[{'access_mode': 'rw', 'max': 5000, 'min': 0, 'value': 100, 'value_type': 'uint'}, {'access_mode': 'rw', 'value': True, 'value_type': 'bool'}, {'access_mode': 'rw', 'allowed_values': ['enabled', 'disabled'], 'value': 'disabled', 'value_type': 'string'}]
Could not process buffer_size - {'access_mode': 'rw', 'max': 5000, 'min': 0, 'value': 100, 'value_type': 'uint'}
Replacing the repeat,state, with detector_state
Replacing the repeat,dropped, with stream_dropped
Replacing the repeat,mode, with stream_mode
INFO: PVXS QSRV2 is loaded and ENABLED.
Starting iocInit
############################################################################
## EPICS 7.0.7.0
## Rev. 7.0.7.99.0.2
## Rev. Date 7.0.7.99.0.2
############################################################################
iocRun: All initialization complete
Python 3.11.6 (main, Oct  3 2023, 02:57:16) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> detector/api/1.8.0/config/detector_orientation update loop failed:
float() argument must be a string or a real number, not 'list'
detector/api/1.8.0/config/detector_translation update loop failed:
float() argument must be a string or a real number, not 'list'
detector/api/1.8.0/config/total_flux update loop failed:
float() argument must be a string or a real number, not 'NoneType'
>>>
GDYendell commented 10 months ago

For reference, when starting against the simulator:

detector/status:
['humidity', 'state', 'temperature', 'time', 'error']
detector/status:
[{'value': 0.2, 'value_type': 'float', 'access_mode': 'r'}, {'value': 'idle', 'value_type': 'State', 'access_mode': 'r', 'allowed_values': ['na', 'ready', 'initialize', 'configure', 'acquire', 'idle', 'test', 'error']}, {'value': 24.5, 'value_type': 'float', 'access_mode': 'r'}, {'value': '2023-11-28T16:01:55.348414', 'value_type': 'datetime', 'access_mode': 'r'}, {'value': [], 'value_type': 'string[]', 'access_mode': 'r'}]
detector/config:
['auto_summation', 'beam_center_x', 'beam_center_y', 'bit_depth_image', 'bit_depth_readout', 'chi_increment', 'chi_start', 'compression', 'count_time', 'counting_mode', 'countrate_correction_applied', 'countrate_correction_count_cutoff', 'data_collection_date', 'description', 'detector_distance', 'detector_number', 'detector_readout_time', 'eiger_fw_version', 'element', 'flatfield_correction_applied', 'frame_count_time', 'frame_time', 'kappa_increment', 'kappa_start', 'nimages', 'ntrigger', 'number_of_excluded_pixels', 'omega_increment', 'omega_start', 'phi_increment', 'phi_start', 'photon_energy', 'pixel_mask_applied', 'roi_mode', 'sensor_material', 'sensor_thickness', 'software_version', 'threshold_energy', 'trigger_mode', 'trigger_start_delay', 'two_theta_increment', 'two_theta_start', 'virtual_pixel_correction_applied', 'wavelength', 'x_pixel_size', 'x_pixels_in_detector', 'y_pixel_size', 'y_pixels_in_detector']
detector/config:
[{'value': True, 'value_type': 'bool', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 16, 'value_type': 'int', 'access_mode': 'rw'}, {'value': 16, 'value_type': 'int', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 'bslz4', 'value_type': 'string', 'access_mode': 'rw', 'allowed_values': ['bslz4', 'lz4']}, {'value': 0.1, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 'normal', 'value_type': 'string', 'access_mode': 'rw', 'allowed_values': ['normal', 'retrigger']}, {'value': True, 'value_type': 'bool', 'access_mode': 'rw'}, {'value': 1000, 'value_type': 'int', 'access_mode': 'rw'}, {'value': '2021-30-09T16:30:00.000-01:00', 'value_type': 'string', 'access_mode': 'r'}, {'value': 'Simulated Eiger X 16M Detector', 'value_type': 'string', 'access_mode': 'r'}, {'value': 2.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 'EIGERSIM001', 'value_type': 'string', 'access_mode': 'r'}, {'value': 0.01, 'value_type': 'float', 'access_mode': 'rw'}, {'value': '1.8.0', 'value_type': 'string', 'access_mode': 'r'}, {'value': 'Co', 'value_type': 'string', 'access_mode': 'rw', 'allowed_values': ['', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn']}, {'value': True, 'value_type': 'bool', 'access_mode': 'rw'}, {'value': 0.01, 'value_type': 'float', 'access_mode': 'r'}, {'value': 0.12, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 1, 'value_type': 'int', 'access_mode': 'rw'}, {'value': 1, 'value_type': 'int', 'access_mode': 'rw'}, {'value': 0, 'value_type': 'int', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 6930.32, 'value_type': 'float', 'access_mode': 'rw'}, {'value': False, 'value_type': 'bool', 'access_mode': 'rw'}, {'value': 'disabled', 'value_type': 'string', 'access_mode': 'rw', 'allowed_values': ['disabled', '4M']}, {'value': 'Silicon', 'value_type': 'string', 'access_mode': 'r'}, {'value': 0.01, 'value_type': 'float', 'access_mode': 'r'}, {'value': '0.1.0', 'value_type': 'string', 'access_mode': 'r'}, {'value': 4020.5, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 'exts', 'value_type': 'string', 'access_mode': 'rw', 'allowed_values': ['exts', 'ints', 'exte', 'inte']}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': True, 'value_type': 'bool', 'access_mode': 'rw'}, {'value': 1.0, 'value_type': 'float', 'access_mode': 'rw'}, {'value': 0.01, 'value_type': 'float', 'access_mode': 'r'}, {'value': 4148, 'value_type': 'int', 'access_mode': 'r'}, {'value': 0.01, 'value_type': 'float', 'access_mode': 'r'}, {'value': 4362, 'value_type': 'int', 'access_mode': 'r'}]
stream/status:
['error', 'dropped', 'state']
stream/status:
[{'value': [], 'value_type': 'string[]', 'access_mode': 'r'}, {'value': 0, 'value_type': 'int', 'access_mode': 'r'}, {'value': 'ready', 'value_type': 'State', 'access_mode': 'r'}]
stream/config:
['header_appendix', 'header_detail', 'image_appendix', 'mode']
stream/config:
[{'value': '', 'value_type': 'string', 'access_mode': 'rw'}, {'value': 'basic', 'value_type': 'string', 'access_mode': 'rw', 'allowed_values': ['none', 'basic', 'all']}, {'value': '', 'value_type': 'string', 'access_mode': 'rw'}, {'value': 'enabled', 'value_type': 'State', 'access_mode': 'rw', 'allowed_values': ['disabled', 'enabled']}]
monitor/status:
['buffer_fill_level', 'buffer_free', 'dropped', 'error', 'state']
monitor/status:
[{'value': 2, 'value_type': 'int', 'access_mode': 'r'}, {'value': False, 'value_type': 'bool', 'access_mode': 'r'}, {'value': 0, 'value_type': 'int', 'access_mode': 'r'}, {'value': [], 'value_type': 'string[]', 'access_mode': 'r'}, {'value': 'normal', 'value_type': 'State', 'access_mode': 'r', 'allowed_values': ['normal', 'overflow']}]
monitor/config:
['buffer_size', 'discard_new', 'mode']
monitor/config:
[{'value': 512, 'value_type': 'int', 'access_mode': 'rw'}, {'value': False, 'value_type': 'bool', 'access_mode': 'rw'}, {'value': 'enabled', 'value_type': 'State', 'access_mode': 'rw', 'allowed_values': ['enabled', 'disabled']}]
Replacing the repeat,error, with detector_error
Replacing the repeat,state, with detector_state
Replacing the repeat,dropped, with stream_dropped
Replacing the repeat,mode, with stream_mode
INFO: PVXS QSRV2 is loaded and ENABLED.
Starting iocInit
############################################################################
## EPICS 7.0.7.0
## Rev. 7.0.7.99.0.2
## Rev. Date 7.0.7.99.0.2
############################################################################
iocRun: All initialization complete
Python 3.11.6 (main, Oct  3 2023, 02:57:16) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>