def setUp(self): self.io = DataSet.default_io self.formatter = HDF5Format() # Set up the location provider to always store test data in # "qc.tests.unittest_data cur_fp = os.path.dirname(__file__) base_fp = os.path.abspath(os.path.join(cur_fp, '../unittest_data')) self.loc_provider = FormatLocation(fmt=base_fp + '/{date}/#{counter}_{name}_{time}') DataSet.location_provider = self.loc_provider
def load_dataset(location, io=None, verbose=0): """ Load a dataset from storage An attempt is made to automatically detect the formatter. Supported are currently GNUPlotFormat and HDF5Format Args: location (str): either the relative or full location io (None or qcodes.DiskIO): Returns: dataset (DataSet or None) """ if io is None: io = qcodes.DataSet.default_io formatters = [qcodes.DataSet.default_formatter] try: from qcodes.data.hdf5_format_hickle import HDF5FormatHickle formatters += [HDF5FormatHickle()] except: pass from qcodes.data.hdf5_format import HDF5Format formatters += [HDF5Format()] from qcodes.data.gnuplot_format import GNUPlotFormat formatters += [GNUPlotFormat()] data = None for ii, hformatter in enumerate(formatters): try: if verbose: print('%d: %s' % (ii, hformatter)) data = qcodes.load_data(location, formatter=hformatter, io=io) if len(data.arrays) == 0: data = None raise Exception( 'empty dataset, probably a HDF5 format misread by GNUPlotFormat' ) logging.debug('load_data: loaded %s with %s' % (location, hformatter)) except Exception as ex: logging.info( 'load_data: location %s: failed for formatter %d: %s' % (location, ii, hformatter)) if verbose: print(ex) pass finally: if data is not None: if isinstance(hformatter, GNUPlotFormat): # workaround for bug in GNUPlotFormat not saving the units if '__dataset_metadata' in data.metadata: dataset_meta = data.metadata['__dataset_metadata'] for key, array_metadata in dataset_meta[ 'arrays'].items(): if key in data.arrays: if data.arrays[key].unit is None: if verbose: print( 'load_dataset: updating unit for %s' % key) data.arrays[key].unit = array_metadata[ 'unit'] if verbose: print('succes with formatter %s' % hformatter) break if verbose: if data is None: print('could not load data from %s, returning None' % location) return data
def load_dataset(location, io=None, verbose=0): """ Load a dataset from storage An attempt is made to automatically detect the formatter. Supported are currently qcodes GNUPlotFormat, qcodes HDF5Format and json format. Args: location (str): either the relative or full location io (None or qcodes.data.io.DiskIO): Returns: dataset (DataSet or None) """ if io is None: io = DataSet.default_io formatters = [DataSet.default_formatter] from qcodes.data.hdf5_format import HDF5FormatMetadata formatters += [HDF5FormatMetadata()] try: from qcodes.data.hdf5_format_hickle import HDF5FormatHickle formatters += [HDF5FormatHickle()] except ImportError as ex: logging.info(f'HDF5FormatHickle not available {ex}') from qcodes.data.hdf5_format import HDF5Format formatters += [HDF5Format()] from qcodes.data.gnuplot_format import GNUPlotFormat formatters += [GNUPlotFormat()] data = None if location.endswith('.json'): dataset_dictionary = qtt.utilities.json_serializer.load_json(location) data = qtt.data.dictionary_to_dataset(dataset_dictionary) else: # assume we have a QCoDeS dataset for ii, hformatter in enumerate(formatters): try: if verbose: print('%d: %s' % (ii, hformatter)) data = qcodes.data.data_set.load_data(location, formatter=hformatter, io=io) if len(data.arrays) == 0: data = None raise Exception( 'empty dataset, probably a HDF5 format misread by GNUPlotFormat' ) logging.debug('load_data: loaded %s with %s' % (location, hformatter)) except Exception as ex: logging.info( 'load_data: location %s: failed for formatter %d: %s' % (location, ii, hformatter)) if verbose: print(ex) finally: if data is not None: if isinstance(hformatter, GNUPlotFormat): # workaround for bug in GNUPlotFormat not saving the units if '__dataset_metadata' in data.metadata: dataset_meta = data.metadata['__dataset_metadata'] for key, array_metadata in dataset_meta[ 'arrays'].items(): if key in data.arrays: if data.arrays[key].unit is None: if verbose: print( 'load_dataset: updating unit for %s' % key) data.arrays[key].unit = array_metadata[ 'unit'] if verbose: print('succes with formatter %s' % hformatter) break if verbose: if data is None: print('could not load data from %s, returning None' % location) return data