---
title: FakePerth (latest version)
description: API reference for qiskit_ibm_runtime.fake_provider.FakePerth in the latest version of qiskit-ibm-runtime
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit-ibm-runtime/fake-provider-fake-perth
---

# FakePerth

*class* `FakePerth`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/backends/perth/fake_perth.py#L21-L27)

Bases: `FakeBackendV2`

A fake 7 qubit backend.

Initialize a BackendV2 based backend

**Parameters**

- **provider** – An optional backwards reference to the provider object that the backend is from
- **name** – An optional name for the backend
- **description** – An optional description of the backend
- **online\_date** – An optional datetime the backend was brought online
- **backend\_version** – An optional backend version string. This differs from the [`version`](/docs/api/qiskit/qiskit.providers.BackendV2#version) attribute as [`version`](/docs/api/qiskit/qiskit.providers.BackendV2#version) is for the abstract `Backend` abstract interface version of the object while `backend_version` is for versioning the backend itself.
- **fields** – kwargs for the values to use to override the default options.

**Raises**

**AttributeError** – If a field is specified that’s outside the backend’s options

## Attributes

### backend\_name

Type: `str`

Default value: `'fake_perth'`

Name of the backend.

### conf\_filename

Type: `str`

Default value: `'conf_perth.json'`

Filename for the backend configuration.

### coupling\_map

Return the [`CouplingMap`](/docs/api/qiskit/qiskit.transpiler.CouplingMap) object

### dirname

Type: `str`

Default value: `'/home/runner/work/qiskit-ibm-runtime/qiskit-ibm-runtime/qiskit_ibm_runtime/fake_provider/backends/perth'`

Directory for the real backend snapshots.

### dt

Return the system time resolution of input signals

This is required to be implemented if the backend supports Pulse scheduling.

**Returns**

The input signal timestep in seconds. If the backend doesn’t define `dt`, `None` will be returned.

### dtm

Return the system time resolution of output signals.

**Returns**

The output signal timestep in seconds.

### instruction\_durations

Return the [`InstructionDurations`](/docs/api/qiskit/qiskit.transpiler.InstructionDurations) object.

### instructions

A list of Instruction tuples on the backend of the form `(instruction, (qubits))`

### max\_circuits

Return the maximum number of circuits that can be run in a single job.

This property used to return the max\_experiments value from the backend configuration but this value is no longer an accurate representation of backend circuit limits. New fields will be added to indicate new limits.

### meas\_map

Return the grouping of measurements which are multiplexed

This is required to be implemented if the backend supports Pulse scheduling.

**Returns**

The grouping of measurements which are multiplexed

**Raises**

**NotImplementedError** – if the backend doesn’t support querying the measurement mapping

### num\_qubits

Return the number of qubits the backend has.

### operation\_names

A list of instruction names that the backend supports.

### operations

A list of [`Instruction`](/docs/api/qiskit/qiskit.circuit.Instruction) instances that the backend supports.

### options

Return the options for the backend

The options of a backend are the dynamic parameters defining how the backend is used. These are used to control the [`run()`](#qiskit_ibm_runtime.fake_provider.FakePerth.run "qiskit_ibm_runtime.fake_provider.FakePerth.run") method.

### physical\_qubits

Return the number of physical qubits the backend has.

Return the number of physical qubits for the backend (programmable qubits, reset qubits, and couplers combined).

### props\_filename

Type: `str`

Default value: `'props_perth.json'`

Filename for the backend properties.

### provider

Return the backend provider.

**Returns**

the provider responsible for the backend.

**Return type**

provider

### target

A [`qiskit.transpiler.Target`](/docs/api/qiskit/qiskit.transpiler.Target) object for the backend.

**Return type**

Target

### version

Default value: `2`

### 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. This is not the same as `BackendV2.version`, which is the version of the `Backend` abstract interface.

## Methods

### check\_faulty

`check_faulty(circuit)`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/fake_backend.py#L177-L209)

Check if the input circuit uses faulty qubits or edges.

**Parameters**

**circuit** (*QuantumCircuit*) – Circuit to check.

**Raises**

**ValueError** – If an instruction operating on a faulty qubit or edge is found.

**Return type**

None

### configuration

`configuration()`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/fake_backend.py#L173-L175)

Return the backend configuration.

**Return type**

[QasmBackendConfiguration](/docs/api/qiskit-ibm-runtime/models-qasm-backend-configuration "qiskit_ibm_runtime.models.QasmBackendConfiguration")

### properties

`properties(refresh=False)`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/fake_backend.py#L160-L171)

Return the backend properties.

**Parameters**

**refresh** (*bool*) – If `True`, re-retrieve the backend properties from the local file.

**Returns**

The backend properties.

**Return type**

[*BackendProperties*](/docs/api/qiskit-ibm-runtime/models-backend-properties "qiskit_ibm_runtime.models.backend_properties.BackendProperties")

### qubit\_properties

`qubit_properties(qubit)`

Return QubitProperties for a given qubit.

If there are no defined or the backend doesn’t support querying these details this method does not need to be implemented.

**Parameters**

**qubit** (*int | list\[int]*) – The qubit to get the `QubitProperties` object for. This can be a single integer for 1 qubit or a list of qubits and a list of `QubitProperties` objects will be returned in the same order

**Returns**

The `QubitProperties` object for the specified qubit. If a list of qubits is provided a list will be returned. If properties are missing for a qubit this can be `None`.

**Raises**

**NotImplementedError** – if the backend doesn’t support querying the qubit properties

**Return type**

[*QubitProperties*](/docs/api/qiskit/qiskit.providers.QubitProperties) | list\[[*QubitProperties*](/docs/api/qiskit/qiskit.providers.QubitProperties)]

### refresh

`refresh(service, use_fractional_gates=False, persist=True)`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/fake_backend.py#L400-L505)

Update the data files from its real counterpart.

This method pulls the latest backend data files from their real counterpart and, by default (`persist=True`), overwrites the corresponding files in the local installation:

- `../fake_provider/backends/{backend_name}/conf_{backend_name}.json`
- `../fake_provider/backends/{backend_name}/props_{backend_name}.json`

The new data files will persist through sessions so the files will stay updated unless they are manually reverted locally or when `qiskit-ibm-runtime` is upgraded or reinstalled.

Overwriting the installed data files fails, however, when the package is installed in a read-only location (e.g. a system-wide `site-packages` directory). In that case, or whenever modifying the installed package is undesirable, pass `persist=False` to write the refreshed data to a temporary directory instead. The backend is still updated for the current session, but the changes are not persisted to disk and are lost once the backend is garbage collected or the process exits.

**Parameters**

- **service** ([*QiskitRuntimeService*](/docs/api/qiskit-ibm-runtime/qiskit-runtime-service "qiskit_ibm_runtime.QiskitRuntimeService")) – A `QiskitRuntimeService` instance
- **use\_fractional\_gates** (*bool*) – Set True to allow for the backends to include fractional gates.
- **persist** (*bool*) – If `True` (default), the refreshed data files overwrite the copies bundled with the installed package so the update persists across sessions. If `False`, the data is written to a temporary directory instead, which allows [`refresh()`](#qiskit_ibm_runtime.fake_provider.FakePerth.refresh "qiskit_ibm_runtime.fake_provider.FakePerth.refresh") to succeed even when the package is installed in a read-only location, at the cost of the update not persisting between sessions.

**Raises**

- **ValueError** – if the provided service is a non-QiskitRuntimeService instance.
- **Exception** – If the real target doesn’t exist or can’t be accessed

**Return type**

None

### run

`run(run_input, **options)`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/fake_backend.py#L289-L318)

Run on the fake backend using a simulator.

This method runs circuit jobs (an individual or a list of QuantumCircuit) using BasicSimulator or Aer simulator and returns a [`Job`](/docs/api/qiskit/qiskit.providers.Job) object.

If qiskit-aer is installed, jobs will be run using AerSimulator with noise model of the fake backend. Otherwise, jobs will be run using BasicSimulator without noise.

Currently noisy simulation of a pulse job is not supported yet in FakeBackendV2.

**Parameters**

- **run\_input** (*QuantumCircuit | list\[QuantumCircuit]*) – An individual or a list of [`QuantumCircuit`](/docs/api/qiskit/qiskit.circuit.QuantumCircuit)
- **options** (*dict*) – Any kwarg options to pass to the backend for running the config. If a key is also present in the options attribute/object then the expectation is that the value specified will be used instead of what’s set in the options object.

**Returns**

The job object for the run

**Return type**

Job

### set\_options

`set_options(**fields)`

Set the options fields for the backend

This method is used to update the options of a backend. If you need to change any of the options prior to running just pass in the kwarg with the new value for the options.

**Parameters**

**fields** – The fields to update the options

**Raises**

**AttributeError** – If the field passed in is not part of the options

### status

`status()`

[GitHub](https://github.com/Qiskit/qiskit-ibm-runtime/tree/stable/0.49/qiskit_ibm_runtime/fake_provider/fake_backend.py#L143-L158)

Return the backend status.

**Returns**

The status of the backend.

**Return type**

[*BackendStatus*](/docs/api/qiskit-ibm-runtime/models-backend-status "qiskit_ibm_runtime.models.backend_status.BackendStatus")
