Source code for qcodes_contrib_drivers.drivers.ZurichInstruments.MFLI

from qcodes.validators import ComplexNumbers
from qcodes.parameters import ParamRawDataType, Parameter
from typing import Any, Optional
from zhinst.qcodes import MFLI as mfli


[docs] class ComplexSampleParameter(Parameter): def __init__( self, *args: Any, dict_parameter: Optional[Parameter] = None, **kwargs: Any ): super().__init__(*args, **kwargs) if dict_parameter is None: raise TypeError("ComplexCampleParameter requires a dict_parameter") self._dict_parameter = dict_parameter
[docs] def get_raw(self) -> ParamRawDataType: values_dict = self._dict_parameter.get() return complex(values_dict["x"], values_dict["y"])
[docs] class MFLI(mfli): """ This wrapper adds back a "complex sample" parameter to the demodulators such that we can use them in the way that it was done with "sample" parameter in version 0.2 of ZHINST-qcodes written by jenshnielsen: https://github.com/zhinst/zhinst-qcodes/issues/41 """ def __init__(self, name: str, serial: str, host: str, **kwargs: Any): super().__init__( name=name, serial=serial, host=host, **kwargs ) for demod in self.demods: demod.add_parameter( "complex_sample", label="Vrms", vals=ComplexNumbers(), parameter_class=ComplexSampleParameter, dict_parameter=demod.sample, snapshot_value=False, )