============
Introduction
============

What is Qiskit Experiments?
===========================

Qiskit Experiments is a package for running device characterization and calibration 
experiments on top of the core functionality of Qiskit.

An **experiment** comprises a series of circuits and associated metadata. 
Once the experiment circuits are executed on a quantum backend, either 
real or simulated, analysis is run automatically on the jobs and results
in the form of data, fit parameters, and figures are generated.

In addition to the experiment framework itself, Qiskit Experiments also has a rich 
library of experiments for calibrating and characterizing qubits.

What Qiskit Experiments can do
==============================

* Run characterization and calibration experiments such as quantum
  volume and randomized benchmarking
* Run built-in or customized experiments with all the options available in Qiskit
* Specify fit series and parameters in the analysis
* Transform the data through the data processor
* Visualize data with support for custom drawing backends
* Save and retrieve timestamped calibration parameters for physical backends

.. _primer:

A quick primer
==============

The Qiskit Experiments package consists of the experimental framework and the experiment
library. The framework itself consists of ``Experiment`` and ``Analysis`` classes, the
latter of which uses the Data Processor, Curve Analysis, and Visualization modules
to process the data, fit it to specified models, and plot the results, respectively.

.. figure:: images/experimentarch.png
    :width: 400
    :align: center
    :class: no-scaled-link


Experiments start with an ``Experiment`` class, which instantiates the circuits that
will be run and also the metadata and options that will be used for the experiment, 
transpilation, execution, and analysis. During execution, circuits are automatically
packaged into one or more jobs for the specified backend device.

Each ``Experiment`` class is tied to its corresponding ``Analysis`` class. Once jobs
complete execution, the ``Analysis`` class processes and analyzes raw data to output 
an ``ExperimentData`` class that contains
the resulting analysis results, figures, metadata, as well as the original raw data.