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.

Rabi

class Rabi(physical_qubits, schedule, amplitudes=None, backend=None)[source]

An experiment that scans a pulse amplitude to calibrate rotations on the |0 <-> |1 transition.

Overview

The circuits have a custom rabi gate with the pulse schedule attached to it through the calibrations. The circuits are of the form:

           ┌───────────┐ ░ ┌─┐
      q_0: ┤ Rabi(amp) ├─░─┤M├
           └───────────┘ ░ └╥┘
measure: 1/═════════════════╩═
                            0

The user provides his own schedule for the Rabi at initialization which must have one free parameter, i.e. the amplitude to scan and a drive channel which matches the qubit.

User manual

Calibrating the pulse amplitudes with a Rabi experiment

See also Qiskit Textbook for the pulse level programming of a Rabi experiment.

Analysis class reference

OscillationAnalysis

Experiment options

These options can be set by the set_experiment_options() method.

Options
  • Defined in the class Rabi:

    • amplitudes (iterable)

      Default value: array(-0.95, -0.9119999999999999, -0.874, -0.836, -0.7979999999999999, ..., size=51)
      The list of amplitude values to scan.
    • schedule (ScheduleBlock)

      Default value: None
      The schedule for the Rabi pulse. This schedule must have exactly one free parameter. The drive channel should match the qubit.
  • 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.

Initialization

Initialize a Rabi experiment on the given qubit.

Parameters:
  • physical_qubits (Sequence[int]) – List with the qubit on which to run the Rabi experiment.

  • schedule (ScheduleBlock) – The schedule that will be used in the Rabi experiment. This schedule should have one free parameter namely the amplitude.

  • amplitudes (Optional[Iterable[float]]) – The pulse amplitudes that one wishes to scan. If this variable is not specified it will default to np.linspace(-0.95, 0.95, 51).

  • backend (Optional[Backend]) – Optional, the backend to run the experiment on.

Attributes

Rabi.analysis

Return the analysis instance for the experiment

Rabi.backend

Return the backend for the experiment

Rabi.experiment_options

Return the options for the experiment.

Rabi.experiment_type

Return experiment type.

Rabi.num_qubits

Return the number of qubits for the experiment.

Rabi.physical_qubits

Return the device qubits for the experiment.

Rabi.run_options

Return options values for the experiment run() method.

Rabi.transpile_options

Return the transpiler options for the run() method.

Methods

Rabi.circuits()

Create the circuits for the Rabi experiment.

Rabi.config()

Return the config dataclass for this experiment

Rabi.copy()

Return a copy of the experiment

Rabi.enable_restless([rep_delay, ...])

Enables a restless experiment by setting the restless run options and the restless data processor.

Rabi.from_config(config)

Initialize an experiment from experiment config

Rabi.run([backend, analysis, timeout])

Run an experiment and perform analysis.

Rabi.set_experiment_options(**fields)

Set the experiment options.

Rabi.set_run_options(**fields)

Set options values for the experiment run() method.

Rabi.set_transpile_options(**fields)

Set the transpiler options for run() method.