iqm.qiskit_iqm.fake_backends.iqm_fake_backend.IQMFakeBackend#

class iqm.qiskit_iqm.fake_backends.iqm_fake_backend.IQMFakeBackend(architecture: QuantumArchitectureSpecification, error_profile: IQMErrorProfile, name: str = 'IQMFakeBackend', **kwargs)#

Bases: IQMBackendBase

Simulated backend that mimics the behaviour of IQM quantum computers.

Can be used to perform noisy gate-level simulations of quantum circuit execution on IQM hardware.

A fake backend contains information about a specific IQM system, such as the quantum architecture (number of qubits, connectivity), the native gate set, and a noise model based on system parameters such as relaxation (\(T_1\)) and dephasing (\(T_2\)) times, gate infidelities, and readout errors.

Parameters:

Attributes

error_profile

Error profile of this instance of IQM fake backend

max_circuits

The maximum number of circuits (or Pulse schedules) that can be run in a single job.

architecture

name

Name of the backend.

description

Optional human-readable description.

online_date

Date that the backend came online.

backend_version

Version of the backend being provided.

Methods

_create_noise_model(architecture, error_profile)

Builds a noise model from the attributes.

_default_options()

Return the default options

_validate_architecture_and_error_profile(...)

Verifies that the parameters of the QPU error profile match the constraints of its quantum architecture.

copy_with_error_profile(new_error_profile)

Return another instance of IQMFakeBackend, which has the same quantum architecture but a different error profile.

run(run_input, **options)

Run run_input on the fake backend using a simulator.

validate_compatible_architecture(architecture)

Compare a dynamic quantum architecture to the static architecture of the fake backend.

property error_profile: IQMErrorProfile#

Error profile of this instance of IQM fake backend

copy_with_error_profile(new_error_profile: IQMErrorProfile) IQMFakeBackend#

Return another instance of IQMFakeBackend, which has the same quantum architecture but a different error profile.

Parameters:

new_error_profile (IQMErrorProfile) –

Return type:

IQMFakeBackend

property max_circuits: int | None#

The maximum number of circuits (or Pulse schedules) that can be run in a single job.

If there is no limit this will return None

run(run_input: QuantumCircuit | list[QuantumCircuit] | IQMCircuit | list[IQMCircuit], **options) JobV1#

Run run_input on the fake backend using a simulator.

This method runs circuit jobs (an individual or a list of QuantumCircuit or IQMCircuit ) and returns a JobV1 object.

It will run the simulation with a noise model of the fake backend (e.g. Adonis, Deneb). Validity of move gates is also checked. The method also transpiles circuit to the native gates so that moves are implemented as unitaries.

Parameters:
Returns:

The job object representing the run.

Raises:

ValueError – If empty list of circuits is provided.

Return type:

JobV1

validate_compatible_architecture(architecture: DynamicQuantumArchitecture) bool#

Compare a dynamic quantum architecture to the static architecture of the fake backend.

Parameters:

architecture (DynamicQuantumArchitecture) – dynamic quantum architecture to compare to

Returns:

True iff the number and names of the locus components, the component connectivity, and the available operations in the DQA match the static architecture of this backend.

Return type:

bool