{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "c457f721-e66d-403e-84be-10b26863c86d",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Specificare le opzioni di Estimator\"\n",
        "description: \"Specificare le opzioni durante la creazione con la primitiva Estimator.\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-estimator-options\" />\n",
        "\n",
        "# Specificare le opzioni di Estimator\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "1a97b5d6-3fb2-4c33-9b95-807bb6768a84",
      "metadata": {
        "tags": [
          "version-info"
        ]
      },
      "source": [
        "{/*\n",
        "  DO NOT EDIT THIS CELL!!!\n",
        "  This cell's content is generated automatically by a script. Anything you add\n",
        "  here will be removed next time the notebook is run. To add new content, create\n",
        "  a new cell before or after this one.\n",
        "  */}\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Versioni del pacchetto\">\n",
        "    Il codice presente in questa pagina è stato sviluppato sulla base dei seguenti requisiti.\n",
        "    Si consiglia di utilizzare queste versioni o quelle più recenti.\n",
        "\n",
        "    ```\n",
        "    qiskit[all]~=2.5.1\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3c1e38b5-3f01-4818-943e-f52d877be6ad",
      "metadata": {},
      "source": [
        "È possibile utilizzare le opzioni per personalizzare la primitiva Estimator. Sebbene l'interfaccia del metodo `run()` delle primitive sia comune a tutte le implementazioni, le relative opzioni non lo sono. Per informazioni sulle opzioni [`qiskit.primitives.BaseEstimatorV2`](/docs/api/qiskit/qiskit.primitives.BaseEstimatorV2) [`qiskit_aer.BaseEstimatorV2`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.primitives.EstimatorV2.html) e, consultare la documentazione dell'API.\n",
        "\n",
        "Note:\n",
        "\n",
        "<Admonition type=\"note\" title=\"Note sulla specificazione delle opzioni nelle primitive di Estimator\">\n",
        "  * È possibile visualizzare le opzioni disponibili e aggiornare i valori delle opzioni durante o dopo l'inizializzazione di Estimator.\n",
        "  * Utilizza il `update()` metodo per applicare le modifiche all'attributo `options` .\n",
        "  * Se non si specifica un valore per un'opzione, le viene assegnato il valore speciale e vengono utilizzati i valori predefiniti del `Unset` server.\n",
        "  * `options` L'attributo è di `dataclass` tipo Python.  È possibile utilizzare il metodo integrato `asdict` per convertirlo in un dizionario.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-estimator-options\" />\n",
        "\n",
        "## Imposta le opzioni di Estimator\n",
        "\n",
        "È possibile impostare le opzioni al momento dell'inizializzazione di Estimator, dopo l'inizializzazione di Estimator oppure (solo in `precision` questo caso) nel `run()` metodo.\n",
        "\n",
        "<span id=\"primitive-initialization\" />\n",
        "\n",
        "### Inizializzazione primitiva\n",
        "\n",
        "Durante l'inizializzazione di Estimator è possibile passare un'istanza della classe delle opzioni o un dizionario; Estimator provvederà quindi a crearne una copia. Pertanto, la modifica del dizionario originale o dell'istanza delle opzioni non influisce sulle opzioni associate alla primitiva.\n",
        "\n",
        "<span id=\"options-class\" />\n",
        "\n",
        "#### Corso sulle opzioni\n",
        "\n",
        "Quando si crea un'istanza della `EstimatorV2` classe, è possibile passare un'istanza della classe delle opzioni. Queste opzioni verranno quindi applicate quando utilizzerai `run()` per eseguire il calcolo.  Specificare le opzioni nel seguente formato: `options.option.sub-option.sub-sub-option = choice`.  Ad esempio: `options.dynamical_decoupling.enable = True`\n",
        "\n",
        "Esempio:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "a20ed38a-31b7-4f0a-aed1-bd11046ab10e",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "from qiskit_ibm_runtime.options import EstimatorOptions\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "options = EstimatorOptions(\n",
        "    resilience_level=2,\n",
        "    resilience={\"zne_mitigation\": True, \"zne\": {\"noise_factors\": [1, 3, 5]}},\n",
        ")\n",
        "\n",
        "# or...\n",
        "options = EstimatorOptions()\n",
        "options.resilience_level = 2\n",
        "options.resilience.zne_mitigation = True\n",
        "options.resilience.zne.noise_factors = [1, 3, 5]\n",
        "\n",
        "estimator = Estimator(mode=backend, options=options)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "dc5ba623-45f2-4abf-9478-ff83490b480c",
      "metadata": {},
      "source": [
        "<span id=\"dictionary\" />\n",
        "\n",
        "#### Dizionario\n",
        "\n",
        "È possibile specificare le opzioni sotto forma di dizionario al momento dell'inizializzazione di Estimator.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "869e4bf1-a7f9-4a66-8876-f327dcb87811",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "# Setting options during initialization\n",
        "estimator = Estimator(\n",
        "    backend,\n",
        "    options={\n",
        "        \"resilience_level\": 2,\n",
        "        \"resilience\": {\n",
        "            \"zne_mitigation\": True,\n",
        "            \"zne\": {\"noise_factors\": [1, 3, 5]},\n",
        "        },\n",
        "    },\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "498899b6-3253-4348-9589-19dbbd6bc22b",
      "metadata": {},
      "source": [
        "<span id=\"update-options-after-initialization\" />\n",
        "\n",
        "### Opzioni di aggiornamento dopo l'inizializzazione\n",
        "\n",
        "È possibile specificare le opzioni in questo formato: `estimator.options.option.sub-option.sub-sub-option = choice` per usufruire del completamento automatico, oppure utilizzare il `update()` metodo per effettuare aggiornamenti in blocco.\n",
        "\n",
        "Non è necessario istanziare la classe delle `EstimatorV2` opzioni ([`EstimatorOptions`](/docs/api/qiskit-ibm-runtime/options-estimator-options)) se si impostano le opzioni dopo aver inizializzato il tipo primitivo.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "id": "1cd195bb-50a5-4c64-aa0b-effb1ea621ce",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "estimator = Estimator(mode=backend)\n",
        "\n",
        "# Setting options after initialization\n",
        "# This uses auto-complete.\n",
        "estimator.options.default_precision = 0.01\n",
        "# This does bulk update.\n",
        "estimator.options.update(\n",
        "    default_precision=0.02, resilience={\"zne_mitigation\": True}\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "7cde6f7f-278e-4170-afa3-2c3fb4ec4bfa",
      "metadata": {},
      "source": [
        "<span id=\"run-method\" />\n",
        "\n",
        "<span id=\"run-method\" />\n",
        "\n",
        "### Metodo Run()\n",
        "\n",
        "Gli unici valori che è possibile passare `run()` sono quelli definiti nell'interfaccia.  Cioè, `precision` per Estimator. Questo sovrascrive qualsiasi valore impostato per `default_precision` nell'esecuzione corrente.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "id": "c0606f38-2bed-4b56-8202-708669e5ea66",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9mqa0g8csec73fagtl0', 'estimator')>"
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\n",
        "from qiskit.quantum_info import SparsePauliOp\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "circuit1 = random_iqp(3)\n",
        "circuit1.measure_all()\n",
        "circuit2 = random_iqp(3)\n",
        "circuit2.measure_all()\n",
        "\n",
        "observable = SparsePauliOp(\"Z\" * 3)\n",
        "\n",
        "pass_manager = generate_preset_pass_manager(\n",
        "    optimization_level=3, backend=backend\n",
        ")\n",
        "\n",
        "transpiled1 = pass_manager.run(circuit1)\n",
        "transpiled2 = pass_manager.run(circuit2)\n",
        "isa_observable1 = observable.apply_layout(transpiled1.layout)\n",
        "isa_observable2 = observable.apply_layout(transpiled2.layout)\n",
        "\n",
        "estimator = Estimator(mode=backend)\n",
        "# Default precision to use if not specified in run()\n",
        "estimator.options.default_precision = 0.01\n",
        "# Run two circuits, requiring a precision of .02 for both.\n",
        "estimator.run(\n",
        "    [(transpiled1, isa_observable1), (transpiled2, isa_observable2)],\n",
        "    precision=0.02,\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "effe450a-255f-4837-a276-c8c3ea6e2db0",
      "metadata": {},
      "source": [
        "<span id=\"special-case-precision\" />\n",
        "\n",
        "### Caso particolare: precisione\n",
        "\n",
        "Il `EstimatorV2.run` metodo accetta due argomenti: un elenco di PUB, ciascuno dei quali può specificare un valore di precisione specifico per l' PUB, e un argomento chiave denominato \"precision\". Questi valori di precisione fanno parte dell'interfaccia di esecuzione dell'Estimator e sono indipendenti dalle opzioni dell'Estimator di runtime.  Hanno la precedenza su qualsiasi valore specificato come opzione, al fine di rispettare l'astrazione dell'Estimator.\n",
        "\n",
        "Tuttavia, se non `precision` è specificato né tramite l'opzione `PUB` né nell'argomento della parola chiave `run` (o se entrambi sono impostati su `None`), viene utilizzato il valore di precisione specificato nelle opzioni, in particolare `default_precision`.\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Questi parametri di precisione servono esclusivamente a specificare la precisione *desiderata*; non è garantito che i risultati raggiungano effettivamente la precisione specificata.\n",
        "</Admonition>\n",
        "\n",
        "Si noti che le opzioni di Estimator includono sia `default_shots` che `default_precision`. Tuttavia, poiché la funzione \"gate-twirling\" è abilitata per impostazione predefinita, il prodotto di `num_randomizations` e `shots_per_randomization` ha la precedenza su queste due opzioni.\n",
        "\n",
        "In particolare, per qualsiasi file di configurazione dell'Estimator ( PUB ):\n",
        "\n",
        "1. Se il parametro `PUB` specifica la precisione, utilizzare quel valore.\n",
        "2. Se nell'argomento è specificato il valore `run` di precisione, utilizzare quel valore.\n",
        "3. Se `twirling` è abilitato (impostazione predefinita: True), viene utilizzato il prodotto di `num_randomizations` e `shots_per_randomization`, come specificato nelle [`twirling` opzioni](/docs/api/qiskit-ibm-runtime/options-twirling-options).\n",
        "4. Se `estimator.options.default_shots` viene specificato, utilizzare quel valore per regolare la quantità di dati.\n",
        "5. Se `estimator.options.default_precision` viene specificato, utilizzare quel valore.\n",
        "\n",
        "Ad esempio, se la precisione è specificata in tutte e quattro le posizioni, viene utilizzata quella con la precedenza più alta (la precisione specificata nell' PUB ).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Sebbene la precisione specificata nell' PUB e e in `run` abbia una precedenza maggiore, il processo fallisce se `twirling` è abilitato e il prodotto di `num_randomizations` e `shots_per_randomization` è inferiore al numero di shot necessari per raggiungere la precisione richiesta. `num_randomizations`In questo scenario, `EstimatorV2` non è in grado di distribuire i colpi tra i specificati.\n",
        "</Admonition>\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  La precisione è inversamente proporzionale all'uso.  In altre parole, minore è la precisione, maggiore è il tempo di elaborazione richiesto dalla QPU.\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "bf02c107-226e-443a-ab4c-dfd3246ada2c",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9mqa2o8csec73fagtpg', 'estimator')>"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\n",
        "from qiskit.quantum_info import SparsePauliOp\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "observable = SparsePauliOp(\"Z\" * 3)\n",
        "\n",
        "circuit = random_iqp(3)\n",
        "circuit.measure_all()\n",
        "\n",
        "pass_manager = generate_preset_pass_manager(\n",
        "    optimization_level=3, backend=backend\n",
        ")\n",
        "\n",
        "isa_circuit = pass_manager.run(circuit)\n",
        "isa_observable = observable.apply_layout(isa_circuit.layout)\n",
        "\n",
        "# Setting precision during primitive initialization\n",
        "estimator = Estimator(mode=backend, options={\"default_precision\": 0.05})\n",
        "\n",
        "# Run with precision=0.02, overwriting the default.\n",
        "estimator.run(\n",
        "    [(isa_circuit, isa_observable1)],\n",
        "    precision=0.02,\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "be2f096d-355a-4f5f-8729-4808a0c5791d",
      "metadata": {},
      "source": [
        "<span id=\"no-error-mitigation\" />\n",
        "\n",
        "<span id=\"turn-off-all-error-mitigation-and-error-suppression\" />\n",
        "\n",
        "## Disattiva tutte le funzioni di mitigazione e soppressione degli errori\n",
        "\n",
        "È possibile disattivare tutte le funzioni di mitigazione e soppressione degli errori se, ad esempio, si sta conducendo una ricerca sulle proprie tecniche di mitigazione. Per farlo, imposta `resilience_level = 0`.\n",
        "\n",
        "Esempio:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "id": "0e357659-44c4-4332-80b9-c0a9080adfbd",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator, QiskitRuntimeService\n",
        "\n",
        "# Define the service.  This allows you to access an IBM QPU.\n",
        "service = QiskitRuntimeService()\n",
        "\n",
        "# Get a backend\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "# Define Estimator\n",
        "estimator = Estimator(backend)\n",
        "\n",
        "options = estimator.options\n",
        "\n",
        "# Turn off all error mitigation and suppression\n",
        "options.resilience_level = 0"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e64d93fc-2a2c-4e6b-a94a-fd7142858c99",
      "metadata": {},
      "source": [
        "<span id=\"options-table\" />\n",
        "\n",
        "<span id=\"available-options\" />\n",
        "\n",
        "## Opzioni disponibili\n",
        "\n",
        "La tabella seguente illustra le opzioni disponibili nell'ultima versione di `qiskit-ibm-runtime`. Per visualizzare le versioni precedenti delle opzioni, visita la [`qiskit-ibm-runtime` documentazione dell'API](/docs/api/qiskit-ibm-runtime) e seleziona una versione precedente.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"`default_shots`\">\n",
        "    Il numero totale di impulsi da utilizzare per circuito per configurazione.\n",
        "\n",
        "    **Opzioni** : numero intero >= 0\n",
        "\n",
        "    **Impostazione predefinita** : Nessuna\n",
        "\n",
        "    [`default_shots` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`default_precision`\">\n",
        "    La precisione predefinita da utilizzare per qualsiasi chiamata a ` PUB`run()` ` che non ne specifichi una.\n",
        "\n",
        "    **Opzioni** : Float > 0\n",
        "\n",
        "    **Impostazione predefinita** : 0.015625 (1 / √4096)\n",
        "\n",
        "    [`default_precision` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#default_precision)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`dynamical_decoupling`\">\n",
        "    Gestire le impostazioni di mitigazione degli errori di disaccoppiamento dinamico.\n",
        "\n",
        "    [`dynamical_decoupling` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#dynamical_decoupling)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`dynamical_decoupling.enable`\">\n",
        "        **Opzioni** : `True`, `False`\n",
        "\n",
        "        **Impostazione predefinita** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.extra_slack_distribution`\">\n",
        "        **Opzioni** : `middle`, `edges`\n",
        "\n",
        "        **Impostazione predefinita** : `middle`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.scheduling_method`\">\n",
        "        Opzioni: `asap`, `alap`\n",
        "        Impostazione predefinita: `alap`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.sequence_type`\">\n",
        "        Opzioni: `XX`, `XpXm`, `XY4`\n",
        "        Impostazione predefinita: `XX`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.skip_reset_qubits`\">\n",
        "        Opzioni: `True`, `False`\n",
        "        Impostazione predefinita: `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`environment`\">\n",
        "    [`environment` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.callback`\">\n",
        "        Funzione richiamabile che riceve `Job ID` e `Job result`.\n",
        "\n",
        "        **Opzioni** : Nessuna\n",
        "\n",
        "        **Impostazione predefinita** : Nessuna\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.job_tags`\">\n",
        "        Elenco dei tag.\n",
        "\n",
        "        **Opzioni** : Nessuna\n",
        "\n",
        "        **Impostazione predefinita** : Nessuna\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.log_level`\">\n",
        "        **Opzioni** : DEBUG, INFO, AVVISO, ERRORE, CRITICO\n",
        "\n",
        "        **Impostazione predefinita** : AVVISO\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.private`\">\n",
        "        **Opzioni** : `True`, `False`\n",
        "\n",
        "        **Impostazione predefinita** : `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`execution`\">\n",
        "    [`execution` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#execution)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`execution.init_qubits`\">\n",
        "        Se riportare i qubit allo stato fondamentale ad ogni esecuzione.\n",
        "\n",
        "        **Opzioni** : `True`, `False`\n",
        "\n",
        "        **Impostazione predefinita** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.rep_delay`\">\n",
        "        Il ritardo tra una misurazione e il successivo circuito quantistico.\n",
        "\n",
        "        **Opzioni** : Valore compreso nell'intervallo specificato da `backend.rep_delay_range`\n",
        "\n",
        "        **Impostazione predefinita** : specificata da `backend.default_rep_delay`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`max_execution_time`\">\n",
        "    Limita la durata di esecuzione di un processo, in secondi. Per ulteriori dettagli, consulta la guida [sul tempo massimo di esecuzione](/docs/guides/max-execution-time).\n",
        "\n",
        "    **Opzioni** : numero intero di secondi compreso tra \\[1 e 10800]\n",
        "\n",
        "    **Impostazione predefinita** : 10800 (3 ore)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`resilience`\">\n",
        "    Opzioni avanzate di resilienza per ottimizzare la strategia di resilienza.\n",
        "\n",
        "    [`resilience` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning`\">\n",
        "        Opzioni per l'apprendimento del rumore del livello.\n",
        "\n",
        "        [`resilience.layer_noise_learning` Documentazione API](/docs/api/qiskit-ibm-runtime/options-layer-noise-learning-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.layer_pair_depths`\">\n",
        "        **Opzioni** : \\[elenco] di 2-10 valori compresi tra \\[0 e 200]\n",
        "\n",
        "        **Impostazione predefinita** : `(0, 1, 2, 4, 16, 32)`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.max_layers_to_learn`\">\n",
        "        **Opzioni** : Nessuna, numero intero >= 1\n",
        "\n",
        "        **Impostazione predefinita** : `4`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.num_randomizations`\">\n",
        "        **Opzioni** : numero intero >= 1\n",
        "\n",
        "        **Impostazione predefinita** : `32`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.shots_per_randomization`\">\n",
        "        **Opzioni** : numero intero >= 1\n",
        "\n",
        "        **Impostazione predefinita** : `128`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_model`\">\n",
        "        **Opzioni** : `NoiseLearnerResult`, `Sequence[LayerError]`\n",
        "\n",
        "        **Impostazione predefinita** : Nessuna\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_mitigation`\">\n",
        "        **Opzioni** : `True`, `False`\n",
        "\n",
        "        **Impostazione predefinita** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_noise_learning`\">\n",
        "        Opzioni per l'apprendimento del rumore di misurazione.\n",
        "\n",
        "        [`resilience.measure_noise_learning` Documentazione API](/docs/api/qiskit-ibm-runtime/options-measure-noise-learning-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_noise_learning.num_randomizations`\">\n",
        "        **Opzioni** : numero intero >= 1\n",
        "\n",
        "        **Impostazione predefinita** : `32`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_noise_learning.shots_per_randomization`\">\n",
        "        **Opzioni** : Intero, `auto`\n",
        "\n",
        "        **Impostazione predefinita** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec_mitigation`\">\n",
        "        **Opzioni** : `True`, `False`\n",
        "\n",
        "        **Impostazione predefinita** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec`\">\n",
        "        Opzioni di mitigazione della cancellazione probabilistica degli errori.\n",
        "\n",
        "        [`resilience.pec` Documentazione API](/docs/api/qiskit-ibm-runtime/options-pec-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec.max_overhead`\">\n",
        "        **Opzioni** : `None`, numero intero ≥ 1\n",
        "\n",
        "        **Impostazione predefinita** : `100`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec.noise_gain`\">\n",
        "        **Opzioni** : `auto`, numero decimale compreso tra \\[0 e 1]\n",
        "\n",
        "        **Impostazione predefinita** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne_mitigation`\">\n",
        "        **Opzioni** : `True`, `False`\n",
        "\n",
        "        **Impostazione predefinita** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne`\">\n",
        "        [`resilience.zne` Documentazione API](/docs/api/qiskit-ibm-runtime/options-zne-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.amplifier`\">\n",
        "        **Opzioni** : `gate_folding`, `gate_folding_front`, `gate_folding_back`, `pea`\n",
        "\n",
        "        **Impostazione predefinita** : `gate_folding`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.extrapolated_noise_factors`\">\n",
        "        **Opzioni** : Elenco dei galleggianti\n",
        "\n",
        "        **Impostazione predefinita** : `[0, *noise_factors]`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.extrapolator`\">\n",
        "        **Opzioni** : Una o più delle seguenti: `exponential`, `linear`, `double_exponential`, `polynomial_degree_(1 <= k <= 7)`, `fallback`\n",
        "\n",
        "        **Impostazione predefinita** : `(exponential, linear)`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.noise_factors`\">\n",
        "        **Opzioni** : elenco di galleggianti; ogni galleggiante deve essere ≥ 1\n",
        "\n",
        "        **Impostazione predefinita** : `(1, 1.5, 2)` per `PEA`, e `(1, 3, 5)` altrimenti\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`resilience_level`\">\n",
        "    Quanto livello di resilienza occorre garantire in caso di errori? Livelli più elevati producono risultati più accurati, ma comportano tempi di elaborazione più lunghi. Per ulteriori informazioni, consulta la sezione [sui livelli di resilienza](/docs/guides/estimator-noise-management#resilience) nell'argomento \"Gestione del rumore\".\n",
        "\n",
        "    **Opzioni** : `0`, `1`, `2`\n",
        "\n",
        "    **Impostazione predefinita** : `1`\n",
        "\n",
        "    [`resilience_level` Documentazione API](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience_level)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`seed_estimator`\">\n",
        "    **Valori consentiti** : numero intero\n",
        "\n",
        "    **Impostazione predefinita** : Nessuna\n",
        "\n",
        "    [`seed_estimator`](/docs/api/qiskit-ibm-runtime/options-estimator-options#seed_estimator)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`simulator`\">\n",
        "    Opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzi\n",
        "\n",
        "    [`simulator` Documentazione API](/docs/api/qiskit-ibm-runtime/options-simulator-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`simulator.basis_gates`\">\n",
        "        **Opzioni** : Elenco dei nomi dei gate di base su cui eseguire l'unrolling\n",
        "\n",
        "        **Impostazione predefinita** : l'insieme di tutte le porte di base supportate dal [simulatore Qiskit Aer](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.coupling_map`\">\n",
        "        **Opzioni** : Elenco delle interazioni dirette tra due qubit\n",
        "\n",
        "        **Impostazione predefinita** : Nessuna, il che implica l'assenza di vincoli di connettività (connettività completa).\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.noise_model`\">\n",
        "        **Opzioni** : [Qiskit Aer NoiseModel](/docs/guides/build-noise-models) o la sua rappresentazione\n",
        "\n",
        "        **Impostazione predefinita** : Nessuna\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.seed_simulator`\">\n",
        "        **Valori consentiti** : numero intero\n",
        "\n",
        "        **Impostazione predefinita** : Nessuna\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`twirling`\">\n",
        "    Opzioni di rotazione\n",
        "\n",
        "    [`twirling` Documentazione API](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`twirling.enable_gates`\">\n",
        "        **Opzioni** : Vero, Falso\n",
        "\n",
        "        **Impostazione predefinita** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.enable_measure`\">\n",
        "        **Opzioni** : Vero, Falso\n",
        "\n",
        "        **Impostazione predefinita** : True\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.num_randomizations`\">\n",
        "        **Opzioni** : `auto`, numero intero ≥ 1\n",
        "\n",
        "        **Impostazione predefinita** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.shots_per_randomization`\">\n",
        "        **Opzioni** : `auto`, numero intero ≥ 1\n",
        "\n",
        "        **Impostazione predefinita** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.strategy`\">\n",
        "        **Opzioni** : `active`, `active-circuit`, `active-accum`, `all`\n",
        "\n",
        "        **Impostazione predefinita** : `active-accum`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`experimental`\">\n",
        "    Opzioni sperimentali, se disponibili.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "83f4261c-fe8e-4993-ad7c-280350a970f3",
      "metadata": {},
      "source": [
        "<span id=\"options-compatibility-table\" />\n",
        "\n",
        "<span id=\"feature-compatibility\" />\n",
        "\n",
        "## Compatibilità delle funzioni\n",
        "\n",
        "Alcune funzionalità di runtime non possono essere utilizzate contemporaneamente in un unico processo. Fai clic sulla scheda corrispondente per visualizzare un elenco delle funzionalità incompatibili con quella selezionata:\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Cancelli frazionari\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Giro della porta\n",
        "    * PEA\n",
        "    * Pec\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"ZNE con copertina a libro\">\n",
        "    Potrebbe non funzionare se si utilizzano gate personalizzati. Incompatibile con:\n",
        "\n",
        "    * PEA\n",
        "    * Pec\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Giro della porta\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Portali frazionati\n",
        "    * Allungamenti\n",
        "\n",
        "    Altre note:\n",
        "\n",
        "    * La rotazione delle misure può essere applicata solo alle misure terminali.\n",
        "    * Non funziona con intrecciatori non Clifford.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"PEA\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Portali frazionati\n",
        "    * ZNE con copertina a libro\n",
        "    * Pec\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Pec\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Portali frazionati\n",
        "    * ZNE con copertina a libro\n",
        "    * PEA\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "5e795454-5b76-40d3-94c6-bb982be58239",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Passi successivi\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Suggerimenti\">\n",
        "  * Per ulteriori dettagli sui metodi `EstimatorV2` , consultare la documentazione [di riferimento dell'API di Estimator](/docs/api/qiskit-ibm-runtime/estimator-v2).\n",
        "  * Decidi in quale [modalità di esecuzione](/docs/guides/execution-modes) eseguire il tuo processo.\n",
        "  * Scopri come [gestire il rumore con Estimator](/docs/guides/estimator-noise-management).\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}