Skip to content

Commit

Permalink
Don't snapshot array and multiparameters per default (#800)
Browse files Browse the repository at this point in the history
* Change default value of snapshot_value for array and Multiparameters

This is an API Change but mostly restores the behaviour \n prior to the merge of the parameter improvements

* for these drivers we really want to store the multiparameters

* ZNB this saveval is now redundant

* These skip updates are now redundant

As we default to skipping array and multiparameters

* Update tests to match new behaviour

* move expected result data
  • Loading branch information
jenshnielsen authored and WilliamHPNielsen committed Oct 20, 2017
1 parent 0365f29 commit 6dccded
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 49 deletions.
47 changes: 37 additions & 10 deletions qcodes/instrument/parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -886,15 +886,28 @@ class ArrayParameter(_BaseParameter):
snapshot_get (bool): Prevent any update to the parameter, for example
if it takes too long to update. Default True.
snapshot_value: Should the value of the parameter be stored in the
snapshot. Unlike Parameter this defaults to False as
ArrayParameters are potentially huge.
metadata (Optional[dict]): extra information to include with the
JSON snapshot of the parameter
"""

def __init__(self, name, shape, instrument=None,
label=None, unit=None,
setpoints=None, setpoint_names=None, setpoint_labels=None,
setpoint_units=None, docstring=None,
snapshot_get=True, snapshot_value=True, metadata=None):
def __init__(self,
name: str,
shape: Sequence[int],
instrument: Optional['Instrument']=None,
label: Optional[str]=None,
unit: Optional[str]=None,
setpoints: Optional[Sequence]=None,
setpoint_names: Optional[Sequence[str]]=None,
setpoint_labels: Optional[Sequence[str]]=None,
setpoint_units: Optional[Sequence[str]]=None,
docstring: Optional[str]=None,
snapshot_get: bool=True,
snapshot_value: bool=False,
metadata: bool=None):
super().__init__(name, instrument, snapshot_get, metadata,
snapshot_value=snapshot_value)

Expand Down Expand Up @@ -1048,15 +1061,29 @@ class MultiParameter(_BaseParameter):
snapshot_get (bool): Prevent any update to the parameter, for example
if it takes too long to update. Default True.
snapshot_value: Should the value of the parameter be stored in the
snapshot. Unlike Parameter this defaults to False as
MultiParameters are potentially huge.
metadata (Optional[dict]): extra information to include with the
JSON snapshot of the parameter
"""

def __init__(self, name, names, shapes, instrument=None,
labels=None, units=None,
setpoints=None, setpoint_names=None, setpoint_labels=None,
setpoint_units=None, docstring=None,
snapshot_get=True, snapshot_value=True, metadata=None):
def __init__(self,
name: str,
names: Sequence[str],
shapes: Sequence[Sequence[Optional[int]]],
instrument: Optional['Instrument']=None,
labels: Optional[Sequence[str]]=None,
units: Optional[Sequence[str]]=None,
setpoints: Optional[Sequence[Sequence]]=None,
setpoint_names: Optional[Sequence[Sequence[str]]]=None,
setpoint_labels: Optional[Sequence[Sequence[str]]]=None,
setpoint_units: Optional[Sequence[Sequence[str]]]=None,
docstring: str=None,
snapshot_get: bool=True,
snapshot_value: bool=False,
metadata: Optional[dict]=None):
super().__init__(name, instrument, snapshot_get, metadata,
snapshot_value=snapshot_value)

Expand Down
7 changes: 0 additions & 7 deletions qcodes/instrument_drivers/Keysight/Infiniium.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,13 +207,6 @@ def __init__(self, parent, name, channel):
parameter_class=RawTrace
)

def snapshot_base(self, update: bool=False) -> Dict:
skip_update = ['trace']
snap = super().snapshot_base(update=update,
params_to_skip_update=skip_update)
return snap


class Infiniium(VisaInstrument):
"""
This is the QCoDeS driver for the Keysight Infiniium oscilloscopes from the
Expand Down
3 changes: 2 additions & 1 deletion qcodes/instrument_drivers/ithaco/Ithaco_1211.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class CurrentParameter(MultiParameter):
def __init__(self, measured_param, c_amp_ins, name='curr'):
p_name = measured_param.name

super().__init__(name=name, names=(p_name+'_raw', name), shapes=((), ()))
super().__init__(name=name, names=(p_name+'_raw', name), shapes=((), ()),
snapshot_value=True)

self._measured_param = measured_param
self._instrument = c_amp_ins
Expand Down
2 changes: 1 addition & 1 deletion qcodes/instrument_drivers/oxford/mercuryiPS.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class MercuryiPSArray(MultiParameter):
"""
def __init__(self, name, instrument, names, units, get_cmd, set_cmd, **kwargs):
shapes = tuple(() for i in names)
super().__init__(name, names, shapes, **kwargs)
super().__init__(name, names, shapes, snapshot_value=True, **kwargs)
self._get = get_cmd
self._set = set_cmd
self._instrument = instrument
Expand Down
9 changes: 0 additions & 9 deletions qcodes/instrument_drivers/rohde_schwarz/ZNB.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ def get(self):
mag_array.append(abs(complex_num))
phase_array.append(phase(complex_num))
self._instrument._parent.cont_meas_on()
self._save_val((mag_array, phase_array))
return mag_array, phase_array


Expand Down Expand Up @@ -150,7 +149,6 @@ def get(self):
"values. Will discard the imaginary part.")
data = data[0::2] + 1j*data[1::2]
self._instrument._parent.cont_meas_on()
self._save_val(data)
return data


Expand Down Expand Up @@ -345,13 +343,6 @@ def _set_center(self, val):
self.trace.set_sweep(start, stop, npts)
self.trace_mag_phase.set_sweep(start, stop, npts)

def snapshot_base(self, update=False, params_to_skip_update=None):
if params_to_skip_update is None:
params_to_skip_update = ('trace', 'trace_mag_phase')
snap = super().snapshot_base(update=update,
params_to_skip_update=params_to_skip_update)
return snap

class ZNB(VisaInstrument):
"""
qcodes driver for the Rohde & Schwarz ZNB8 and ZNB20
Expand Down
3 changes: 2 additions & 1 deletion qcodes/instrument_drivers/stanford_research/SR560.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ class VoltageParameter(MultiParameter):
name (str): the name of the current output. Default 'curr'.
Also used as the name of the whole parameter.
"""
def __init__(self, measured_param, v_amp_ins, name='volt'):
def __init__(self, measured_param, v_amp_ins, name='volt',
snapshot_value=True):
p_name = measured_param.name

super().__init__(name=name, names=(p_name+'_raw', name), shapes=((), ()))
Expand Down
7 changes: 0 additions & 7 deletions qcodes/instrument_drivers/tektronix/Keithley_2600_channels.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,6 @@ def __init__(self, parent: Instrument, name: str, channel: str) -> None:

self.channel = channel

# We need to avoid updating the sweep parameter
def snapshot_base(self, update: bool=False) -> Dict:
params_to_skip_update = ['fastsweep']
dct = super().snapshot_base(update=update,
params_to_skip_update=params_to_skip_update)
return dct

def reset(self):
"""
Reset instrument to factory defaults.
Expand Down
26 changes: 13 additions & 13 deletions qcodes/tests/test_parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,19 +287,18 @@ def test_default_attributes(self):

self.assertEqual(p._get_count, 0)
snap = p.snapshot(update=True)
self.assertEqual(p._get_count, 1)
self.assertEqual(p._get_count, 0)
snap_expected = {
'name': name,
'label': name,
'unit': '',
'value': [[1, 2, 3], [4, 5, 6]]
'unit': ''
}
for k, v in snap_expected.items():
self.assertEqual(snap[k], v)

self.assertIn(name, p.__doc__)

def test_explicit_attrbutes(self):
def test_explicit_attributes(self):
name = 'tiny_array'
shape = (2,)
label = 'it takes two to tango'
Expand All @@ -313,7 +312,7 @@ def test_explicit_attrbutes(self):
setpoints=setpoints,
setpoint_names=setpoint_names,
setpoint_labels=setpoint_labels,
docstring=docstring, snapshot_get=False,
docstring=docstring, snapshot_value=True,
metadata=metadata)

self.assertEqual(p.name, name)
Expand All @@ -326,14 +325,15 @@ def test_explicit_attrbutes(self):

self.assertEqual(p._get_count, 0)
snap = p.snapshot(update=True)
self.assertEqual(p._get_count, 0)
self.assertEqual(p._get_count, 1)
snap_expected = {
'name': name,
'label': label,
'unit': unit,
'setpoint_names': setpoint_names,
'setpoint_labels': setpoint_labels,
'metadata': metadata
'metadata': metadata,
'value': [6, 7]
}
for k, v in snap_expected.items():
self.assertEqual(snap[k], v)
Expand Down Expand Up @@ -423,13 +423,12 @@ def test_default_attributes(self):

self.assertEqual(p._get_count, 0)
snap = p.snapshot(update=True)
self.assertEqual(p._get_count, 1)
self.assertEqual(p._get_count, 0)
snap_expected = {
'name': name,
'names': names,
'labels': names,
'units': [''] * 3,
'value': [0, [1, 2, 3], [[4, 5], [6, 7]]]
'units': [''] * 3
}
for k, v in snap_expected.items():
self.assertEqual(snap[k], v)
Expand All @@ -456,7 +455,7 @@ def test_explicit_attributes(self):
setpoints=setpoints,
setpoint_names=setpoint_names,
setpoint_labels=setpoint_labels,
docstring=docstring, snapshot_get=False,
docstring=docstring, snapshot_value=True,
metadata=metadata)

self.assertEqual(p.name, name)
Expand All @@ -471,15 +470,16 @@ def test_explicit_attributes(self):

self.assertEqual(p._get_count, 0)
snap = p.snapshot(update=True)
self.assertEqual(p._get_count, 0)
self.assertEqual(p._get_count, 1)
snap_expected = {
'name': name,
'names': names,
'labels': labels,
'units': units,
'setpoint_names': setpoint_names,
'setpoint_labels': setpoint_labels,
'metadata': metadata
'metadata': metadata,
'value': [0, [1, 2, 3], [[4, 5], [6, 7]]]
}
for k, v in snap_expected.items():
self.assertEqual(snap[k], v)
Expand Down

0 comments on commit 6dccded

Please sign in to comment.