QubitSpectroscopy¶
- class QubitSpectroscopy(physical_qubits, frequencies, backend=None, absolute=True, analysis=None, **experiment_options)[source]¶
A spectroscopy experiment to obtain a frequency sweep of the qubit.
Overview
The circuits produced by spectroscopy, i.e.
┌────────────┐ ░ ┌─┐ q_0: ┤ Spec(freq) ├─░─┤M├ └────────────┘ ░ └╥┘ measure: 1/══════════════════╩═ 0
have a spectroscopy pulse-schedule embedded in a spectroscopy gate. The pulse-schedule consists of a set frequency instruction followed by a GaussianSquare pulse. A list of circuits is generated, each with a different frequency “freq”.
Analysis class reference
Experiment options
These options can be set by the
set_experiment_options()
method.- Options
Defined in the class
Spectroscopy
:amp (float)
Default value:0.1
The amplitude of the spectroscopy pulse. Defaults to 0.1 and must be between 0 and 1.duration (int)
Default value:2.4e-07
The duration of the spectroscopy pulse. Defaults to 1024 samples.sigma (float)
Default value:6e-08
The standard deviation of the flanks of the spectroscopy pulse. Defaults to 256.width (int)
Default value:0
The width of the flat-top part of the GaussianSquare pulse. Defaults to 0.
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_experiments.library.characterization import QubitSpectroscopy qubit = 0 freq01_estimate = backend.defaults().qubit_freq_est[qubit] frequencies = np.linspace(freq01_estimate-15e6, freq01_estimate+15e6, 51) exp = QubitSpectroscopy(physical_qubits = (qubit,), frequencies = frequencies, backend = backend, ) exp.set_experiment_options(amp=0.005) exp_data = exp.run().block_for_results() display(exp_data.figure(0)) exp_data.analysis_results(dataframe=True)
name experiment components value quality backend run_time chisq unit f3843387 @Parameters_ResonanceAnalysis QubitSpectroscopy [Q0] CurveFitResult:\n - fitting method: least_squa... good PulseBackendV2 None None None b6dc4ef7 f01 QubitSpectroscopy [Q0] (5.19999+/-0.00012)e+09 good PulseBackendV2 None 0.014598 Hz See also
Superclass
qiskit_experiments.library.characterization.spectroscopy.Spectroscopy
Initialization
A spectroscopy experiment where the frequency of a pulse is scanned.
Deprecated since version 0.8: The class
qiskit_experiments.library.characterization.spectroscopy.Spectroscopy
is deprecated as of qiskit-experiments 0.8. It will be removed no earlier than 3 months after the release date. Due to the deprecation of Qiskit Pulse, experiments involving pulse gate calibrations like this one have been deprecated.- Parameters:
physical_qubits (Sequence[int]) – List containing the qubit on which to run spectroscopy.
frequencies (Iterable[float]) – The frequencies to scan in the experiment, in Hz.
backend (Backend | None) – Optional, the backend to run the experiment on.
absolute (bool) – Boolean to specify if the frequencies are absolute or relative to the qubit frequency in the backend.
analysis (BaseAnalysis | None) – An instance of the analysis class to use.
experiment_options – Key word arguments used to set the experiment options.
- Raises:
QiskitError – If there are less than three frequency shifts.
Attributes
- analysis¶
Return the analysis instance for the experiment
- backend¶
Return the backend for the experiment
- 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()[source]¶
Create the circuit for the spectroscopy experiment.
The circuits are based on a GaussianSquare pulse and a frequency_shift instruction encapsulated in a gate.
- Returns:
The circuits that will run the spectroscopy experiment.
- Return type:
circuits
- config()¶
Return the config dataclass for this experiment
- Return type:
- copy()¶
Return a copy of the experiment
- Return type:
- 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)¶
Set the transpiler options for
run()
method.- Parameters:
fields – The fields to update the options
- Raises:
QiskitError – If initial_layout is one of the fields.
See also
The Setting options for your experiment guide for code example.