{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "bed19311-f71d-4d8c-9a05-1b68fa72df29",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Specificare le opzioni del campionatore\"\n",
        "description: \"Specificare le opzioni durante la creazione con la primitiva Sampler.\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-sampler-options\" />\n",
        "\n",
        "# Specificare le opzioni del campionatore\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3adc856a-0fcd-47e4-94d9-22b90bddc24f",
      "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": "56db929d-8b84-49b2-a98b-55d33f91ea30",
      "metadata": {},
      "source": [
        "È possibile utilizzare le opzioni per personalizzare la primitiva Sampler. Questa sezione illustra come specificare le opzioni primitive dell' IBM Quantum. 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_aer.primitives.SamplerV2`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.primitives.SamplerV2.html) e [`qiskit.primitives.BackendSamplerV2`](/docs/api/qiskit/qiskit.primitives.BackendSamplerV2) , consultare i relativi documenti di riferimento dell'API.\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-sampler-options\" />\n",
        "\n",
        "## Imposta le opzioni del campionario\n",
        "\n",
        "È possibile impostare le opzioni al momento dell'inizializzazione di Sampler, dopo l'inizializzazione di Sampler oppure aggiornarle una volta che Sampler è stato inizializzato. Per istruzioni su come utilizzare queste tecniche, consultare l'argomento [\"Introduzione alle opzioni\"](/docs/guides/runtime-options-overview#options-precedence).\n",
        "\n",
        "Inoltre, è possibile impostare il `shots` valore nel `run()` metodo, come descritto nella sezione seguente.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3ca44016-acfe-4540-ab0e-659b9577c4eb",
      "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è, `shots`. Questo sovrascrive qualsiasi valore impostato per `default_shots` nell'esecuzione corrente.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "c2423fcc-7f7f-4674-af6f-fc90f4b28b17",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9mq9qo8csec73fagtb0', 'sampler')>"
            ]
          },
          "execution_count": 1,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\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",
        "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",
        "\n",
        "sampler = Sampler(mode=backend)\n",
        "# Default shots to use if not specified in run()\n",
        "sampler.options.default_shots = 500\n",
        "# Sample two circuits at 128 shots each.\n",
        "sampler.run([transpiled1, transpiled2], shots=128)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4bf67f60-ce62-4b95-b70c-b15f131be46d",
      "metadata": {},
      "source": [
        "<span id=\"special-cases\" />\n",
        "\n",
        "### Casi particolari\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857e40a1-de1d-46f0-9db8-db55a6954f47",
      "metadata": {},
      "source": [
        "<span id=\"shots\" />\n",
        "\n",
        "<span id=\"shots\" />\n",
        "\n",
        "#### Shot\n",
        "\n",
        "Il `SamplerV2.run` metodo accetta due argomenti: un elenco di PUB, ciascuno dei quali può specificare un valore relativo a PUB per gli \"shots\", e un argomento chiave denominato \"shots\". Questi valori di campionamento fanno parte dell'interfaccia di esecuzione del Sampler e sono indipendenti dalle opzioni del Runtime Sampler.  Hanno la precedenza su qualsiasi valore specificato come opzione, al fine di rispettare l'astrazione del Sampler.\n",
        "\n",
        "Tuttavia, se non `shots` è 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 `shots` specificato nelle opzioni, in `default_shots`particolare.\n",
        "\n",
        "In sintesi, questo è l'ordine di precedenza per la specificazione degli shot nel Sampler, per qualsiasi \" PUB \":\n",
        "\n",
        "1. Se il parametro `PUB` specifica il numero di scatti, utilizzare quel valore.\n",
        "2. Se l'argomento `shots` «keyword» è specificato in `run`, utilizzare quel valore.\n",
        "3. Se `twirling` è abilitato, viene utilizzato il prodotto di e `num_randomizations` `shots_per_randomization`, come specificato nelle [opzioni `twirling`](/docs/api/qiskit-ibm-runtime/options-twirling-options) .\n",
        "4. Se `sampler.options.default_shots` viene specificato, utilizzare quel valore.\n",
        "\n",
        "Pertanto, se vengono specificati degli «shots» in tutte le posizioni possibili, viene utilizzato quello con la precedenza più alta (gli «shots» specificati nell’ PUB ).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Sebbene gli shot specificati nell' PUB e e in `run` abbiano una precedenza maggiore, l'operazione fallisce se `twirling` è abilitato e il prodotto di `num_randomizations` e `shots_per_randomization` è inferiore al `shots` valore di. `num_randomizations`In questo scenario, `SamplerV2` non è in grado di distribuire i colpi tra i specificati.\n",
        "</Admonition>\n",
        "\n",
        "Esempio:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "e06376f4-fcba-4d03-8cbc-c53ca02d81af",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9mq9snurbec73e67ah0', 'sampler')>"
            ]
          },
          "execution_count": 2,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\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",
        "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",
        "\n",
        "\n",
        "# Setting shots during primitive initialization\n",
        "sampler = Sampler(mode=backend, options={\"default_shots\": 4096})\n",
        "\n",
        "# Setting options after primitive initialization\n",
        "# This uses auto-complete.\n",
        "sampler.options.default_shots = 2000\n",
        "\n",
        "# This does bulk update.  The value for default_shots is overridden\n",
        "# if you specify shots with run() or in the PUB.\n",
        "sampler.options.update(\n",
        "    default_shots=1024, dynamical_decoupling={\"sequence_type\": \"XpXm\"}\n",
        ")\n",
        "\n",
        "# Sample two circuits at 128 shots each.\n",
        "sampler.run([transpiled1, transpiled2], shots=128)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "29451d36-d88d-4726-96d2-f3083ac9e4a9",
      "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-sampler-options#default_shots)\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-sampler-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-sampler-options#environment)\n",
        "\n",
        "    <Accordion>\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-sampler-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",
        "\n",
        "      <AccordionItem title=\"`execution.meas_type`\">\n",
        "        **Opzioni** : `classified`, `kerneled`, `avg_kerneled`\n",
        "\n",
        "        **Impostazione predefinita** : `classified`\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",
        "\n",
        "    [`max_execution_time` Documentazione API](/docs/api/qiskit-ibm-runtime/options-sampler-options#max_execution_time)\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** : False\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": "80737dfd-a1c7-4b5f-b1ea-3391dcfa61b7",
      "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=\"Circuiti dinamici\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Disaccoppiamento dinamico\n",
        "\n",
        "    Altre note:\n",
        "\n",
        "    * La rotazione delle porte logiche può essere applicata ai circuiti dinamici, ma solo alle porte che non si trovano all'interno di blocchi condizionali. La rotazione delle misure può essere applicata solo alle misure terminali.\n",
        "    * Compatibile con i gate frazionari se si utilizza `qiskit-ibm-runtime`v0.42.0 o o versioni successive.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Disaccoppiamento dinamico\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Circuiti dinamici\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Cancelli frazionari\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Giro della porta\n",
        "\n",
        "    Compatibile con i circuiti dinamici se si utilizza `qiskit-ibm-runtime`v0.42.0 o o versioni successive.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Giro della porta\">\n",
        "    Incompatibile con:\n",
        "\n",
        "    * Cancelli frazionari\n",
        "    * Allungamenti\n",
        "\n",
        "    Altre note:\n",
        "\n",
        "    * La rotazione delle porte logiche può essere applicata ai circuiti dinamici, ma solo alle porte che non si trovano all'interno di blocchi condizionali.\n",
        "    * La rotazione della misura può essere applicata solo alle misurazioni terminali.\n",
        "    * La rotazione della misura non è compatibile con l'istruzione [`store`](/docs/api/qiskit/circuit#store) .\n",
        "    * Non funziona con intrecciatori non Clifford.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "b95e9e8e-575c-411e-8504-4ef0a00166d3",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Passi successivi\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Suggerimenti\">\n",
        "  * Consulta la guida [\"Introduzione alle opzioni\"](/docs/guides/runtime-options-overview).\n",
        "  * Per ulteriori dettagli sui metodi `SamplerV2` , consultare la documentazione [di riferimento dell'API di Sampler](/docs/api/qiskit-ibm-runtime/sampler-v2).\n",
        "  * Decidi in quale [modalità di esecuzione](execution-modes) eseguire il tuo processo.\n",
        "  * Scopri come [gestire il rumore con Sampler](/docs/guides/sampler-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
}