laboneq_applications.experiments.resonator_spectroscopy
¶
This module defines the resonator spectroscopy experiment.
In this experiment, we sweep the resonator frequency of a measure pulse to characterize the resonator coupled to the qubit.
The resonator spectroscopy experiment has the following pulse sequence:
qb --- [ measure ]
This experiment only supports 1 qubit at the time, and involves only its coupled resonator
create_experiment(qpu, qubit, frequencies, options=None)
¶
Creates a Resonator Spectroscopy Experiment.
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 |
options
|
ResonatorSpectroscopyExperimentOptions | None
|
The options for building the experiment. See [ResonatorSpectroscopyExperimentOptions] and [BaseExperimentOptions] for accepted options. Overwrites the options from [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 acquisition_type is not AcquisitionType.SPECTROSCOPY. |
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),
options=options,
)
experiment_workflow(session, qpu, qubit, frequencies, temporary_parameters=None, options=None)
¶
The Resonator Spectroscopy 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 |
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 |
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 = experiment_workflow.options()
options.create_experiment.count(10)
qpu = QPU(
quantum_elements=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_quantum_elements()
result = experiment_workflow(
session=session,
qpu=qpu,
qubit=temp_qubits[0],
frequencies=np.linspace(7.1e9, 7.6e9, 501),
options=options,
).run()