Note
This is the documentation for the current state of the development branch of Qiskit Experiments. The documentation or APIs here can change prior to being released.
FineAmplitudeCal¶
- class FineAmplitudeCal(physical_qubits, calibrations, schedule_name, backend=None, cal_parameter_name='amp', auto_update=True, gate=None, measurement_qubits=None)[source]¶
A calibration version of the
FineAmplitude
experiment.Overview
FineAmplitudeCal
is a subclass ofFineAmplitude
. In the calibration experiment the circuits that are run have a custom gate with the pulse schedule attached to it through the calibrations.Analysis class reference
FineAmplitudeAnalysis
Experiment options
These options can be set by the
set_experiment_options()
method.- Options
Defined in the class
FineAmplitudeCal
:target_angle (float)
Default value:3.141592653589793
The target angle of the pulse.
Defined in the class
BaseCalibrationExperiment
:result_index (int)
Default value:-1
The index of the result from which to update the calibrations.group (str)
Default value:"default"
The calibration group to which the parameter belongs. This will default to the value “default”.
Defined in the class
FineAmplitude
:repetitions (List[int])
Default value: [1
,2
,3
,4
,5
, …]A list of the number of times that the gate is repeated.gate (Gate)
Default value:None
This is a gate class such as XGate, so that one can obtain a gate by doingoptions.gate()
.normalization (bool)
Default value:True
If set to True the DataProcessor will normalized the measured signal to the interval [0, 1]. Defaults to True.add_cal_circuits (bool)
Default value:True
If set to True then two circuits to calibrate 0 and 1 points will be added. These circuits are often needed to properly calibrate the amplitude of the ping-pong oscillation that encodes the errors. This helps account for state preparation and measurement errors.
Defined in the class
BaseExperiment
:max_circuits (Optional[int])
Default value:None
The maximum number of circuits per job when running an experiment on a backend.
Example
import numpy as np from qiskit.circuit.library import SXGate from qiskit_experiments.calibration_management.calibrations import Calibrations from qiskit_experiments.calibration_management.basis_gate_library \ import FixedFrequencyTransmon from qiskit_experiments.library import FineAmplitudeCal library = FixedFrequencyTransmon(default_values={"duration": 320, "amp": 0.030}) cals = Calibrations.from_backend(backend=backend, libraries=[library]) exp_cal = FineAmplitudeCal(physical_qubits=(0,), calibrations=cals, schedule_name="sx", backend=backend, cal_parameter_name="amp", auto_update=True, gate=SXGate(), measurement_qubits=(0,)) # This option is necessary! exp_cal.analysis.set_options(fixed_parameters={"angle_per_gate" : np.pi / 2, "phase_offset" : np.pi}) cal_data = exp_cal.run().block_for_results() display(cal_data.figure(0)) cal_data.analysis_results(dataframe=True)
name experiment components value quality backend run_time chisq 221217d1 @Parameters_FineAmplitudeAnalysis FineAmplitudeCal [Q0] CurveFitResult:\n - fitting method: least_squa... good PulseBackendV2 None None 5f736cee d_theta FineAmplitudeCal [Q0] 0.0484+/-0.0010 good PulseBackendV2 None 0.681843 See also
Superclass
qiskit_experiments.calibration_management.base_calibration_experiment.BaseCalibrationExperiment
Superclass
qiskit_experiments.library.characterization.fine_amplitude.FineAmplitude
Initialization
See class
FineAmplitude
for details.- Parameters:
physical_qubits (Sequence[int]) – Sequence containing the qubit(s) for which to run the fine amplitude calibration. This can be a pair of qubits which correspond to control and target qubit.
calibrations (Calibrations) – The calibrations instance with the schedules.
schedule_name (str) – The name of the schedule to calibrate.
backend (Backend | None) – Optional, the backend to run the experiment on.
cal_parameter_name (str | None) – The name of the parameter in the schedule to update.
auto_update (bool) – Whether or not to automatically update the calibrations. By default this variable is set to True.
gate (Gate | None) – The gate to repeat in the quantum circuit. If this argument is None (the default), then the gate is built from the schedule name.
measurement_qubits (Sequence[int]) – The qubits in the given physical qubits that need to be measured.
Attributes
- analysis: BaseAnalysis¶
Return the analysis instance for the experiment.
Note
Analysis instance set to calibration experiment is implicitly patched to run calibration updater to update the parameters in the calibration table.
- backend¶
Return the backend for the experiment
- calibrations¶
Return the calibrations.
- experiment_options¶
Return the options for the experiment.
- experiment_type¶
Return experiment type.
- num_qubits¶
Return the number of qubits for the experiment.
- physical_qubits¶
Return the device qubits for the experiment.
Methods
- circuits()¶
Create the circuits for the fine amplitude calibration experiment.
- Returns:
A list of circuits with a variable number of gates.
- Raises:
CalibrationError – If the analysis options do not contain the angle_per_gate.
- Return type:
List[QuantumCircuit]
- config()¶
Return the config dataclass for this experiment
- Return type:
- copy()¶
Return a copy of the experiment
- Return type:
- enable_restless(rep_delay=None, override_processor_by_restless=True, suppress_t1_error=False)¶
Enables a restless experiment by setting the restless run options and the restless data processor.
Deprecated since version 0.8: The method
qiskit_experiments.framework.restless_mixin.RestlessMixin.enable_restless()
is deprecated as of qiskit-experiments 0.8. It will be removed no earlier than 3 months after the release date. Support for restless experiments has been deprecated.- Parameters:
rep_delay (float | None) – The repetition delay. This is the delay between a measurement and the subsequent quantum circuit. Since the backends have dynamic repetition rates, the repetition delay can be set to a small value which is required for restless experiments. Typical values are 1 us or less.
override_processor_by_restless (bool) – If False, a data processor that is specified in the analysis options of the experiment is not overridden by the restless data processor. The default is True.
suppress_t1_error (bool) – If True, the default is False, then no error will be raised when
rep_delay
is larger than the T1 times of the qubits. Instead, a warning will be logged as restless measurements may have a large amount of noise.
- Raises:
DataProcessorError – If the attribute rep_delay_range is not defined for the backend.
DataProcessorError – If a data processor has already been set but override_processor_by_restless is True.
DataProcessorError – If the experiment analysis does not have the data_processor option.
DataProcessorError – If the rep_delay is equal to or greater than the T1 time of one of the physical qubits in the experiment and the flag
ignore_t1_check
is False.
- classmethod from_config(config)¶
Initialize an experiment from experiment config
- Return type:
- job_info(backend=None)¶
Get information about job distribution for the experiment on a specific backend.
- Parameters:
backend (Backend) – Optional, the backend for which to get job distribution information. If not specified, the experiment must already have a set backend.
- Returns:
A dictionary containing information about job distribution.
”Total number of circuits in the experiment”: Total number of circuits in the experiment.
”Maximum number of circuits per job”: Maximum number of circuits in one job based on backend and experiment settings.
”Total number of jobs”: Number of jobs needed to run this experiment on the currently set backend.
- Return type:
dict
- Raises:
QiskitError – if backend is not specified.
- run(backend=None, sampler=None, analysis='default', timeout=None, backend_run=None, **run_options)¶
Run an experiment and perform analysis.
- Parameters:
backend (Backend | None) – Optional, the backend to run on. Will override existing backend settings.
sampler (BaseSamplerV2 | None) – Optional, the sampler to run the experiment on. If None then a sampler will be invoked from previously set backend
analysis (BaseAnalysis | None) – Optional, a custom analysis instance to use for performing analysis. If None analysis will not be run. If
"default"
the experimentsanalysis()
instance will be used if it contains one.timeout (float | None) – Time to wait for experiment jobs to finish running before cancelling.
backend_run (bool | None) – Use backend run (temp option for testing)
run_options – backend runtime options used for circuit execution.
- Returns:
The experiment data object.
- Raises:
QiskitError – If experiment is run with an incompatible existing ExperimentData container.
- Return type:
- set_experiment_options(**fields)¶
Set the experiment options.
- Parameters:
fields – The fields to update the options
- Raises:
AttributeError – If the field passed in is not a supported options
- set_run_options(**fields)¶
Set options values for the experiment
run()
method.- Parameters:
fields – The fields to update the options
See also
The Setting options for your experiment guide for code example.
- set_transpile_options(**fields)¶
Add a warning message.
Note
If your experiment has overridden _transpiled_circuits and needs transpile options then please also override set_transpile_options.
- update_calibrations(experiment_data)[source]¶
Update the amplitude of the pulse in the calibrations.
The update rule of this experiment is
\[A \to A \frac{\theta_\text{target}}{\theta_\text{target} + {\rm d}\theta}\]Where \(A\) is the amplitude of the pulse before the update.
- Parameters:
experiment_data (ExperimentData) – The experiment data from which to extract the measured over/under rotation used to adjust the amplitude.