Skip to content

laboneq_applications.experiments.resonator_spectroscopy_amplitude

This module defines the resonator spectroscopy amplitude sweep experiment.

In this experiment, we sweep the resonator frequency and the amplitude of a measure pulse in a 2D fashion to characterize the resonator coupled to the qubit.

The resonator spectroscopy amplitude sweep experiment has the following pulse sequence:

qb --- [ measure ]
     sweep amplitude

This experiment only supports 1 qubit at the time, and involves only its coupled resonator

create_experiment(qpu, qubit, frequencies, amplitudes, options=None)

A Resonator Spectroscopy where the measure-pulse amplitude is also swept.

Parameters:

Name Type Description Default
qpu QPU

The qpu consisting of the original qubits and quantum operations.

required
qubit QuantumElement

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

required
frequencies ArrayLike

The resonator frequencies to sweep over for each qubit. It must be a list of lists of numbers or arrays.

required
amplitudes ArrayLike

The amplitudes to sweep over for each resonator. it must be a list of lists of numbers or arrays.

required
options ResonatorSpectroscopyExperimentOptions | None

The options for building the experiment. See [SpectroscopyExperimentOptions] 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 qubit and qubit_amplitudes are not of the same length.

ValueError

If qubit_amplitudes or qubit_amplitudes is not a list of numbers.

Example
options = {
    "count": 10,
    "spectroscopy_reset_delay": 3e-6
}
options = TuneupExperimentOptions(**options)
setup = DeviceSetup()
qpu = QPU(
    qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
    quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
create_experiment(
    qpu=qpu,
    qubit=temp_qubits[0],
    frequencies=np.linspace(7.1e9, 7.6e9, 501),
    amplitudes=np.linspace(0.1, 1, 10),
    options=options,
)

experiment_workflow(session, qpu, qubit, frequencies, amplitudes, temporary_parameters=None, options=None)

The Workflow for a resonator spectroscopy with a readout-amplitude sweep.

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
qubit QuantumElement

The qubit to run the experiments on. It can be only a single qubit coupled to a resonator.

required
frequencies ArrayLike

The resonator frequencies to sweep over for the readout pulse (or CW) sent to the resonator. Must be a list of numbers or an array.

required
amplitudes ArrayLike

The amplitudes of the readout pulses to sweep over. Must be a list of numbers or an array.

required
temporary_parameters dict[str, dict | TransmonParameters] | None

The temporary parameters to update the qubits with.

None
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
result None

The result of the workflow.

Example
options = SpectroscopyWorkflowOptions()
options.create_experiment.count = 10
qpu = QPU(
    qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
    quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
result = run(
    session=session,
    qpu=qpu,
    qubit=temp_qubits[0],
    frequencies=np.linspace(7.1e9, 7.6e9, 501),
    amplitudes=np.linspace(0.1, 1, 10),
    options=options,
)