def test_get_data_by_id_order(dataset): """ Test that the added values of setpoints end up associated with the correct setpoint parameter, irrespective of the ordering of those setpoint parameters """ indepA = ParamSpecBase('indep1', "numeric") indepB = ParamSpecBase('indep2', "numeric") depAB = ParamSpecBase('depAB', "numeric") depBA = ParamSpecBase('depBA', "numeric") idps = InterDependencies_( dependencies={depAB: (indepA, indepB), depBA: (indepB, indepA)}) dataset.set_interdependencies(idps) dataset.mark_started() dataset.add_result({'depAB': 12, 'indep2': 2, 'indep1': 1}) dataset.add_result({'depBA': 21, 'indep2': 2, 'indep1': 1}) dataset.mark_completed() data = get_data_by_id(dataset.run_id) data_dict = {el['name']: el['data'] for el in data[0]} assert data_dict['indep1'] == 1 assert data_dict['indep2'] == 2 data_dict = {el['name']: el['data'] for el in data[1]} assert data_dict['indep1'] == 1 assert data_dict['indep2'] == 2
def standalone_parameters_dataset(dataset): n_params = 3 n_rows = 10**3 params_indep = [ ParamSpecBase(f'param_{i}', 'numeric', label=f'param_{i}', unit='V') for i in range(n_params) ] param_dep = ParamSpecBase(f'param_{n_params}', 'numeric', label=f'param_{n_params}', unit='Ohm') params_all = params_indep + [param_dep] idps = InterDependencies_( dependencies={param_dep: tuple(params_indep[0:1])}, standalones=tuple(params_indep[1:])) dataset.set_interdependencies(idps) dataset.mark_started() dataset.add_results([{ p.name: np.int(n_rows * 10 * pn + i) for pn, p in enumerate(params_all) } for i in range(n_rows)]) dataset.mark_completed() yield dataset
def test_write_data_to_text_file_length_exception(): dataset = new_data_set("dataset") xparam = ParamSpecBase("x", 'numeric') yparam = ParamSpecBase("y", 'numeric') zparam = ParamSpecBase("z", 'numeric') idps = InterDependencies_(dependencies={ yparam: (xparam, ), zparam: (xparam, ) }) dataset.set_interdependencies(idps) dataset.mark_started() results1 = [{'x': 0, 'y': 1}] results2 = [{'x': 0, 'z': 2}] results3 = [{'x': 1, 'z': 3}] dataset.add_results(results1) dataset.add_results(results2) dataset.add_results(results3) dataset.mark_completed() with tempfile.TemporaryDirectory() as temp_dir, pytest.raises( Exception, match='different length'): dataset.write_data_to_text_file(path=temp_dir, single_file=True, single_file_name='yz')
def test_get_data_by_id_order(dataset): """ Test if the values of the setpoints/dependent parameters is dependent on the order of the `depends_on` value. This sounds far fetch but was actually the case before #1250. """ indepA = ParamSpec('indep1', "numeric") indepB = ParamSpec('indep2', "numeric") depAB = ParamSpec('depAB', "numeric", depends_on=[indepA, indepB]) depBA = ParamSpec('depBA', "numeric", depends_on=[indepB, indepA]) dataset.add_parameter(indepA) dataset.add_parameter(indepB) dataset.add_parameter(depAB) dataset.add_parameter(depBA) dataset.mark_started() dataset.add_result({'depAB': 12, 'indep2': 2, 'indep1': 1}) dataset.add_result({'depBA': 21, 'indep2': 2, 'indep1': 1}) dataset.mark_completed() data = get_data_by_id(dataset.run_id) data_dict = {el['name']: el['data'] for el in data[0]} assert data_dict['indep1'] == 1 assert data_dict['indep2'] == 2 data_dict = {el['name']: el['data'] for el in data[1]} assert data_dict['indep1'] == 1 assert data_dict['indep2'] == 2
def test_write_data_to_text_file_save(): dataset = new_data_set("dataset") xparam = ParamSpecBase("x", 'numeric') yparam = ParamSpecBase("y", 'numeric') idps = InterDependencies_(dependencies={yparam: (xparam, )}) dataset.set_interdependencies(idps) dataset.mark_started() results = [{'x': 0, 'y': 1}] dataset.add_results(results) dataset.mark_completed() with tempfile.TemporaryDirectory() as temp_dir: dataset.write_data_to_text_file(path=temp_dir) assert os.listdir(temp_dir) == ['y.dat'] with open(temp_dir + "//y.dat") as f: assert f.readlines() == ['0\t1\n']
def test_write_data_to_text_file_save(tmp_path_factory): dataset = new_data_set("dataset") xparam = ParamSpecBase("x", 'numeric') yparam = ParamSpecBase("y", 'numeric') idps = InterDependencies_(dependencies={yparam: (xparam, )}) dataset.set_interdependencies(idps) dataset.mark_started() results = [{'x': 0, 'y': 1}] dataset.add_results(results) dataset.mark_completed() path = str(tmp_path_factory.mktemp("write_data_to_text_file_save")) dataset.write_data_to_text_file(path=path) assert os.listdir(path) == ['y.dat'] with open(os.path.join(path, "y.dat")) as f: assert f.readlines() == ['0\t1\n']
def scalar_dataset_with_nulls(dataset): """ A very simple dataset. A scalar is varied, and two parameters are measured one by one """ sp = ParamSpec('setpoint', 'numeric') val1 = ParamSpec('first_value', 'numeric', depends_on=(sp,)) val2 = ParamSpec('second_value', 'numeric', depends_on=(sp,)) for p in [sp, val1, val2]: dataset.add_parameter(p) dataset.mark_started() dataset.add_results([{sp.name: 0, val1.name: 1}, {sp.name: 0, val2.name: 2}]) dataset.mark_completed() yield dataset
def scalar_dataset(dataset): n_params = 3 n_rows = 10**3 params_indep = [ParamSpec(f'param_{i}', 'numeric', label=f'param_{i}', unit='V') for i in range(n_params)] params = params_indep + [ParamSpec(f'param_{n_params}', 'numeric', label=f'param_{n_params}', unit='Ohm', depends_on=params_indep)] for p in params: dataset.add_parameter(p) dataset.mark_started() dataset.add_results([{p.name: np.int(n_rows*10*pn+i) for pn, p in enumerate(params)} for i in range(n_rows)]) dataset.mark_completed() yield dataset
def test_write_data_to_text_file_name_exception(tmp_path): dataset = new_data_set("dataset") xparam = ParamSpecBase("x", 'numeric') yparam = ParamSpecBase("y", 'numeric') zparam = ParamSpecBase("z", 'numeric') idps = InterDependencies_(dependencies={ yparam: (xparam, ), zparam: (xparam, ) }) dataset.set_interdependencies(idps) dataset.mark_started() results = [{'x': 0, 'y': 1, 'z': 2}] dataset.add_results(results) dataset.mark_completed() temp_dir = str(tmp_path) with pytest.raises(Exception, match='desired file name'): dataset.write_data_to_text_file(path=temp_dir, single_file=True, single_file_name=None)
def scalar_dataset_with_nulls(dataset): """ A very simple dataset. A scalar is varied, and two parameters are measured one by one """ sp = ParamSpecBase('setpoint', 'numeric') val1 = ParamSpecBase('first_value', 'numeric') val2 = ParamSpecBase('second_value', 'numeric') idps = InterDependencies_(dependencies={val1: (sp, ), val2: (sp, )}) dataset.set_interdependencies(idps) dataset.mark_started() dataset.add_results([{ sp.name: 0, val1.name: 1 }, { sp.name: 0, val2.name: 2 }]) dataset.mark_completed() yield dataset