laboneq_applications.experiments.lifetime_measurement
¶
This module defines the lifetime_measurement experiment.
In this experiment, the qubit is first excited to either its first or a higher excited state and then allowed to relax back to the ground state over a variable delay period, enabling us to measure the qubit's longitudinal relaxation time, lifetime_measurement, for the respective state.
The lifetime_measurement experiment has the following pulse sequence:
qb --- [ prep transition ] --- [ x180_transition ] --- [delay] --- [ measure ]
If multiple qubits are passed to the run
workflow, the above pulses are applied
in parallel on all the qubits.
create_experiment(qpu, qubits, delays, options=None)
¶
Creates a lifetime_measurement Experiment.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
qpu
|
QPU
|
The qpu consisting of the original qubits and quantum operations. |
required |
qubits
|
QuantumElements
|
The qubits to run the experiments on. May be either a single qubit or a list of qubits. |
required |
delays
|
QubitSweepPoints
|
The delays to sweep over for each qubit. If |
required |
options
|
TuneupExperimentOptions | None
|
The options for building the experiment. See [TuneupExperimentOptions] 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 qubits and qubit_delays are not of the same length. |
ValueError
|
If qubit_delays is not a list of numbers when a single qubit is passed. |
ValueError
|
If qubit_delays is not a list of lists of numbers. |
ValueError
|
If the experiment uses calibration traces and the averaging mode is sequential. |
Example
options = {
"count": 10,
"transition": "ge",
"averaging_mode": "cyclic",
"acquisition_type": "integration_trigger",
"cal_traces": True,
}
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,
qubits=temp_qubits,
delays=[[10e-9, 50e-9, 1], [10e-9, 50e-9, 1]],
options=options,
)
experiment_workflow(session, qpu, qubits, delays, temporary_parameters=None, options=None)
¶
The lifetime_measurement experiment 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 |
qubits
|
QuantumElements
|
The qubits to run the experiments on. May be either a single qubit or a list of qubits. |
required |
delays
|
QubitSweepPoints
|
The delays to sweep over for each qubit. If |
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 = TuneUpWorkflowOptions()
options.create_experiment.count = 10
options.create_experiment.transition = "ge"
setup = DeviceSetup("my_device")
qpu = QPU(
quantum_elements=[TunableTransmonQubit("q0"), TunableTransmonQubit("q1")],
quantum_operations=TunableTransmonOperations(),
)
temp_qubits = qpu.copy_quantum_elements()
result = run(
session=session,
qpu=qpu,
qubits=temp_qubits,
delays=[[10e-9, 50e-9, 1], [10e-9, 50e-9, 1]],
options=options,
)