iqm.qiskit_iqm.iqm_backend.IQMBackendBase#

class iqm.qiskit_iqm.iqm_backend.IQMBackendBase(architecture: QuantumArchitectureSpecification | DynamicQuantumArchitecture, **kwargs)#

Bases: BackendV2, ABC

Abstract base class for various IQM-specific backends.

Parameters:

architecture (Union[QuantumArchitectureSpecification, DynamicQuantumArchitecture]) – Description of the quantum architecture associated with the backend instance.

Attributes

physical_qubits

Return the list of physical qubits in the backend.

target

A qiskit.transpiler.Target object for the backend.

target_with_resonators

Return the target with MOVE gates and resonators included.

architecture

Dynamic quantum architecture of the backend instance.

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

get_real_target()

Return the real physical target of the backend without virtual CZ gates.

get_scheduling_stage_plugin()

Return the plugin that should be used for scheduling the circuits on this backend.

has_resonators()

True iff the backend QPU has computational resonators.

index_to_qubit_name(index)

Given a quantum register index, return the corresponding IQM-style qubit name.

qubit_name_to_index(name)

Given an IQM-style qubit name, return the corresponding index in the register.

restrict_to_qubits(qubits[, ...])

Generated a restricted transpilation target from this backend that only contains the given qubits.

architecture: DynamicQuantumArchitecture#

Dynamic quantum architecture of the backend instance.

property target: Target#

A qiskit.transpiler.Target object for the backend.

Return type:

Target

property target_with_resonators: Target#

Return the target with MOVE gates and resonators included.

property physical_qubits: list[str]#

Return the list of physical qubits in the backend.

has_resonators() bool#

True iff the backend QPU has computational resonators.

Return type:

bool

get_real_target() Target#

Return the real physical target of the backend without virtual CZ gates.

Return type:

Target

qubit_name_to_index(name: str) int#

Given an IQM-style qubit name, return the corresponding index in the register.

Parameters:

name (str) – IQM-style qubit name (‘QB1’, ‘QB2’, etc.)

Returns:

Index of the given qubit in the quantum register.

Raises:

ValueError – Qubit name cannot be found on the backend.

Return type:

int

index_to_qubit_name(index: int) str#

Given a quantum register index, return the corresponding IQM-style qubit name.

Parameters:

index (int) – Qubit index in the quantum register.

Returns:

Corresponding IQM-style qubit name (‘QB1’, ‘QB2’, etc.).

Raises:

ValueError – Qubit index cannot be found on the backend.

Return type:

str

get_scheduling_stage_plugin() str#

Return the plugin that should be used for scheduling the circuits on this backend.

Return type:

str

restrict_to_qubits(qubits: list[int] | list[str], include_resonators: bool = False, include_fake_czs: bool = True) IQMTarget#

Generated a restricted transpilation target from this backend that only contains the given qubits.

Parameters:
  • qubits (list[int] | list[str]) – Qubits to restrict the target to. Can be either a list of qubit indices or qubit names.

  • include_resonators (bool) – Whether to restrict self.target or self.target_with_resonators.

  • include_fake_czs (bool) – Whether to include virtual CZs that are unsupported, but could be routed via MOVE.

Returns:

restricted target

Return type:

IQMTarget