Skip to content

laboneq_applications.contrib.experiments.time_rabi

This module defines the time-rabi experiment.

In this experiment, we sweep the length of a drive pulse on a given qubit transition in order to determine the pulse length that induces a rotation of pi.

The time-rabi experiment has the following pulse sequence:

qb --- [ prep transition ] --- [ x180_transition ] --- [ measure ]

If multiple qubits are passed to the run workflow, the above pulses are applied in parallel on all the qubits.

create_experiment(qpu, qubits, lengths, options=None)

Creates a length-Rabi experiment Workflow.

Parameters:

Name Type Description Default
qpu QPU

The qpu consisting of the original qubits and quantum operations.

required
qubits Qubits

The qubits to run the experiments on. May be either a single qubit or a list of qubits.

required
lengths QubitSweepPoints

The drive-pulse lengths to sweep over for each qubit. If qubits is a single qubit, lengths must be a list of numbers or an array. Otherwise it must be a list of lists of numbers or arrays.

required
options TuneupExperimentOptions | None

The options for building the experiment. See [TuneupExperimentOptions] and [BaseExperimentOptions] for accepted options. Overwrites the options from [TuneupExperimentOptions] and [BaseExperimentOptions].

None

Returns:

Name Type Description
experiment Experiment

The generated LabOne Q experiment instance to be compiled and executed.

Raises:

Type Description
ValueError

If the qubits and qubit_lengths are not of the same length.

ValueError

If qubit_lengths is not a list of numbers when a single qubit is passed.

ValueError

If qubit_lengths is not a list of lists of numbers.

Example
options = TuneupExperimentOptions()
options.count = 10
options.transition = "ge"
options.cal_traces = True
qpu = QPU(
    qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
    quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
create_experiment(
    qpu=qpu,
    qubits=temp_qubits,
    lengths=[
        np.linspace(100e-9, 500e-9, 11),
        np.linspace(100e-9, 500e-9, 11),
    ],
    options=options,
)

experiment_workflow(session, qpu, qubits, lengths, options=None)

The Time Rabi Workflow.

The workflow consists of the following steps:

Parameters:

Name Type Description Default
session Session

The connected session to use for running the experiment.

required
qpu QPU

The qpu consisting of the original qubits and quantum operations.

required
qubits Qubits

The qubits to run the experiments on. May be either a single qubit or a list of qubits.

required
lengths QubitSweepPoints

The drive-pulse lengths to sweep over for each qubit. If qubits is a single qubit, lengths must be a list of numbers or an array. Otherwise it must be a list of lists of numbers or arrays.

required
options TuneUpWorkflowOptions | None

The options for building the workflow. In addition to options from [WorkflowOptions], the following custom options are supported: - create_experiment: The options for creating the experiment.

None

Returns:

Name Type Description
WorkflowBuilder None

The builder of the experiment workflow.

Example
options = experiment_workflow.options()
options.count(10)
options.create_experiment.transition = "ge"
qpu = QPU(
    qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
    quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
result = experiment_workflow(
    session=session,
    qpu=qpu,
    qubits=temp_qubits,
    lengths=[
        np.linspace(100e-9, 500e-9, 11),
        np.linspace(100e-9, 500e-9, 11),
    ],
    options=options,
).run()