Exemple #1
0
    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))
Exemple #3
0
    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)