Skip to content

Commit 6dccded

Browse files
jenshnielsenWilliamHPNielsen
authored andcommitted
Don't snapshot array and multiparameters per default (#800)
* 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
1 parent 0365f29 commit 6dccded

8 files changed

Lines changed: 55 additions & 49 deletions

File tree

qcodes/instrument/parameter.py

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -886,15 +886,28 @@ class ArrayParameter(_BaseParameter):
886886
snapshot_get (bool): Prevent any update to the parameter, for example
887887
if it takes too long to update. Default True.
888888
889+
snapshot_value: Should the value of the parameter be stored in the
890+
snapshot. Unlike Parameter this defaults to False as
891+
ArrayParameters are potentially huge.
892+
889893
metadata (Optional[dict]): extra information to include with the
890894
JSON snapshot of the parameter
891895
"""
892896

893-
def __init__(self, name, shape, instrument=None,
894-
label=None, unit=None,
895-
setpoints=None, setpoint_names=None, setpoint_labels=None,
896-
setpoint_units=None, docstring=None,
897-
snapshot_get=True, snapshot_value=True, metadata=None):
897+
def __init__(self,
898+
name: str,
899+
shape: Sequence[int],
900+
instrument: Optional['Instrument']=None,
901+
label: Optional[str]=None,
902+
unit: Optional[str]=None,
903+
setpoints: Optional[Sequence]=None,
904+
setpoint_names: Optional[Sequence[str]]=None,
905+
setpoint_labels: Optional[Sequence[str]]=None,
906+
setpoint_units: Optional[Sequence[str]]=None,
907+
docstring: Optional[str]=None,
908+
snapshot_get: bool=True,
909+
snapshot_value: bool=False,
910+
metadata: bool=None):
898911
super().__init__(name, instrument, snapshot_get, metadata,
899912
snapshot_value=snapshot_value)
900913

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

1055-
def __init__(self, name, names, shapes, instrument=None,
1056-
labels=None, units=None,
1057-
setpoints=None, setpoint_names=None, setpoint_labels=None,
1058-
setpoint_units=None, docstring=None,
1059-
snapshot_get=True, snapshot_value=True, metadata=None):
1072+
def __init__(self,
1073+
name: str,
1074+
names: Sequence[str],
1075+
shapes: Sequence[Sequence[Optional[int]]],
1076+
instrument: Optional['Instrument']=None,
1077+
labels: Optional[Sequence[str]]=None,
1078+
units: Optional[Sequence[str]]=None,
1079+
setpoints: Optional[Sequence[Sequence]]=None,
1080+
setpoint_names: Optional[Sequence[Sequence[str]]]=None,
1081+
setpoint_labels: Optional[Sequence[Sequence[str]]]=None,
1082+
setpoint_units: Optional[Sequence[Sequence[str]]]=None,
1083+
docstring: str=None,
1084+
snapshot_get: bool=True,
1085+
snapshot_value: bool=False,
1086+
metadata: Optional[dict]=None):
10601087
super().__init__(name, instrument, snapshot_get, metadata,
10611088
snapshot_value=snapshot_value)
10621089

qcodes/instrument_drivers/Keysight/Infiniium.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,6 @@ def __init__(self, parent, name, channel):
207207
parameter_class=RawTrace
208208
)
209209

210-
def snapshot_base(self, update: bool=False) -> Dict:
211-
skip_update = ['trace']
212-
snap = super().snapshot_base(update=update,
213-
params_to_skip_update=skip_update)
214-
return snap
215-
216-
217210
class Infiniium(VisaInstrument):
218211
"""
219212
This is the QCoDeS driver for the Keysight Infiniium oscilloscopes from the

qcodes/instrument_drivers/ithaco/Ithaco_1211.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ class CurrentParameter(MultiParameter):
3030
def __init__(self, measured_param, c_amp_ins, name='curr'):
3131
p_name = measured_param.name
3232

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

3536
self._measured_param = measured_param
3637
self._instrument = c_amp_ins

qcodes/instrument_drivers/oxford/mercuryiPS.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class MercuryiPSArray(MultiParameter):
1313
"""
1414
def __init__(self, name, instrument, names, units, get_cmd, set_cmd, **kwargs):
1515
shapes = tuple(() for i in names)
16-
super().__init__(name, names, shapes, **kwargs)
16+
super().__init__(name, names, shapes, snapshot_value=True, **kwargs)
1717
self._get = get_cmd
1818
self._set = set_cmd
1919
self._instrument = instrument

qcodes/instrument_drivers/rohde_schwarz/ZNB.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ def get(self):
8383
mag_array.append(abs(complex_num))
8484
phase_array.append(phase(complex_num))
8585
self._instrument._parent.cont_meas_on()
86-
self._save_val((mag_array, phase_array))
8786
return mag_array, phase_array
8887

8988

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

156154

@@ -345,13 +343,6 @@ def _set_center(self, val):
345343
self.trace.set_sweep(start, stop, npts)
346344
self.trace_mag_phase.set_sweep(start, stop, npts)
347345

348-
def snapshot_base(self, update=False, params_to_skip_update=None):
349-
if params_to_skip_update is None:
350-
params_to_skip_update = ('trace', 'trace_mag_phase')
351-
snap = super().snapshot_base(update=update,
352-
params_to_skip_update=params_to_skip_update)
353-
return snap
354-
355346
class ZNB(VisaInstrument):
356347
"""
357348
qcodes driver for the Rohde & Schwarz ZNB8 and ZNB20

qcodes/instrument_drivers/stanford_research/SR560.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ class VoltageParameter(MultiParameter):
2929
name (str): the name of the current output. Default 'curr'.
3030
Also used as the name of the whole parameter.
3131
"""
32-
def __init__(self, measured_param, v_amp_ins, name='volt'):
32+
def __init__(self, measured_param, v_amp_ins, name='volt',
33+
snapshot_value=True):
3334
p_name = measured_param.name
3435

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

qcodes/instrument_drivers/tektronix/Keithley_2600_channels.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,6 @@ def __init__(self, parent: Instrument, name: str, channel: str) -> None:
194194

195195
self.channel = channel
196196

197-
# We need to avoid updating the sweep parameter
198-
def snapshot_base(self, update: bool=False) -> Dict:
199-
params_to_skip_update = ['fastsweep']
200-
dct = super().snapshot_base(update=update,
201-
params_to_skip_update=params_to_skip_update)
202-
return dct
203-
204197
def reset(self):
205198
"""
206199
Reset instrument to factory defaults.

qcodes/tests/test_parameter.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -287,19 +287,18 @@ def test_default_attributes(self):
287287

288288
self.assertEqual(p._get_count, 0)
289289
snap = p.snapshot(update=True)
290-
self.assertEqual(p._get_count, 1)
290+
self.assertEqual(p._get_count, 0)
291291
snap_expected = {
292292
'name': name,
293293
'label': name,
294-
'unit': '',
295-
'value': [[1, 2, 3], [4, 5, 6]]
294+
'unit': ''
296295
}
297296
for k, v in snap_expected.items():
298297
self.assertEqual(snap[k], v)
299298

300299
self.assertIn(name, p.__doc__)
301300

302-
def test_explicit_attrbutes(self):
301+
def test_explicit_attributes(self):
303302
name = 'tiny_array'
304303
shape = (2,)
305304
label = 'it takes two to tango'
@@ -313,7 +312,7 @@ def test_explicit_attrbutes(self):
313312
setpoints=setpoints,
314313
setpoint_names=setpoint_names,
315314
setpoint_labels=setpoint_labels,
316-
docstring=docstring, snapshot_get=False,
315+
docstring=docstring, snapshot_value=True,
317316
metadata=metadata)
318317

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

327326
self.assertEqual(p._get_count, 0)
328327
snap = p.snapshot(update=True)
329-
self.assertEqual(p._get_count, 0)
328+
self.assertEqual(p._get_count, 1)
330329
snap_expected = {
331330
'name': name,
332331
'label': label,
333332
'unit': unit,
334333
'setpoint_names': setpoint_names,
335334
'setpoint_labels': setpoint_labels,
336-
'metadata': metadata
335+
'metadata': metadata,
336+
'value': [6, 7]
337337
}
338338
for k, v in snap_expected.items():
339339
self.assertEqual(snap[k], v)
@@ -423,13 +423,12 @@ def test_default_attributes(self):
423423

424424
self.assertEqual(p._get_count, 0)
425425
snap = p.snapshot(update=True)
426-
self.assertEqual(p._get_count, 1)
426+
self.assertEqual(p._get_count, 0)
427427
snap_expected = {
428428
'name': name,
429429
'names': names,
430430
'labels': names,
431-
'units': [''] * 3,
432-
'value': [0, [1, 2, 3], [[4, 5], [6, 7]]]
431+
'units': [''] * 3
433432
}
434433
for k, v in snap_expected.items():
435434
self.assertEqual(snap[k], v)
@@ -456,7 +455,7 @@ def test_explicit_attributes(self):
456455
setpoints=setpoints,
457456
setpoint_names=setpoint_names,
458457
setpoint_labels=setpoint_labels,
459-
docstring=docstring, snapshot_get=False,
458+
docstring=docstring, snapshot_value=True,
460459
metadata=metadata)
461460

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

472471
self.assertEqual(p._get_count, 0)
473472
snap = p.snapshot(update=True)
474-
self.assertEqual(p._get_count, 0)
473+
self.assertEqual(p._get_count, 1)
475474
snap_expected = {
476475
'name': name,
477476
'names': names,
478477
'labels': labels,
479478
'units': units,
480479
'setpoint_names': setpoint_names,
481480
'setpoint_labels': setpoint_labels,
482-
'metadata': metadata
481+
'metadata': metadata,
482+
'value': [0, [1, 2, 3], [[4, 5], [6, 7]]]
483483
}
484484
for k, v in snap_expected.items():
485485
self.assertEqual(snap[k], v)

0 commit comments

Comments
 (0)