Source code for silq.tests.mocks.mock_parameters

import numpy as np

import qcodes as qc
from qcodes.instrument.parameter import Parameter
from qcodes import config
from qcodes.data.io import DiskIO

from silq.tools.data_tools import get_data_folder


[docs]class TestValParameter(Parameter): def __init__(self, name, **kwargs): self.val = 0 super().__init__(name, **kwargs) @property def valfun(self): return self.val @valfun.setter def valfun(self, val): self.val = val
[docs] def get(self): return self.val
[docs] def set(self, val): self.val = val
[docs]class TestLoopParameter(Parameter): def __init__(self, name, param, **kwargs): self.val = 0 self.param = param super().__init__(name, **kwargs)
[docs] def get(self): if 'data_folder' in config['user']: print('data folder: {}'.format(config['user']['data_folder'])) print('latest folder: {}'.format(get_data_folder())) return self.param()
[docs]class SetParameter(Parameter): def __init__(self, name, param, **kwargs): super().__init__(name, **kwargs) self.param = param
[docs] def get(self): return self.param()
[docs] def set(self, val): self.param(val)
[docs]class ConfigParameter(Parameter): def __init__(self, name, key, **kwargs): super().__init__(name, **kwargs) if type(key) is str: self.config = config['user'] self.key = key else: self.keys = key self.key = key[-1]
[docs] def get_config(self): c = config['user'] if hasattr(self, 'keys'): for key in self.keys[:-1]: c = c[key] return c
[docs] def get(self): return self.get_config()[self.key]
[docs] def set(self, val): self.get_config()[self.key] = val
[docs]class TestMeasureParameter(Parameter): def __init__(self, name, target_param, target_val, **kwargs): super().__init__(name, **kwargs) self.target_param = target_param self.target_val = target_val
[docs] def get(self): return - abs(self.target_param() - self.target_val)
[docs]class TestStoreParameter(Parameter): def __init__(self, data_manager, shape=(100,2), formatter=None, **kwargs): self.data_manager = data_manager self.formatter=formatter super().__init__(shape=shape, **kwargs)
[docs] def get(self): result = np.random.randint(1,100,self.shape) t0 = time() while self.data_manager.ask('get_measuring'): print('pausing') sleep(2) self.data_set = data_tools.create_raw_data_set( name=self.name, data_manager=self.data_manager, shape=self.shape, formatter=self.formatter) data_tools.store_data(data_manager=self.data_manager, result=result) print('time taken: {:.2f}'.format(time() - t0)) return result
[docs]class GaussianParameter(Parameter): def __init__(self, name, set_parameter, x0=0, std=1, **kwargs): super().__init__(name, **kwargs) self.x0 = x0 self.std = std self.set_parameter = set_parameter
[docs] def get(self): set_val = self.set_parameter() return np.exp(-(set_val - self.x0)**2 / self.std**2)
[docs]class Gaussian2DParameter(Parameter): def __init__(self, name, set_parameters, x0=(0, 0), std=1, **kwargs): super().__init__(name, **kwargs) self.x0 = x0 self.std = std self.set_parameters = set_parameters
[docs] def get(self): set_vals = [p() for p in self.set_parameters] r = sum([(set_val - x0)**2 for set_val, x0 in zip(set_vals, self.x0)]) return np.exp(-r / self.std**2)