Skip to content

Commit

Permalink
More work on measurements
Browse files Browse the repository at this point in the history
  • Loading branch information
nulinspiratie committed Dec 23, 2016
1 parent a7073ef commit 35eaa16
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 19 deletions.
14 changes: 12 additions & 2 deletions silq/measurements/measurement_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import qcodes as qc
from qcodes.data import hdf5_format, io

from silq.tools import data_tools, general_tools
from silq.tools import data_tools
from silq.tools.parameter_tools import create_set_vals
from silq.tools.general_tools import SettingsClass, get_truth, \
clear_single_settings, JSONEncoder

Expand Down Expand Up @@ -127,7 +128,7 @@ def __init__(self, name=None, condition_sets=None,
self.steps = steps
self.points = points
self.set_parameters = set_parameters
self.set_vals = set_vals
self._set_vals = set_vals
self.condition_sets = [] if condition_sets is None else condition_sets
self.dataset = None
self.satisfied_arr = None
Expand Down Expand Up @@ -174,6 +175,15 @@ def load_from_dict(cls, load_dict):
def disk_io(self):
return io.DiskIO(data_tools.get_latest_data_folder())

@property
def set_vals(self):
if self._set_vals is not None:
return self._set_vals
elif self.points is not None:
return create_set_vals(set_parameters=self.set_parameters,
steps=self.steps, points=self.points,
silent=True)

def check_condition_sets(self, *condition_sets):
condition_sets = condition_sets + self.condition_sets
for condition_set in condition_sets:
Expand Down
49 changes: 32 additions & 17 deletions silq/tools/parameter_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
properties_config = qc.config['user'].get('properties', {})


def create_set_vals(mode, steps=None, step_vals=None, points=9,
def create_set_vals(num_parameters=None, steps=None, step_vals=None, points=9,
set_parameters=None, silent=False):
def calculate_step(min_step, max_step, percentage, round_vals=True):
val = min_step * (max_step / min_step) ** (percentage / 100)
Expand All @@ -15,7 +15,7 @@ def calculate_step(min_step, max_step, percentage, round_vals=True):

return val

def determine_step(k, set_parameter):
def determine_step(set_parameter, k=None):
if steps is not None:
if hasattr(steps, "__iter__"):
step_percentage = steps[k]
Expand All @@ -31,27 +31,42 @@ def determine_step(k, set_parameter):
step = step_vals
return step

def create_vals(set_parameter, k=None):
if hasattr(points, "__iter__"):
pts = points[k]
else:
pts = [points] * len(set_parameters)

step = determine_step(set_parameter, k)
center_val = set_parameter()
min_val = center_val - step * (pts - 1) / 2
max_val = center_val + step * (pts - 1) / 2
vals = list(np.linspace(min_val, max_val, pts))

if not silent:
print('{param}[{min_val}:{max_val}:{step}]'.format(
param=set_parameter, min_val=min_val, max_val=max_val,
step=step))

return vals

if set_parameters is None:
station = qc.station.Station.default
set_parameters_names = properties_config['set_parameters'][mode]
set_parameters_names = \
properties_config['set_parameters'][num_parameters]
set_parameters = [getattr(station, name) for name in
set_parameters_names]
else:
num_parameters = len(set_parameters)

set_vals = []
if mode == '2D':
if not hasattr(points, "__iter__"):
points = [points] * len(set_parameters)
if num_parameters == 0:
pass
elif num_parameters == 1:
vals = create_vals(set_parameters[0])
set_vals = [set_parameters[0][vals]]
elif num_parameters == 2:
for k, set_parameter in enumerate(set_parameters):
step = determine_step(k, set_parameter)
center_val = set_parameter()
min_val = center_val - step * (points[k] - 1) / 2
max_val = center_val + step * (points[k] - 1) / 2
vals = list(np.linspace(min_val, max_val, points[k]))
vals = create_vals(set_parameter, k)
set_vals.append(set_parameter[vals])

if not silent:
print('{param}[{min_val}:{max_val}:{step}]'.format(
param=set_parameter, min_val=min_val, max_val=max_val,
step=step))
return set_vals

0 comments on commit 35eaa16

Please sign in to comment.