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.

Tphi

class Tphi(physical_qubits, delays_t1, delays_t2, t2type='hahn', osc_freq=0.0, num_echoes=1, backend=None)[source]

An experiment to measure the qubit dephasing rate in the \(x - y\) plane.

Overview

\(T_\varphi\), or \(1/\Gamma_\varphi\), is the pure dephasing time in the \(x - y\) plane of the Bloch sphere. We compute \(\Gamma_\varphi\) by computing \(\Gamma_2\), the transverse relaxation rate, and subtracting \(\Gamma_1\), the longitudinal relaxation rate. It follows that

\(1/T_\varphi = 1/T_2 - 1/2T_1\).

The transverse relaxation rate can be estimated by either \(T_2\) or \(T_2^*\) experiments. In superconducting qubits, \(T_2^*\) tends to be significantly smaller than \(T_1\), so \(T_2\) is usually used.

Note

In 0.5.0, this experiment changed from using \(T_2^*\) as the default to \(T_2\).

References

[1] Philip Krantz, Morten Kjaergaard, Fei Yan, Terry P. Orlando, Simon Gustavsson, William D. Oliver, A Quantum Engineer’s Guide to Superconducting Qubits, Applied Physics Reviews 6, 021318 (2019), doi: 10.1063/1.5089550 (open)

User manual

Tφ Characterization

Analysis class reference

TPhiAnalysis

Experiment options

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

Options
  • Defined in the class BatchExperiment:

    • separate_jobs (Boolean)

      Default value: False
      Whether to route different sub-experiments to different jobs.
  • 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
import qiskit
from qiskit_experiments.library.characterization import Tphi

delays_t1 = np.arange(1e-6, 300e-6, 10e-6)
delays_t2 = np.arange(1e-6, 50e-6, 2e-6)

exp = Tphi(physical_qubits=(0, ),
            delays_t1=delays_t1,
            delays_t2=delays_t2,
            backend=backend
            )

exp_data = exp.run().block_for_results()
display(exp_data.figure(0))
display(exp_data.figure(1))
exp_data.analysis_results(dataframe=True)
../_images/qiskit_experiments.library.characterization.Tphi_1_0.png ../_images/qiskit_experiments.library.characterization.Tphi_1_1.png
name experiment components value quality backend run_time unit chisq
10ba417f T_phi Tphi [Q0] 0.00017+/-0.00014 bad aer_simulator_from(fake_manila) None s None
99323d9c @Parameters_T1Analysis T1 [Q0] CurveFitResult:\n - fitting method: least_squa... good aer_simulator_from(fake_manila) None None None
1e192d41 T1 T1 [Q0] 0.000128+/-0.000004 good aer_simulator_from(fake_manila) None s 0.813548
8c150202 @Parameters_T2HahnAnalysis T2Hahn [Q0] CurveFitResult:\n - fitting method: least_squa... bad aer_simulator_from(fake_manila) None None None
2c0f3508 T2 T2Hahn [Q0] 0.00010+/-0.00005 bad aer_simulator_from(fake_manila) None s 0.911198

See also

Initialization

Initialize the experiment object.

Parameters:
  • physical_qubits (Sequence[int]) – A single-element sequence containing the qubit under test.

  • t2type (str) – What type of T2/T2* experiment to use. Can be either “ramsey” for T2Ramsey to be used, or “hahn” for T2Hahn. Defaults to “hahn”.

  • delays_t1 (List[List[float] | array]) – Delay times of the T1 experiment.

  • delays_t2 (List[List[float] | array]) – Delay times of the T2 experiment.

  • osc_freq (float) – The oscillation frequency induced for T2Ramsey. Only used when t2type is set to “ramsey”.

  • num_echoes (int) – The number of echoes to perform for T2Hahn. Only used when t2type is set to “hahn”.

  • backend (Backend | None) – Optional, the backend on which to run the experiment.

Raises:

QiskitError – If an invalid t2type is provided.

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_experiments

Return the number of sub experiments

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()

Return a list of experiment circuits.

Returns:

A list of QuantumCircuit.

Note

These circuits should be on qubits [0, .., N-1] for an N-qubit experiment. The circuits mapped to physical qubits are obtained via the internal _transpiled_circuits() method.

component_experiment(index=None)

Return the component Experiment object.

Parameters:

index (int) – Experiment index, or None if all experiments are to be returned.

Returns:

The component experiment(s).

Return type:

BaseExperiment

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)[source]

Set the experiment options. :param fields: The fields defining the options.

Raises:

QiskitError – Invalid input option.

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.