|
3 | 3 | import re |
4 | 4 | import shutil |
5 | 5 | from pathlib import Path |
| 6 | +from typing import TYPE_CHECKING |
6 | 7 |
|
7 | 8 | import hypothesis.strategies as hst |
8 | 9 | import numpy as np |
9 | 10 | import pytest |
10 | 11 | import xarray as xr |
| 12 | +from deepdiff import DeepDiff # type: ignore[import-untyped] |
11 | 13 | from hypothesis import HealthCheck, given, settings |
12 | 14 | from numpy.testing import assert_almost_equal |
13 | 15 |
|
14 | 16 | import qcodes |
15 | | -from qcodes.dataset import load_by_id, load_by_run_spec |
| 17 | +from qcodes.dataset import Measurement, load_by_id, load_by_run_spec |
16 | 18 | from qcodes.dataset.data_set_in_memory import DataSetInMem, load_from_file |
17 | 19 | from qcodes.dataset.data_set_protocol import DataSetType |
18 | 20 | from qcodes.dataset.descriptions.dependencies import InterDependencies_ |
19 | 21 | from qcodes.dataset.descriptions.param_spec import ParamSpecBase |
20 | 22 | from qcodes.dataset.sqlite.connection import AtomicConnection, atomic_transaction |
| 23 | +from qcodes.parameters import ManualParameter, Parameter |
21 | 24 | from qcodes.station import Station |
22 | 25 |
|
| 26 | +if TYPE_CHECKING: |
| 27 | + from qcodes.dataset.experiment_container import Experiment |
| 28 | + |
23 | 29 |
|
24 | 30 | def test_dataset_in_memory_reload_from_db( |
25 | 31 | meas_with_registered_param, DMM, DAC, tmp_path |
@@ -676,3 +682,32 @@ def test_load_from_db_dataset_moved( |
676 | 682 | not in new_xr_ds.attrs |
677 | 683 | ) |
678 | 684 | assert new_xr_ds.attrs["metadata_added_after_set_new_netcdf_location"] == 6969 |
| 685 | + |
| 686 | + |
| 687 | +def test_dataset_in_mem_with_inferred_parameters(experiment: "Experiment") -> None: |
| 688 | + inferred1 = ManualParameter("inferred1", initial_value=0) |
| 689 | + inferred2 = ManualParameter("inferred2", initial_value=0) |
| 690 | + control1 = ManualParameter("control1", initial_value=0) |
| 691 | + control2 = ManualParameter("control2", initial_value=0) |
| 692 | + dependent = Parameter("dependent", get_cmd=lambda: control1(), set_cmd=False) |
| 693 | + meas = Measurement(exp=experiment, name="via Measurement") |
| 694 | + |
| 695 | + meas.register_parameter(control1) |
| 696 | + meas.register_parameter(control2) |
| 697 | + meas.register_parameter(inferred1, basis=(control1, control2)) |
| 698 | + meas.register_parameter(inferred2, basis=(control1, control2)) |
| 699 | + meas.register_parameter(dependent, setpoints=(control1, control2)) |
| 700 | + meas.set_shapes({dependent.register_name: (11, 11)}) |
| 701 | + with meas.run() as datasaver: |
| 702 | + for i in range(11): |
| 703 | + for j in range(11): |
| 704 | + control1(float(i)) |
| 705 | + control2(float(j)) |
| 706 | + datasaver.add_result( |
| 707 | + (control1, control1()), |
| 708 | + (control2, control2()), |
| 709 | + (dependent, dependent()), |
| 710 | + ) |
| 711 | + ds = datasaver.dataset |
| 712 | + |
| 713 | + assert DeepDiff(ds.get_parameter_data(), ds.cache.data()) == {} |
0 commit comments