Source code for silq.tests.mocks.mock_instruments.mock_ATS

from functools import partial
import inspect

from .mock_instrument import MockInstrument

from qcodes.instrument.parameter import ManualParameter
from qcodes.utils import validators as vals



[docs]class MockATS(MockInstrument): def __init__(self, name, **kwargs): super().__init__(name, **kwargs) channels = ['A', 'B', 'C', 'D'] # Obtain a list of all valid ATS configuration settings self._configuration_settings_names = list( inspect.signature(self.config).parameters.keys()) # Obtain a list of all valid ATS acquisition settings self._acquisition_settings_names = list( inspect.signature(self.acquire).parameters.keys()) self._settings_names = self._acquisition_settings_names + \ self._configuration_settings_names self._configuration_settings = {} self._acquisition_settings = {} self.add_parameter(name='configuration_settings', get_cmd=lambda: self._configuration_settings) self.add_parameter(name='acquisition_settings', get_cmd=lambda: self._acquisition_settings) for param in ['clock_source', 'sample_rate', 'clock_edge', 'decimation', 'trigger_operation', 'external_trigger_coupling', 'external_trigger_range', 'trigger_delay', 'timeout_ticks', 'mode', 'sampled_per_record', 'records_per_buffer', 'bufers_per_acquisition', 'channel_selection', 'transfer_offset', 'external_startcapture', 'enable_record_headers', 'alloc_buffers', 'fifo_only_streaming', 'interleave_samples', 'get_processed_data', 'allocated_buffers', 'buffer_timeout']: self.add_parameter(name=param, get_cmd=partial(self.get_setting, param), # set_cmd=partial(self.set_setting, param), vals=vals.Anything()) for idx in ['1', '2']: for param in ['trigger_engine', 'trigger_source', 'trigger_slope', 'trigger_level']: self.add_parameter(name=param+idx, get_cmd=partial(self.get_setting, param+idx), # set_cmd=partial(self.set_setting, param+idx), vals=vals.Anything()) for idx, ch in enumerate(channels): for param in ['coupling', 'channel_range', 'impedance']: self.add_parameter(name=param+ch, get_cmd=partial(self.get_setting, param, idx=idx), # set_cmd=partial(self.set_setting, param), vals=vals.Anything())
[docs] def config(self, clock_source=None, sample_rate=None, clock_edge=None, decimation=None, coupling=None, channel_range=None, impedance=None, bwlimit=None, trigger_operation=None, trigger_engine1=None, trigger_source1=None, trigger_slope1=None, trigger_level1=None, trigger_engine2=None, trigger_source2=None, trigger_slope2=None, trigger_level2=None, external_trigger_coupling=None, external_trigger_range=None, trigger_delay=None, timeout_ticks=None): for setting in self._configuration_settings_names: if locals()[setting] is not None: self._configuration_settings[setting] = locals()[setting] self.print_function(function='config', **self._configuration_settings)
[docs] def acquire(self, mode=None, samples_per_record=None, records_per_buffer=None, buffers_per_acquisition=None, channel_selection=None, transfer_offset=None, external_startcapture=None, enable_record_headers=None, alloc_buffers=None, fifo_only_streaming=None, interleave_samples=None, get_processed_data=None, allocated_buffers=None, buffer_timeout=None, acquisition_controller=None): for setting in self._acquisition_settings_names: if locals()[setting] is not None: self._acquisition_settings[setting] = locals()[setting] self.print_function(function='config', **self._acquisition_settings)
[docs] def get_setting(self, setting, idx=None): if setting in self._acquisition_settings_names: val = self._acquisition_settings[setting] else: val = self._configuration_settings[setting] if idx is not None and isinstance(val, list): val = val[idx] return val
[docs] def set_setting(self, setting, val): if setting in self._acquisition_settings_names: self._acquisition_settings[setting] = val else: self._configuration_settings[setting] = val