Exemplo n.º 1
0
    def setup_class(cls):
        # gets called at initialization of test class
        cls.AWG = v8.VirtualAWG8('DummyAWG8')

        cls.fluxlutman = flm.AWG8_Flux_LutMan('fluxlutman_main')
        cls.k0 = lko.LinDistortionKernel('k0')
        cls.fluxlutman_partner = flm.AWG8_Flux_LutMan('fluxlutman_partner')
Exemplo n.º 2
0
    def test_simulate_using_detector(self):

        fluxlutman = flm.AWG8_Flux_LutMan('fluxlutman')

        # Hamiltonian pars
        alpha_q0 = 285e6 * 2 * np.pi
        J = 2.9e6 * 2 * np.pi
        w_q0 = 4.11e9 * 2 * np.pi
        w_q1 = 5.42e9 * 2 * np.pi

        H_0 = czu.coupled_transmons_hamiltonian(w_q0,
                                                w_q1,
                                                alpha_q0=alpha_q0,
                                                J=J)

        fluxlutman.cz_J2(J * np.sqrt(2))
        fluxlutman.cz_freq_01_max(w_q1)
        fluxlutman.cz_freq_interaction(w_q0 + alpha_q0)
        fluxlutman.cz_theta_f(80)
        fluxlutman.cz_lambda_2(0)
        fluxlutman.cz_lambda_3(0)
        fluxlutman.sampling_rate(2.4e9)
        fluxlutman.cz_length(220e-9)

        d = czu.CZ_trajectory(H_0=H_0, fluxlutman=fluxlutman)
        vals = d.acquire_data_point()
        self.assertAlmostEquals(vals[0], 13.588, places=1)
        self.assertAlmostEquals(vals[1], 166.87, places=1)
        self.assertAlmostEquals(vals[2], 0.0920, places=1)
        self.assertAlmostEquals(vals[3], 0.1841, places=1)

        fluxlutman.close()
def f_to_parallelize_new(arglist):
    # cluster wants a list as an argument.
    # Below the various list items are assigned to their own variable

    fitted_stepresponse_ty = arglist['fitted_stepresponse_ty']
    fluxlutman_args = arglist['fluxlutman_args']       # see function return_instrument_args in czf
    noise_parameters_CZ_args = arglist['noise_parameters_CZ_args']       # see function return_instrument_args in czf
    number = arglist['number']
    adaptive_pars = arglist['adaptive_pars']


    try: 
        MC = Instrument.find_instrument('MC'+'{}'.format(number))
    except KeyError:
        MC = mc.MeasurementControl('MC'+'{}'.format(number), live_plot_enabled=False)
    from qcodes import station
    station = station.Station()
    station.add_component(MC)
    MC.station =station

    
    fluxlutman = flm.AWG8_Flux_LutMan('fluxlutman'+'{}'.format(number))
    station.add_component(fluxlutman)
    noise_parameters_CZ = npCZ.NoiseParametersCZ('noise_parameters_CZ'+'{}'.format(number))
    station.add_component(noise_parameters_CZ)

    fluxlutman, noise_parameters_CZ = czf.return_instrument_from_arglist(fluxlutman,fluxlutman_args,noise_parameters_CZ,noise_parameters_CZ_args)

    d=ramsey_experiment(fluxlutman=fluxlutman, noise_parameters_CZ=noise_parameters_CZ,
                                                         fitted_stepresponse_ty=fitted_stepresponse_ty)
    MC.set_sweep_functions([fluxlutman.cz_length])
    MC.set_detector_function(d)
    MC.set_sweep_points(np.arange(0, adaptive_pars['max_time'], adaptive_pars['time_step']))

    exp_metadata = {'detuning': noise_parameters_CZ.detuning(), 
                     'sigma_q1': noise_parameters_CZ.sigma_q1(), 
                     'sigma_q0': noise_parameters_CZ.sigma_q0()}

    if noise_parameters_CZ.cluster():
        dat = MC.run('1D ramsey_new_cluster sigma_q1 {:.0f}, sigma_q0 {:.0f}, detuning {:.0f}'.format(noise_parameters_CZ.sigma_q1()*1e6, noise_parameters_CZ.sigma_q0()*1e6,
                                                                            noise_parameters_CZ.detuning()/1e6), 
            mode='1D',exp_metadata=exp_metadata)
    else:
        if adaptive_pars['long_name']:
            dat = MC.run('1D ramsey_new sigma_q1 {:.0f}, sigma_q0 {:.0f}, detuning {:.0f}'.format(noise_parameters_CZ.sigma_q1()*1e6, noise_parameters_CZ.sigma_q0()*1e6,
                                                                    noise_parameters_CZ.detuning()/1e6), 
                                                                    mode='1D',exp_metadata=exp_metadata)
        else:
            dat = MC.run('1D ramsey_new', mode='1D',exp_metadata=exp_metadata)


    fluxlutman.close()
    noise_parameters_CZ.close()
    MC.close()
Exemplo n.º 4
0
    def setUpClass(self):
        self.AWG = v8.VirtualAWG8('DummyAWG8')

        self.fluxlutman = flm.AWG8_Flux_LutMan('Flux_LutMan')
        self.k0 = ko.DistortionKernel('k0')
        self.fluxlutman.instr_distortion_kernel(self.k0.name)
        self.fluxlutman.AWG(self.AWG.name)
        self.fluxlutman.sampling_rate(2.4e9)
        self.fluxlutman.cz_theta_f(80)
        self.fluxlutman.cz_freq_01_max(6.8e9)
        self.fluxlutman.cz_J2(4.1e6)
        # self.fluxlutman.cz_E_c(250e6)
        self.fluxlutman.cz_freq_interaction(5.1e9)
        self.fluxlutman.cfg_max_wf_length(5e-6)

        poly_coeffs = np.array(
            [1.95027142e+09, -3.22560292e+08, 5.25834946e+07])
        self.fluxlutman.polycoeffs_freq_conv(poly_coeffs)
Exemplo n.º 5
0
def f_to_parallelize_new(arglist):
    # cluster wants a list as an argument.
    # Below the various list items are assigned to their own variable

    fitted_stepresponse_ty = arglist['fitted_stepresponse_ty']
    fluxlutman_args = arglist[
        'fluxlutman_args']  # see function return_instrument_args in czf
    noise_parameters_CZ_args = arglist[
        'noise_parameters_CZ_args']  # see function return_instrument_args in czf
    number = arglist['number']
    adaptive_pars = arglist['adaptive_pars']

    try:
        MC = Instrument.find_instrument('MC' + '{}'.format(number))
    except KeyError:
        MC = mc.MeasurementControl('MC' + '{}'.format(number),
                                   live_plot_enabled=False)
    from qcodes import station
    station = station.Station()
    station.add_component(MC)
    MC.station = station

    fluxlutman = flm.AWG8_Flux_LutMan('fluxlutman' + '{}'.format(number))
    station.add_component(fluxlutman)
    noise_parameters_CZ = npCZ.NoiseParametersCZ('noise_parameters_CZ' +
                                                 '{}'.format(number))
    station.add_component(noise_parameters_CZ)

    fluxlutman, noise_parameters_CZ = czf.return_instrument_from_arglist(
        fluxlutman, fluxlutman_args, noise_parameters_CZ,
        noise_parameters_CZ_args)

    d = CZ_trajectory_superoperator(
        fluxlutman=fluxlutman,
        noise_parameters_CZ=noise_parameters_CZ,
        fitted_stepresponse_ty=fitted_stepresponse_ty,
        qois=adaptive_pars.get('qois', 'all'))
    MC.set_detector_function(d)

    exp_metadata = {
        'double sided': fluxlutman.czd_double_sided(),
        'length': fluxlutman.cz_length(),
        'distortions': noise_parameters_CZ.distortions(),
        'T2_scaling': noise_parameters_CZ.T2_scaling(),
        'sigma_q1': noise_parameters_CZ.sigma_q1(),
        'sigma_q0': noise_parameters_CZ.sigma_q0()
    }

    if adaptive_pars['mode'] == 'adaptive':
        MC.set_sweep_functions([fluxlutman.cz_theta_f, fluxlutman.cz_lambda_2])
        if adaptive_pars['uniform']:
            loss_per_triangle = adaptive.learner.learner2D.uniform_loss
        else:
            loss_per_triangle = None
        MC.set_adaptive_function_parameters({
            'adaptive_function':
            adaptive.Learner2D,
            'loss_per_triangle':
            loss_per_triangle,
            'goal':
            lambda l: l.npoints > adaptive_pars['n_points'],
            'bounds':
            [(adaptive_pars['theta_f_min'], adaptive_pars['theta_f_max']),
             (adaptive_pars['lambda2_min'], adaptive_pars['lambda2_max'])]
        })

        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '2D simulation_new_cluster2 double sided {} - length {:.1f} - distortions {} - waiting {:.2f} - T2_scaling {:.2f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.distortions(),
                        noise_parameters_CZ.waiting_at_sweetspot(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='adaptive',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '2D simulation_new_2 double sided {} - length {:.1f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='adaptive',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('2D simulation_new_2',
                             exp_metadata=exp_metadata,
                             mode='adaptive')

    elif adaptive_pars['mode'] == '1D':
        MC.set_sweep_functions([fluxlutman.cz_theta_f])
        MC.set_sweep_points(
            np.linspace(adaptive_pars['theta_f_min'],
                        adaptive_pars['theta_f_max'],
                        adaptive_pars['n_points']))
        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '1D simulation_new_cluster2 double sided {} - length {:.1f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.distortions(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='1D',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '1D simulation_new_2 double sided {} - length {:.1f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='1D',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('1D simulation_new_2',
                             exp_metadata=exp_metadata,
                             mode='1D')

    if adaptive_pars['mode'] == 'cma_optimizer':
        MC.set_sweep_functions([fluxlutman.cz_theta_f, fluxlutman.cz_lambda_2])
        if adaptive_pars['uniform']:
            loss_per_triangle = adaptive.learner.learner2D.uniform_loss
        else:
            loss_per_triangle = None
        MC.set_adaptive_function_parameters({
            'adaptive_function': cma.fmin,
            'x0': adaptive_pars['x0'],
            'sigma0': adaptive_pars['sigma0'],
            # options for the CMA algorithm can be found using
            # "cma.CMAOptions()"
            'options': {
                'maxfevals':
                adaptive_pars['n_points'],  # maximum function cals
                # Scaling for individual sigma's
                'cma_stds': [5, 6, 3],
                'ftarget': 0.005
            },  # Target function value
        })

        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '2D simulation_new_cluster2 double sided {} - length {:.1f} - waiting {:.2f} - T2_scaling {:.2f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.waiting_at_sweetspot(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='adaptive',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '2D simulation_new_2 double sided {} - length {:.1f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='adaptive',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('2D simulation_new_2',
                             exp_metadata=exp_metadata,
                             mode='adaptive')

    fluxlutman.close()
    noise_parameters_CZ.close()
    MC.close()
def f_to_parallelize_new(arglist):
    # cluster wants a list as an argument.
    # Below the various list items are assigned to their own variable

    fitted_stepresponse_ty = arglist['fitted_stepresponse_ty']
    fluxlutman_args = arglist[
        'fluxlutman_args']  # see function return_instrument_args in czf
    noise_parameters_CZ_args = arglist[
        'noise_parameters_CZ_args']  # see function return_instrument_args in czf
    number = arglist['number']
    adaptive_pars = arglist['adaptive_pars']

    try:
        MC = Instrument.find_instrument('MC' + '{}'.format(number))
    except KeyError:
        MC = mc.MeasurementControl('MC' + '{}'.format(number),
                                   live_plot_enabled=False)
    from qcodes import station
    station = station.Station()
    station.add_component(MC)
    MC.station = station

    fluxlutman = flm.AWG8_Flux_LutMan('fluxlutman' + '{}'.format(number))
    station.add_component(fluxlutman)
    noise_parameters_CZ = npCZ.NoiseParametersCZ('noise_parameters_CZ' +
                                                 '{}'.format(number))
    station.add_component(noise_parameters_CZ)

    fluxlutman, noise_parameters_CZ = czf.return_instrument_from_arglist(
        fluxlutman, fluxlutman_args, noise_parameters_CZ,
        noise_parameters_CZ_args)

    d = CZ_trajectory_superoperator(
        fluxlutman=fluxlutman,
        noise_parameters_CZ=noise_parameters_CZ,
        fitted_stepresponse_ty=fitted_stepresponse_ty,
        qois=adaptive_pars.get('qois', 'all'))
    MC.set_detector_function(d)

    exp_metadata = {
        'double sided': fluxlutman.czd_double_sided(),
        'length': fluxlutman.cz_length(),
        'distortions': noise_parameters_CZ.distortions(),
        'T2_scaling': noise_parameters_CZ.T2_scaling(),
        'sigma_q1': noise_parameters_CZ.sigma_q1(),
        'sigma_q0': noise_parameters_CZ.sigma_q0()
    }

    if adaptive_pars['mode'] == 'adaptive':
        MC.set_sweep_functions([fluxlutman.cz_theta_f, fluxlutman.cz_lambda_2])
        if adaptive_pars['uniform']:
            loss_per_triangle = adaptive.learner.learner2D.uniform_loss
        else:
            loss_per_triangle = None
        MC.set_adaptive_function_parameters({
            'adaptive_function':
            adaptive.Learner2D,
            'loss_per_triangle':
            loss_per_triangle,
            'goal':
            lambda l: l.npoints > adaptive_pars['n_points'],
            'bounds':
            [(adaptive_pars['theta_f_min'], adaptive_pars['theta_f_max']),
             (adaptive_pars['lambda2_min'], adaptive_pars['lambda2_max'])]
        })

        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '2D simulation_new_cluster2 double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.distortions(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='adaptive',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '2D simulation_new_2 double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='adaptive',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('2D simulation_new_2',
                             exp_metadata=exp_metadata,
                             mode='adaptive')

    elif adaptive_pars['mode'] == '1D':
        MC.set_sweep_functions([fluxlutman.cz_theta_f])
        MC.set_sweep_points(
            np.linspace(adaptive_pars['theta_f_min'],
                        adaptive_pars['theta_f_max'],
                        adaptive_pars['n_points']))
        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '1D simulation_new_cluster2 double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.distortions(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='1D',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '1D simulation_new_2 double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='1D',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('1D simulation_new_2',
                             exp_metadata=exp_metadata,
                             mode='1D')

    elif adaptive_pars['mode'] == 'spectral_tomo':
        MC.set_sweep_functions([noise_parameters_CZ.T1_q0])
        MC.set_sweep_points(
            np.logspace(adaptive_pars['theta_f_min'],
                        adaptive_pars['theta_f_max'],
                        adaptive_pars['n_points']))
        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '1D sim_spectral_tomo double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.distortions(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='1D',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '1D sim_spectral_tomo double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='1D',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('1D sim_spectral_tomo',
                             exp_metadata=exp_metadata,
                             mode='1D')

    elif adaptive_pars['mode'] == 'spectral_tomo_nonmarkovian':
        MC.set_sweep_functions([noise_parameters_CZ.repetitions])
        MC.set_sweep_points(np.arange(0, adaptive_pars['n_points'], 1))
        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '1D sim_spectral_tomo_nonmarkovian double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.distortions(),
                        noise_parameters_CZ.T2_scaling(),
                        noise_parameters_CZ.sigma_q1() * 1e6,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='1D',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '1D sim_spectral_tomo_nonmarkovian double sided {} - length {:.0f} - distortions {} - T2_scaling {:.1f} - sigma_q1 {:.0f}, sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.distortions(),
                            noise_parameters_CZ.T2_scaling(),
                            noise_parameters_CZ.sigma_q1() * 1e6,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='1D',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('1D sim_spectral_tomo_nonmarkovian',
                             exp_metadata=exp_metadata,
                             mode='1D')

    elif adaptive_pars['mode'] == 'time_series':
        MC.set_sweep_functions(
            [noise_parameters_CZ.detuning]
        )  # random sweep function never used in this file. Put it just because I need to put one
        MC.set_sweep_points(np.array([-1]))
        if noise_parameters_CZ.cluster():
            dat = MC.run(
                '1D time_series_cluster double sided {} - length {:.0f} - sigma_q0 {:.0f}'
                .format(fluxlutman.czd_double_sided(),
                        fluxlutman.cz_length() * 1e9,
                        noise_parameters_CZ.sigma_q0() * 1e6),
                mode='1D',
                exp_metadata=exp_metadata)

        else:
            if adaptive_pars['long_name']:
                dat = MC.run(
                    '1D time_series double sided {} - length {:.0f} - sigma_q0 {:.0f}'
                    .format(fluxlutman.czd_double_sided(),
                            fluxlutman.cz_length() * 1e9,
                            noise_parameters_CZ.sigma_q0() * 1e6),
                    mode='1D',
                    exp_metadata=exp_metadata)
            else:
                dat = MC.run('1D time_series',
                             exp_metadata=exp_metadata,
                             mode='1D')

    fluxlutman.close()
    noise_parameters_CZ.close()
    MC.close()