Skip to content
Snippets Groups Projects
Commit e880ee61 authored by Sander de Snoo's avatar Sander de Snoo
Browse files

Added example with parameter sweep and qcodes DataSet

parent db1fc9b7
No related branches found
No related tags found
No related merge requests found
from pulse_lib.tests.hw_schedule_mock import HardwareScheduleMock
import pulse_lib.segments.utility.looping as lp
from qcodes import Station
from qcodes.data.data_set import DataSet
from qcodes.data.io import DiskIO
from qcodes.measure import Measure
from qcodes.loops import Loop
from qcodes.actions import Task
from configuration.small import init_hardware, init_pulselib
#from utils.plot import plot_awgs
from utils.dummy_param import DummyParam
def upload_play(seq):
seq.upload()
seq.play()
# plot_awgs(awgs)
# TODO: add as qc_utility to pulselib.
def qc_run(name, seq, *params):
loop = None
for sp in seq.params:
if loop is None:
loop = Loop(sp[sp.values])
else:
loop = loop.loop((sp[sp.values]))
play_task = Task(upload_play, seq)
if loop is not None:
m = loop.each(play_task, *params)
else:
m = Measure(play_task, *params)
ds = m.run(loc_record={'name':name})
return ds
path = 'C:/Projects/test/data'
io = DiskIO(path)
DataSet.default_io = io
station = Station()
# create "AWG1"
awgs = init_hardware()
# create channels P1, P2
p = init_pulselib(awgs)
v_param = lp.linspace(0, 200, 5, axis=0, unit = "mV", name = "vPulse")
t_wait = lp.linspace(20, 100, 3, axis=1, unit = "mV", name = "t_wait")
seg1 = p.mk_segment()
seg2 = p.mk_segment()
seg1.P1.add_ramp_ss(0, 100, 0, v_param)
seg1.P1.add_block(100, 200, v_param)
seg2.P2.add_block(0, 100, 200)
seg2.P2.wait(t_wait)
seg2.reset_time()
seg2.add_HVI_marker('dig_trigger_1', t_off=50)
seg2.P1.add_block(0, 100, v_param)
# create sequence
seq = p.mk_sequence([seg1,seg2])
seq.set_hw_schedule(HardwareScheduleMock())
dig_param = DummyParam('dummy', 200, 10)
qc_run('SweepDemo', seq, dig_param)
import numpy as np
from qcodes import MultiParameter
class DummyParam(MultiParameter):
def __init__(self, name, t_measure, n_repeat, ch=[0,1], sample_rate=1e9):
self._t_measure = t_measure
self._ch = ch
self._sample_rate = sample_rate
self._n_rep = n_repeat
self._timetrace = tuple(np.arange(0, t_measure, 1e9/sample_rate))
self._index = tuple(range(0, n_repeat))
self._n_samples = len(self._timetrace)
names = tuple()
shapes = tuple()
setpoints = tuple()
setpoint_names = tuple()
setpoint_units = tuple()
for (i,channel) in enumerate(ch):
names += (f't_trace{i+1}',)
shapes += ((n_repeat,self._n_samples),)
setpoints += ((self._index, (self._timetrace,)*self._n_rep),)
setpoint_names += (('repetition','t'),)
setpoint_units += (('#','ns'),)
super().__init__(name=name, names=names, shapes=shapes,
units=('mV',)*len(ch),
setpoints=setpoints, setpoint_names=setpoint_names,
setpoint_labels=setpoint_names,
setpoint_units=setpoint_units)
def snapshot_base(self, update=True, params_to_skip_update=None):
snapshot = super().snapshot_base(update, params_to_skip_update)
snapshot['t_measure'] = self._t_measure
snapshot['sample_rate'] = self._sample_rate
return snapshot
def get_raw(self):
return_data = list()
for ch in self._ch:
apex = int(self._n_samples / (ch+2))
data = np.concatenate([np.linspace(0, 1, apex),
np.linspace(1, 0, self._n_samples-apex)])
result = np.zeros((self._n_rep, self._n_samples))
result += data
return_data.append(result)
return return_data
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment