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,
)