The Snapshot

This notebook sheds some light on the snapshot of instruments.

NOTE: this notebook uses a depreated Loop construct for some of its examples. Please, instead, refer to Working with snapshots notebook from ``docs/examples/DataSet` <DataSet/Working%20with%20snapshots.ipynb>`__.

[1]:
import json
import os
from pprint import pprint

import qcodes as qc
from qcodes.instrument_drivers.mock_instruments import DummyInstrument
from qcodes.station import Station

from qcodes_loop.loops import Loop

# For this tutorial, we initialise our favourite pair of mock instruments,
# a DMM and a DAC

dmm = DummyInstrument('dmm', gates=['v1', 'v2'])
dac = DummyInstrument('dac', gates=['ch1', 'ch2'])

station = Station(dmm, dac)
Logging hadn't been started.
Activating auto-logging. Current session state plus future input saved.
Filename       : C:\Users\a-halakh\.qcodes\logs\command_history.log
Mode           : append
Output logging : True
Raw input log  : False
Timestamping   : True
State          : active
Qcodes Logfile : C:\Users\a-halakh\.qcodes\logs\200324-30512-qcodes.log
False

The main point of having a Station is that it snapshots the state of all added instruments. But what does that mean? Recall that an instrument is, loosely speaking, a collection of Parameters.

Parameter snapshot

[2]:
# Each parameter has a snapshot, containing information about its current value,
# when that value was set, what the allowed values are, etc.
pprint(dmm.v1.snapshot())
{'__class__': 'qcodes.instrument.parameter.Parameter',
 'full_name': 'dmm_v1',
 'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
 'instrument_name': 'dmm',
 'inter_delay': 0,
 'label': 'Gate v1',
 'name': 'v1',
 'post_delay': 0,
 'raw_value': 0,
 'ts': '2020-03-24 18:47:43',
 'unit': 'V',
 'vals': '<Numbers -800<=v<=400>',
 'value': 0}

Instrument snapshot

[3]:
# Each instrument has a snapshot that is basically the snapshots of all the parameters
pprint(dmm.snapshot())
{'__class__': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
 'functions': {},
 'name': 'dmm',
 'parameters': {'IDN': {'__class__': 'qcodes.instrument.parameter.Parameter',
                        'full_name': 'dmm_IDN',
                        'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                        'instrument_name': 'dmm',
                        'inter_delay': 0,
                        'label': 'IDN',
                        'name': 'IDN',
                        'post_delay': 0,
                        'raw_value': {'firmware': None,
                                      'model': 'dmm',
                                      'serial': None,
                                      'vendor': None},
                        'ts': '2020-03-24 18:47:43',
                        'unit': '',
                        'vals': '<Anything>',
                        'value': {'firmware': None,
                                  'model': 'dmm',
                                  'serial': None,
                                  'vendor': None}},
                'v1': {'__class__': 'qcodes.instrument.parameter.Parameter',
                       'full_name': 'dmm_v1',
                       'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                       'instrument_name': 'dmm',
                       'inter_delay': 0,
                       'label': 'Gate v1',
                       'name': 'v1',
                       'post_delay': 0,
                       'raw_value': 0,
                       'ts': '2020-03-24 18:47:43',
                       'unit': 'V',
                       'vals': '<Numbers -800<=v<=400>',
                       'value': 0},
                'v2': {'__class__': 'qcodes.instrument.parameter.Parameter',
                       'full_name': 'dmm_v2',
                       'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                       'instrument_name': 'dmm',
                       'inter_delay': 0,
                       'label': 'Gate v2',
                       'name': 'v2',
                       'post_delay': 0,
                       'raw_value': 0,
                       'ts': '2020-03-24 18:47:43',
                       'unit': 'V',
                       'vals': '<Numbers -800<=v<=400>',
                       'value': 0}},
 'submodules': {}}

Sweep snapshot

[4]:
# When running QCoDeS loops, something is being swept. This is controlled with the `sweep` of a parameter.
# Sweeps also have snapshots
a_sweep = dac.ch1.sweep(0, 10, num=25)
pprint(a_sweep.snapshot())
{'parameter': {'__class__': 'qcodes.instrument.parameter.Parameter',
               'full_name': 'dac_ch1',
               'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
               'instrument_name': 'dac',
               'inter_delay': 0,
               'label': 'Gate ch1',
               'name': 'ch1',
               'post_delay': 0,
               'raw_value': 0,
               'ts': '2020-03-24 18:47:43',
               'unit': 'V',
               'vals': '<Numbers -800<=v<=400>',
               'value': 0},
 'values': [{'first': 0.0, 'last': 10.0, 'num': 25, 'type': 'linear'}]}

Loop/Measurement snapshot

[5]:
# All this is of course nice since a snapshot is saved every time a measurement is
# performed. Let's see this in action with a Loop.

# This is a qcodes_loop.loop, sweeping a dac gate and reading a dmm voltage
lp = Loop(dac.ch1.sweep(0, 1, num=10), 0).each(dmm.v1)

# before the loop runs, the snapshot is quite modest; it contains the snapshots of
# the two involved parameters and the sweep
pprint(lp.snapshot())
{'__class__': 'qcodes.loops.ActiveLoop',
 'actions': [{'__class__': 'qcodes.instrument.parameter.Parameter',
              'full_name': 'dmm_v1',
              'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
              'instrument_name': 'dmm',
              'inter_delay': 0,
              'label': 'Gate v1',
              'name': 'v1',
              'post_delay': 0,
              'raw_value': 0,
              'ts': '2020-03-24 18:47:43',
              'unit': 'V',
              'vals': '<Numbers -800<=v<=400>',
              'value': 0}],
 'delay': 0,
 'sweep_values': {'parameter': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                'full_name': 'dac_ch1',
                                'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                'instrument_name': 'dac',
                                'inter_delay': 0,
                                'label': 'Gate ch1',
                                'name': 'ch1',
                                'post_delay': 0,
                                'raw_value': 0,
                                'ts': '2020-03-24 18:47:43',
                                'unit': 'V',
                                'vals': '<Numbers -800<=v<=400>',
                                'value': 0},
                  'values': [{'first': 0.0,
                              'last': 1.0,
                              'num': 10,
                              'type': 'linear'}]},
 'then_actions': []}
[6]:
# After the loop has run, the dataset contains more information, in particular the
# snapshots for ALL parameters off ALL instruments in the station
data = lp.run('data/dataset')
pprint(data.snapshot())

# This is the snapshot that get's saved to disk alongside your data.
# It's worthwhile familiarising yourself with it, so that you may retrieve
# valuable information down the line!
Started at 2020-03-24 18:47:43
DataSet:
   location = 'data/2020-03-24/#014_{name}_18-47-43'
   <Type>   | <array_id>  | <array.name> | <array.shape>
   Setpoint | dac_ch1_set | ch1          | (10,)
   Measured | dmm_v1      | v1           | (10,)
Finished at 2020-03-24 18:47:43
{'__class__': 'qcodes.data.data_set.DataSet',
 'arrays': {'dac_ch1_set': {'__class__': 'qcodes.data.data_array.DataArray',
                            'action_indices': (),
                            'array_id': 'dac_ch1_set',
                            'full_name': 'dac_ch1',
                            'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                            'instrument_name': 'dac',
                            'inter_delay': 0,
                            'is_setpoint': True,
                            'label': 'Gate ch1',
                            'name': 'ch1',
                            'post_delay': 0,
                            'raw_value': 0,
                            'shape': (10,),
                            'unit': 'V',
                            'vals': '<Numbers -800<=v<=400>'},
            'dmm_v1': {'__class__': 'qcodes.data.data_array.DataArray',
                       'action_indices': (0,),
                       'array_id': 'dmm_v1',
                       'full_name': 'dmm_v1',
                       'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                       'instrument_name': 'dmm',
                       'inter_delay': 0,
                       'is_setpoint': False,
                       'label': 'Gate v1',
                       'name': 'v1',
                       'post_delay': 0,
                       'raw_value': 0,
                       'shape': (10,),
                       'unit': 'V',
                       'vals': '<Numbers -800<=v<=400>'}},
 'formatter': 'qcodes.data.gnuplot_format.GNUPlotFormat',
 'io': '<DiskIO, '
       "base_location='C:\\\\Users\\\\a-halakh\\\\Documents\\\\Microsoft\\\\Qcodes\\\\docs\\\\examples\\\\legacy'>",
 'location': 'data/2020-03-24/#014_{name}_18-47-43',
 'loop': {'__class__': 'qcodes.loops.ActiveLoop',
          'actions': [{'__class__': 'qcodes.instrument.parameter.Parameter',
                       'full_name': 'dmm_v1',
                       'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                       'instrument_name': 'dmm',
                       'inter_delay': 0,
                       'label': 'Gate v1',
                       'name': 'v1',
                       'post_delay': 0,
                       'raw_value': 0,
                       'ts': '2020-03-24 18:47:43',
                       'unit': 'V',
                       'vals': '<Numbers -800<=v<=400>',
                       'value': 0}],
          'delay': 0,
          'sweep_values': {'parameter': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                         'full_name': 'dac_ch1',
                                         'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                         'instrument_name': 'dac',
                                         'inter_delay': 0,
                                         'label': 'Gate ch1',
                                         'name': 'ch1',
                                         'post_delay': 0,
                                         'raw_value': 0,
                                         'ts': '2020-03-24 18:47:43',
                                         'unit': 'V',
                                         'vals': '<Numbers -800<=v<=400>',
                                         'value': 0},
                           'values': [{'first': 0.0,
                                       'last': 1.0,
                                       'num': 10,
                                       'type': 'linear'}]},
          'then_actions': [],
          'ts_end': '2020-03-24 18:47:43',
          'ts_start': '2020-03-24 18:47:43',
          'use_threads': 'data/dataset'},
 'station': {'components': {},
             'config': None,
             'default_measurement': [],
             'instruments': {'dac': {'__class__': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                     'functions': {},
                                     'name': 'dac',
                                     'parameters': {'IDN': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                                            'full_name': 'dac_IDN',
                                                            'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                                            'instrument_name': 'dac',
                                                            'inter_delay': 0,
                                                            'label': 'IDN',
                                                            'name': 'IDN',
                                                            'post_delay': 0,
                                                            'raw_value': {'firmware': None,
                                                                          'model': 'dac',
                                                                          'serial': None,
                                                                          'vendor': None},
                                                            'ts': '2020-03-24 '
                                                                  '18:47:43',
                                                            'unit': '',
                                                            'vals': '<Anything>',
                                                            'value': {'firmware': None,
                                                                      'model': 'dac',
                                                                      'serial': None,
                                                                      'vendor': None}},
                                                    'ch1': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                                            'full_name': 'dac_ch1',
                                                            'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                                            'instrument_name': 'dac',
                                                            'inter_delay': 0,
                                                            'label': 'Gate ch1',
                                                            'name': 'ch1',
                                                            'post_delay': 0,
                                                            'raw_value': 0,
                                                            'ts': '2020-03-24 '
                                                                  '18:47:43',
                                                            'unit': 'V',
                                                            'vals': '<Numbers '
                                                                    '-800<=v<=400>',
                                                            'value': 0},
                                                    'ch2': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                                            'full_name': 'dac_ch2',
                                                            'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                                            'instrument_name': 'dac',
                                                            'inter_delay': 0,
                                                            'label': 'Gate ch2',
                                                            'name': 'ch2',
                                                            'post_delay': 0,
                                                            'raw_value': 0,
                                                            'ts': '2020-03-24 '
                                                                  '18:47:43',
                                                            'unit': 'V',
                                                            'vals': '<Numbers '
                                                                    '-800<=v<=400>',
                                                            'value': 0}},
                                     'submodules': {}},
                             'dmm': {'__class__': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                     'functions': {},
                                     'name': 'dmm',
                                     'parameters': {'IDN': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                                            'full_name': 'dmm_IDN',
                                                            'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                                            'instrument_name': 'dmm',
                                                            'inter_delay': 0,
                                                            'label': 'IDN',
                                                            'name': 'IDN',
                                                            'post_delay': 0,
                                                            'raw_value': {'firmware': None,
                                                                          'model': 'dmm',
                                                                          'serial': None,
                                                                          'vendor': None},
                                                            'ts': '2020-03-24 '
                                                                  '18:47:43',
                                                            'unit': '',
                                                            'vals': '<Anything>',
                                                            'value': {'firmware': None,
                                                                      'model': 'dmm',
                                                                      'serial': None,
                                                                      'vendor': None}},
                                                    'v1': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                                           'full_name': 'dmm_v1',
                                                           'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                                           'instrument_name': 'dmm',
                                                           'inter_delay': 0,
                                                           'label': 'Gate v1',
                                                           'name': 'v1',
                                                           'post_delay': 0,
                                                           'raw_value': 0,
                                                           'ts': '2020-03-24 '
                                                                 '18:47:43',
                                                           'unit': 'V',
                                                           'vals': '<Numbers '
                                                                   '-800<=v<=400>',
                                                           'value': 0},
                                                    'v2': {'__class__': 'qcodes.instrument.parameter.Parameter',
                                                           'full_name': 'dmm_v2',
                                                           'instrument': 'qcodes.instrument_drivers.mock_instruments.DummyInstrument',
                                                           'instrument_name': 'dmm',
                                                           'inter_delay': 0,
                                                           'label': 'Gate v2',
                                                           'name': 'v2',
                                                           'post_delay': 0,
                                                           'raw_value': 0,
                                                           'ts': '2020-03-24 '
                                                                 '18:47:43',
                                                           'unit': 'V',
                                                           'vals': '<Numbers '
                                                                   '-800<=v<=400>',
                                                           'value': 0}},
                                     'submodules': {}}},
             'parameters': {}}}
[ ]: