def __init__(self, dataset: DataSet, write_period: numeric_types, parameters: Dict[str, ParamSpec]) -> None: self._dataset = dataset if DataSaver.default_callback is not None and 'run_tables_subscription_callback' in DataSaver.default_callback: callback = DataSaver.default_callback[ 'run_tables_subscription_callback'] min_wait = DataSaver.default_callback[ 'run_tables_subscription_min_wait'] min_count = DataSaver.default_callback[ 'run_tables_subscription_min_count'] snapshot = dataset.get_metadata('snapshot') self._dataset.subscribe(callback, min_wait=min_wait, min_count=min_count, state={}, callback_kwargs={'run_id': self._dataset.run_id, 'snapshot': snapshot}) self.write_period = float(write_period) self.parameters = parameters self._known_parameters = list(parameters.keys()) self._results: List[dict] = [] # will be filled by addResult self._last_save_time = monotonic() self._known_dependencies: Dict[str, List[str]] = {} for param, parspec in parameters.items(): if parspec.depends_on != '': self._known_dependencies.update( {str(param): parspec.depends_on.split(', ')})
def __init__(self, dataset: DataSet, write_period: numeric_types, interdeps: InterDependencies_) -> None: self._dataset = dataset if DataSaver.default_callback is not None \ and 'run_tables_subscription_callback' \ in DataSaver.default_callback: callback = DataSaver.default_callback[ 'run_tables_subscription_callback'] min_wait = DataSaver.default_callback[ 'run_tables_subscription_min_wait'] min_count = DataSaver.default_callback[ 'run_tables_subscription_min_count'] snapshot = dataset.get_metadata('snapshot') self._dataset.subscribe(callback, min_wait=min_wait, min_count=min_count, state={}, callback_kwargs={ 'run_id': self._dataset.run_id, 'snapshot': snapshot }) default_subscribers = qcodes.config.subscription.default_subscribers for subscriber in default_subscribers: self._dataset.subscribe_from_config(subscriber) self._interdeps = interdeps self.write_period = float(write_period) # self._results will be filled by add_result self._results: List[Dict[str, VALUE]] = [] self._last_save_time = perf_counter() self._known_dependencies: Dict[str, List[str]] = {} self.parent_datasets: List[DataSet] = [] for link in self._dataset.parent_dataset_links: self.parent_datasets.append(load_by_guid(link.tail))
def _load_metadata_from_qcodes(self, qc_dataset: DataSet): self._normalization_constants = { key: [0.0, 1.0] for key in ["dc_current", "rf", "dc_sensor"] } self._snapshot = {} self._nt_metadata = {} try: self._snapshot = json.loads(qc_dataset.get_metadata("snapshot")) except (RuntimeError, TypeError) as e: pass try: self._nt_metadata = json.loads(qc_dataset.get_metadata( nt.meta_tag)) except (RuntimeError, TypeError) as e: pass try: nm = self._nt_metadata["normalization_constants"] self._normalization_constants.update(nm) except KeyError: pass try: self.device_name = self._nt_metadata["device_name"] except KeyError: logger.warning("No device name specified.") self.device_name = "noname_device" try: self.readout_methods = self._nt_metadata["readout_methods"] except KeyError: logger.warning("No readout method specified.") self.readout_methods = {} if (not isinstance(self.readout_methods, dict) or not self.readout_methods): if isinstance(self.readout_methods, str): methods = [self.readout_methods] elif isinstance(self.readout_methods, list): methods = self.readout_methods else: # we assume the default order of readout methods if nothing # else is specified methods = default_readout_methods[:len(self.raw_data)] read_params = [str(it) for it in list(self.raw_data.data_vars)] self.readout_methods = dict(zip(methods, read_params)) quality = qc_dataset.get_metadata("good") if quality is not None: self.quality = int(quality) else: self.quality = None self.label = [] for label in LABELS: if label != "good": lbl = qc_dataset.get_metadata(label) if lbl is None: lbl = 0 if int(lbl) == 1: self.label.append(label)