---
title: NoiseLearnerV3 (latest version)
description: API reference for qiskit_ibm_runtime.noise_learner_v3.NoiseLearnerV3 in the latest version of qiskit-ibm-runtime
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit-ibm-runtime/noise-learner-v3-noise-learner-v3
---

# NoiseLearnerV3

*class* `NoiseLearnerV3(mode=None, options=None)`

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

Bases: `object`

Class for executing noise learning experiments.

The noise learner allows characterizing the noise processes affecting target instructions, based on the Pauli-Lindblad noise model described in \[1]. The instructions provided to the [`run()`](#qiskit_ibm_runtime.noise_learner_v3.NoiseLearnerV3.run "qiskit_ibm_runtime.noise_learner_v3.NoiseLearnerV3.run") method must contain a twirled-annotated [`BoxOp`](/docs/api/qiskit/qiskit.circuit.BoxOp) containing ISA operations. The result of a noise learner job contains a list of [`NoiseLearnerV3Result`](/docs/api/qiskit-ibm-runtime/results-noise-learner-v3-result "qiskit_ibm_runtime.results.NoiseLearnerV3Result") objects, one for each given instruction.

**Parameters**

- **mode** (*BackendV2 |* [*Session*](/docs/api/qiskit-ibm-runtime/session "qiskit_ibm_runtime.Session")  *|*[*Batch*](/docs/api/qiskit-ibm-runtime/batch "qiskit_ibm_runtime.Batch") *| None*) –

  The execution mode used to make the primitive query. It can be:

  - A `Backend` if you are using job mode.
  - A `Session` if you are using session execution mode.
  - A `Batch` if you are using batch execution mode.

  Refer to the [IBM Quantum Compute (formerly Qiskit Runtime) documentation](/docs/guides/execution-modes) for more information about the execution modes.

- **options** ([*NoiseLearnerV3Options*](/docs/api/qiskit-ibm-runtime/options-models-noise-learner-v3-options "qiskit_ibm_runtime.options_models.noise_learner_v3.NoiseLearnerV3Options")) – The desired options.

**References**

1. E. van den Berg, Z. Minev, A. Kandala, K. Temme, *Probabilistic error cancellation with sparse Pauli–Lindblad models on noisy quantum processors*, Nature Physics volume 19, pages 1116–1121 (2023). [arXiv:2201.09866 \[quant-ph\]](https://arxiv.org/abs/2201.09866)

## Attributes

### options

Type: `NoiseLearnerV3Options`

The options in this noise learner.

## Methods

### backend

`backend()`

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

Return the backend the primitive query will be run on.

**Return type**

BackendV2

### run

`run(instructions)`

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

Submit a request to the noise learner program.

Two protocols are supported:

- **Lindblad: for boxed instructions which content can be cast to**

  [`Clifford`](/docs/api/qiskit/qiskit.quantum_info.Clifford) and contain a single layer of (up to) two qubit gates.

- TREX: for boxed instructions which content can contain exactly one measurement per qubit.

> **Note**
>
> To minimize the number of noise learning experiments, call `find_unique_box_instructions()` before running the noise learning job.

**Parameters**

**instructions** (*Iterable\[CircuitInstruction]*) – The instructions to learn the noise of.

**Returns**

The submitted job.

**Raises**

**IBMInputValueError** – If the instructions cannot be used with the noise learner, such as: \* If an instruction contains a box without twirl annotation. \* If an instruction contains unphysical qubits, i.e., qubits that do not belong to the “physical” register `QuantumRegister(backend.num_qubits, 'q')` for the backend in use. \* If an instruction contains a box with non-ISA gates. \* If an instruction cannot be learned by any of the supported learning protocols.

**Return type**

[RuntimeJobV2](/docs/api/qiskit-ibm-runtime/runtime-job-v2 "qiskit_ibm_runtime.RuntimeJobV2")
