Ejemplo n.º 1
0
def test_load_or_create_experiment_creating_not_empty():
    """Test that an experiment is correctly created when DB is not empty"""
    exp = load_or_create_experiment("experiment_name_1", "sample_name_1")
    exp_2 = load_or_create_experiment("experiment_name_2", "sample_name_2")

    actual_experiments = experiments()
    assert len(actual_experiments) == 2

    assert_experiments_equal(actual_experiments[0], exp)
    assert_experiments_equal(actual_experiments[1], exp_2)
Ejemplo n.º 2
0
def test_load_2dsoftsweep():
    qc.config.core.db_location = DBPATH
    initialise_database()
    exp = load_or_create_experiment('2d_softsweep', sample_name='no sample')

    # define some test data
    x = np.linspace(0, 1., 5)
    y = np.linspace(0, 1., 5)
    xx, yy = np.meshgrid(x, y, indexing='ij')
    zz = np.random.rand(*xx.shape)

    # put data into a new dataset
    ds = new_data_set('2d_softsweep',
                      specs=[ParamSpec('x', 'numeric', unit='A'),
                             ParamSpec('y', 'numeric', unit='B'),
                             ParamSpec('z', 'numeric', unit='C',
                                       depends_on=['x', 'y']), ], )

    def get_next_result():
        for x, y, z in zip(xx.reshape(-1), yy.reshape(-1), zz.reshape(-1)):
            yield dict(x=x, y=y, z=z)

    results = get_next_result()
    for r in results:
        ds.add_result(r)
    ds.mark_complete()

    # retrieve data as data dict
    run_id = ds.run_id
    ddict = datadict_from_path_and_run_id(DBPATH, run_id)

    assert np.all(np.isclose(ddict.data_vals('z'), zz.reshape(-1), atol=1e-15))
    assert np.all(np.isclose(ddict.data_vals('x'), xx.reshape(-1), atol=1e-15))
    assert np.all(np.isclose(ddict.data_vals('y'), yy.reshape(-1), atol=1e-15))
Ejemplo n.º 3
0
def test_update_qcloader(qtbot):
    qc.config.core.db_location = DBPATH
    initialise_database()
    exp = load_or_create_experiment('2d_softsweep', sample_name='no sample')

    # define test data
    x = np.linspace(0, 1., 5)
    y = np.linspace(0, 1., 5)
    xx, yy = np.meshgrid(x, y, indexing='ij')
    zz = np.random.rand(*xx.shape)

    def get_2dsoftsweep_results():
        for x, y, z in zip(xx.reshape(-1), yy.reshape(-1), zz.reshape(-1)):
            yield dict(x=x, y=y, z=z)

    # create data set
    _ds = new_data_set(
        '2d_softsweep',
        exp_id=exp.exp_id,
        specs=[
            ParamSpec('x', 'numeric', unit='A'),
            ParamSpec('y', 'numeric', unit='B'),
            ParamSpec('z', 'numeric', unit='C', depends_on=['x', 'y']),
        ],
    )

    run_id = _ds.run_id
    results = get_2dsoftsweep_results()

    # setting up the flowchart
    nodes, fc = make_sequential_flowchart([QCodesDSLoader])
    loader = nodes[0]
    loader.pathAndId = DBPATH, run_id

    def check():
        nresults = _ds.number_of_results
        loader.update()
        ddict = fc.output()['dataOut']

        z_in = zz.reshape(-1)[:nresults]
        z_out = ddict.data_vals('z')
        if z_out is not None:
            assert z_in.size == z_out.size
            assert np.allclose(z_in, z_out, atol=1e-15)

    # insert data in small chunks, and check
    while True:
        try:
            ninsertions = np.random.randint(0, 5)
            for n in range(ninsertions):
                _ds.add_result(next(results))
        except StopIteration:
            _ds.mark_complete()
            break
        check()
    check()
Ejemplo n.º 4
0
def do_experiment(experiment_name,
                  sweep_object,
                  setup=None,
                  cleanup=None,
                  station=None,
                  live_plot=False):

    if "/" in experiment_name:
        experiment_name, sample_name = experiment_name.split("/")
    else:
        sample_name = None

    experiment = load_or_create_experiment(experiment_name, sample_name)

    def add_actions(action, callables):
        if callables is None:
            return

        for cabble in np.atleast_1d(callables):
            if not isinstance(cabble, tuple):
                cabble = (cabble, ())

            action(*cabble)

    if live_plot:
        try:
            from plottr.qcodes_dataset import QcodesDatasetSubscriber
            from plottr.tools import start_listener

            start_listener()

        except ImportError:
            warn("Cannot perform live plots, plottr not installed")
            live_plot = False

    meas = SweepMeasurement(exp=experiment, station=station)
    meas.register_sweep(sweep_object)

    add_actions(meas.add_before_run, setup)
    add_actions(meas.add_after_run, cleanup)

    with meas.run() as datasaver:

        if live_plot:
            datasaver.dataset.subscribe(QcodesDatasetSubscriber(
                datasaver.dataset),
                                        state=[],
                                        min_wait=0,
                                        min_count=1)

        for data in sweep_object:
            datasaver.add_result(*data.items())

    return _DataExtractor(datasaver)
Ejemplo n.º 5
0
def test_load_or_create_experiment_different_sample_name():
    """
    Test that an experiment is created for the case when the experiment
    name is the same, but the sample name is different
    """
    exp = new_experiment("experiment_name", "sample_name_1")
    exp_2 = load_or_create_experiment("experiment_name", "sample_name_2")

    actual_experiments = experiments()
    assert len(actual_experiments) == 2

    assert exp.name == exp_2.name
    assert exp.sample_name != exp_2.sample_name
Ejemplo n.º 6
0
def test_real_dataset_2d(two_empty_temp_db_connections, inst):
    source_conn, target_conn = two_empty_temp_db_connections

    source_path = path_to_dbfile(source_conn)
    target_path = path_to_dbfile(target_conn)

    source_exp = load_or_create_experiment(experiment_name="myexp",
                                           conn=source_conn)

    source_dataset, _, _ = do2d(inst.back,
                                0,
                                1,
                                10,
                                0,
                                inst.plunger,
                                0,
                                0.1,
                                15,
                                0,
                                inst.cutter,
                                exp=source_exp)

    extract_runs_into_db(source_path, target_path, source_dataset.run_id)

    target_dataset = load_by_guid(source_dataset.guid, conn=target_conn)

    assert source_dataset.the_same_dataset_as(target_dataset)
    # explicit regression  test for https://github.com/QCoDeS/Qcodes/issues/3953
    assert source_dataset.description.shapes == {
        "extract_run_inst_cutter": (10, 15)
    }
    assert source_dataset.description.shapes == target_dataset.description.shapes

    source_data = source_dataset.get_parameter_data(
    )["extract_run_inst_cutter"]
    target_data = target_dataset.get_parameter_data(
    )["extract_run_inst_cutter"]

    for source_data, target_data in zip(source_data.values(),
                                        target_data.values()):
        assert_array_equal(source_data, target_data)
Ejemplo n.º 7
0
    def generate_local_exp(dbpath: Path) -> List[str]:
        with initialised_database_at(str(dbpath)):
            guids = []
            exp = load_or_create_experiment(experiment_name="test_guid")

            p1 = Parameter('Voltage', set_cmd=None)
            p2 = Parameter('Current', get_cmd=np.random.randn)

            meas = Measurement(exp=exp)
            meas.register_parameter(p1).register_parameter(p2, setpoints=[p1])

            # Meaure for 2 times to get 2 run ids and 2 guids
            for run in range(2):
                with meas.run() as datasaver:
                    for v in np.linspace(0 * run, 2 * run, 50):
                        p1(v)
                        datasaver.add_result((p1, cast(float, p1())),
                                             (p2, cast(float, p2())))
                guid = datasaver.dataset.guid
                guids.append(guid)
        return guids
Ejemplo n.º 8
0
def test_active_experiment(empty_temp_db):

    conn = conn_from_dbpath_or_conn(conn=None, path_to_db=empty_temp_db)
    with pytest.raises(ValueError):
        get_default_experiment_id(conn)

    exp_1 = load_or_create_experiment("test_exp", sample_name="no_sample")
    assert get_default_experiment_id(conn) == exp_1.exp_id

    exp_2 = new_experiment("test_exp_2", sample_name="no_sample")
    assert get_default_experiment_id(conn) == exp_2.exp_id

    exp_3 = load_experiment(1)
    assert get_default_experiment_id(conn) == exp_1.exp_id
    assert get_default_experiment_id(conn) == exp_3.exp_id

    exp_4 = new_experiment("test_exp_3", sample_name="no_sample")

    exp_5 = load_experiment_by_name("test_exp_2", sample="no_sample")
    assert get_default_experiment_id(conn) == exp_2.exp_id
    assert get_default_experiment_id(conn) == exp_5.exp_id

    exp_6 = load_last_experiment()
    assert get_default_experiment_id(conn) == exp_4.exp_id
    assert get_default_experiment_id(conn) == exp_6.exp_id

    last_exp = new_experiment("last_exp", sample_name="no_sample")
    load_experiment(3)

    reset_default_experiment_id(conn)
    assert get_default_experiment_id(conn) is last_exp.exp_id

    load_experiment(exp_1.exp_id)
    assert get_default_experiment_id(conn) == exp_1.exp_id

    reset_default_experiment_id()
    assert get_default_experiment_id(conn) is last_exp.exp_id
Ejemplo n.º 9
0
def test_load_or_create_experiment_creating():
    """Test that an experiment is correctly created"""
    exp = load_or_create_experiment("experiment_name", "sample_name")
    exp_2 = load_experiment_by_name("experiment_name", "sample_name")
    assert_experiments_equal(exp, exp_2)
Ejemplo n.º 10
0
            )
            self.setpoints = (tuple(), tuple())
            self.setpoint_shapes = (tuple(), tuple())
            self.setpoint_labels = (("I channel", ), ('Q channel', ))
            self.setpoint_units = (("mV", ), ("mV", ))
            self.setpoint_names = (("I_channel", ), ("Q_channel", ))
            self.i = 2

        def get_raw(self):
            self.i += 1
            return (self.i, self.i + 100)

    now = str(datetime.datetime.now())
    path = os.path.join(os.getcwd(), 'test.db')
    initialise_or_create_database_at(path)
    load_or_create_experiment('tutorial ' + now, 'no sample')
    my_param = MyCounter('test_instr')
    from qcodes.instrument.specialized_parameters import ElapsedTimeParameter

    x = qc.Parameter(name='x',
                     label='Voltage_x',
                     unit='V',
                     set_cmd=None,
                     get_cmd=None)
    y = qc.Parameter(name='y',
                     label='Voltage_y',
                     unit='V',
                     set_cmd=None,
                     get_cmd=None)
    timer = ElapsedTimeParameter('time')
    my_param_multi_test = dummy_multi_parameter_2dawg('param')
Ejemplo n.º 11
0
from qdev_wrappers.station_configurator import StationConfigurator

import qcodes_measurements as qcm
from qcodes_measurements.plot.plot_tools import *
from qcodes_measurements.device import *

from dac_params import *

# Log all output
from IPython import get_ipython
ip = get_ipython()
ip.magic("logstop")
ip.magic("logstart -o -t iPython_Logs\\fivedot_analysis_log.py rotate")
ip.magic("autoreload 0")

# Close any instruments that may already be open
instruments = list(qc.Instrument._all_instruments.keys())
for instrument in instruments:
    instr = qc.Instrument._all_instruments.pop(instrument)
    instr = instr()
    instr.close()
del instruments

exp_name = 'QDP_FIVEDOT'
sample_name = 'DARLINGTON_D1'

initialise_database()
exp = load_or_create_experiment(exp_name, sample_name)
print('Experiment loaded. Last ID no:', exp.last_counter)
Ejemplo n.º 12
0
osc.ch4.t_start.set(-10)
osc.ch4.t_stop.set(10)

amp = 1
PSG1.amp(amp)
PSG2.amp(amp)

station = Station()
station.snapshot()

station.add_component(osc)

# Criar um database
initialise_or_create_database_at("~/teste.db")

exp = load_or_create_experiment(experiment_name='osc realtime intro 2',
                                sample_name="osc realtime 1")


def calculateGain():
    Y = osc.ch3.wavesample()
    n_mean = int(len(Y) / 2)
    value = 2 * np.mean(Y[n_mean:])
    value = 10 * np.log(np.power(value, 2))
    return value


gain = Parameter('gain', label='gain', unit='dB', get_cmd=calculateGain)

# Medida de fato
meas = Measurement(exp=exp, station=station)
Ejemplo n.º 13
0
def test_load_or_create_experiment_loading(empty_temp_db):
    """Test that an experiment is correctly loaded"""
    exp = new_experiment("experiment_name", "sample_name")
    exp_2 = load_or_create_experiment("experiment_name", "sample_name")
    assert_experiments_equal(exp, exp_2)