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.

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

ResonanceAnalysis

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)
../_images/qiskit_experiments.library.characterization.QubitSpectroscopy_1_0.png
name experiment components value quality backend run_time chisq unit
a604812e @Parameters_ResonanceAnalysis QubitSpectroscopy [Q0] CurveFitResult:\n - fitting method: least_squa... good PulseBackendV2 None None None
4bdfff7b 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.

run_options

Return options values for the experiment run() method.

transpile_options

Return the transpiler options for the run() method.

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:

ExperimentConfig

copy()

Return a copy of the experiment

Return type:

BaseExperiment

classmethod from_config(config)

Initialize an experiment from experiment config

Return type:

BaseExperiment

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 experiments analysis() 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:

ExperimentData

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.