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("my_device")
qpu = QPU(
quantum_elements=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_quantum_elements()
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 | tuple[str, str, str], dict | QuantumParameters] | None
|
The temporary parameters with which to update the quantum elements and
topology edges. For quantum elements, the dictionary key is the quantum
element UID. For topology edges, the dictionary key is the edge tuple
|
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(
quantum_elements=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_quantum_elements()
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,
)