laboneq_applications.experiments.dispersive_shift
¶
This module defines the dispersive shift experiment.
In this experiment, we prepare the qubit at defined states and then perform resonator spectroscopy to characterize the dispersive shift. Note that the qubits states to be prepared are defined in 'cal_states' of the option.
The dispersive shift experiment has the following pulse sequence:
qb --- [ prep state ] --- [ measure (swept frequency) ]
This experiment only supports 1 qubit at the time, and involves only its coupled resonator.
The Acquisition mode is restricted to SPECTROSCOPY mode, utilizing Hardware modulation. Once LRT option becomes more generally available, this example can be improved to support a multiplexed version for multiple qubits.
DispersiveShiftExperimentOptions
¶
Options for the dispersive-shift experiment.
This class is needed only to change the default value of acquisition_type compared to the one in BaseExperimentOptions.
Attributes:
Name | Type | Description |
---|---|---|
acquisition_type |
AcquisitionType
|
Acquisition type to use for the experiment.
Default: |
acquisition_type: AcquisitionType = workflow.option_field(AcquisitionType.SPECTROSCOPY, description='Acquisition type to use.')
class-attribute
instance-attribute
¶
create_experiment(qpu, qubit, frequencies, states, options=None)
¶
Creates a Dispersive Shift 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. It can be only a single qubit coupled to a resonator. |
required |
frequencies |
ArrayLike
|
The resonator frequencies to sweep over for the readout pulse sent to the resonator. Must be a list of numbers or an array. |
required |
states |
Sequence[str]
|
The basis states the qubits should be prepared in. May be either a string, e.g. "gef", or a list of letters, e.g. ["g","e","f"]. |
required |
options |
DispersiveShiftExperimentOptions | None
|
The options for building the experiment as an instance of [BaseExperimentOptions]. See docstring of this class for more details. |
None
|
Returns:
Name | Type | Description |
---|---|---|
experiment |
Experiment
|
The generated LabOne Q experiment instance to be compiled and executed. |
Raises:
Type | Description |
---|---|
ValueError
|
If Acquisition type is not set to SPECTROSCOPY. |
ValueError
|
If frequencies is not a list of lists of numbers. |
Example
options = ResonatorSpectroscopyExperimentOptions()
options.count(10)
options.acquisition_type(AcquisitionType.SPECTROSCOPY)
qpu = QPU(
qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_qubits()
create_experiment(
qpu=qpu,
qubits=temp_qubits[0],
frequencies=np.linspace(1.8e9, 2.2e9, 101),
states="ge"
options=options,
)
experiment_workflow(session, qpu, qubit, frequencies, states, temporary_parameters=None, options=None)
¶
The Dispersive Shift 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 |
QubitSweepPoints
|
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 |
states |
Sequence[str]
|
The basis states the qubits should be prepared in. May be either a string, e.g. "gef", or a list of letters, e.g. ["g","e","f"]. |
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 as an instance of [TuneUpWorkflowOptions]. See the docstring of this class for more details. |
None
|
Returns:
Name | Type | Description |
---|---|---|
WorkflowBuilder |
None
|
The builder for the experiment workflow. |
Example
options = experiment_workflow.options()
options.count(10)
options.acquisition_type(AcquisitionType.SPECTROSCOPY)
qpu = QPU(
qubits=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=SpectroscopyExperimentOptions(),
)
temp_qubits = qpu.copy_qubits()
result = experiment_workflow(
session=session,
qpu=qpu,
qubits=temp_qubits[0],
frequencies=np.linspace(1.8e9, 2.2e9, 101),
states="ge"
options=options,
).run()