TiledExperiment

class TiledExperiment(template_experiment, groups)[source]

Composite experiment that duplicates a given experiment across the device.

Overview

This class creates a batch experiment that runs copies of a template experiment on different groups of qubits across a device. The template experiment is transpiled once, and then the transpiled circuits are remapped to different physical qubits without re-transpiling.

Note

This approach prioritizes speed over correctness. The transpilation is done once and circuits are remapped by changing qubit indices. This may not correctly handle:

  • Qubit connectivity constraints

  • Gate directionality requirements

  • Gates only supported on a subset of qubits

  • Parameters (like delays) added based on gate durations that could vary by qubit

Additionally, the template circuit is transpiled with qubits 0-N, so the mapped groups must match the connectivity of the initial qubits (e.g., if qubits 0 and 1 are not connected, 2-qubit experiments like RB will not work correctly).

Use with caution and verify results, especially when using backend-specific features.

Example

import numpy as np
from qiskit_experiments.library import T1
from qiskit_experiments.framework.composite import TiledExperiment

delays = np.arange(1.e-6, 300.e-6, 30.e-6)
template_exp = T1(physical_qubits=(0,), delays=delays, backend=backend)

# Partition the backend qubits with minimum distance of 3
groups = [
    [[2]],
    [[1], [4]],
    [[0], [3]],
]

# Create tiled experiment
tiled_exp = TiledExperiment(template_exp, groups)
exp_data = tiled_exp.run().block_for_results()
exp_data.analysis_results(dataframe=True)
name experiment components value quality backend run_time chisq unit
20fb3b9f T1 BasicExperiment [Q2] 0.000148+/-0.000014 bad aer_simulator_from(fake_manila) None 1.258718 s
634d7d29 T1 BasicExperiment [Q1] 0.000121+/-0.000007 good aer_simulator_from(fake_manila) None 0.940875 s
9cea2535 T1 BasicExperiment [Q4] 0.000127+/-0.000008 good aer_simulator_from(fake_manila) None 1.278057 s
1d0a30c8 T1 BasicExperiment [Q0] 0.000130+/-0.000008 good aer_simulator_from(fake_manila) None 2.789186 s
73960185 T1 BasicExperiment [Q3] 0.000217+/-0.000023 good aer_simulator_from(fake_manila) None 0.93392 s

Initialize a TiledExperiment.

Parameters:
  • template_experiment (BaseExperiment) – The experiment to tile across the device. This experiment will be transpiled once, and the transpiled circuits will be remapped to different qubit groups.

  • groups (List[List[Sequence[int]]]) –

    A list of groups, where each group is a list of qubit tuples/lists. Each group will be run in parallel, and groups are run in batch (sequentially).

    Example groups structure:

    [
        [[0, 1], [3, 4], [6, 7]],  # First parallel group
        [[2, 3], [5, 6], [8, 9]],  # Second parallel group
    ]
    

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)

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.