{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "bed19311-f71d-4d8c-9a05-1b68fa72df29",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Especificar las opciones del muestreador\"\n",
        "description: \"Especifica las opciones al crear la primitiva «Sampler».\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-sampler-options\" />\n",
        "\n",
        "# Especificar las opciones del muestreador\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=\"Versiones del paquete\">\n",
        "    El código de esta página se ha desarrollado teniendo en cuenta los siguientes requisitos.\n",
        "    Recomendamos utilizar estas versiones o posteriores.\n",
        "\n",
        "    ```\n",
        "    qiskit[all]~=2.5.0\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": [
        "Puedes utilizar las opciones para personalizar la primitiva Sampler. Esta sección se centra en cómo especificar las opciones primitivas de « Qiskit Runtime ». Aunque la interfaz del método `run()` de las primitivas es común a todas las implementaciones, sus opciones no lo son. Consulte las referencias de la API correspondientes para obtener información sobre las opciones [`qiskit.primitives.BackendSamplerV2`](/docs/api/qiskit/qiskit.primitives.BackendSamplerV2) [`qiskit_aer.primitives.SamplerV2`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.primitives.SamplerV2.html) y.\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-sampler-options\" />\n",
        "\n",
        "## Configurar opciones del muestreador\n",
        "\n",
        "Puedes configurar las opciones al inicializar Sampler, una vez inicializado Sampler, o bien actualizar las opciones después de que Sampler se haya inicializado. Para obtener instrucciones sobre cómo utilizar estas técnicas, consulta el tema «[Introducción a las opciones](/docs/guides/runtime-options-overview#options-precedence) ».\n",
        "\n",
        "Además, puedes establecer el `shots` valor en el `run()` método, tal y como se describe en la siguiente sección.\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",
        "### Método Run()\n",
        "\n",
        "Los únicos valores que se `run()` pueden pasar son los definidos en la interfaz.  Es decir, `shots`. Esto sobrescribe cualquier valor establecido para `default_shots` en la ejecución actual.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "c2423fcc-7f7f-4674-af6f-fc90f4b28b17",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9bjiq3v6alc73ct5690', '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",
        "### Casos especiales\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857e40a1-de1d-46f0-9db8-db55a6954f47",
      "metadata": {},
      "source": [
        "<span id=\"shots\" />\n",
        "\n",
        "<span id=\"shots\" />\n",
        "\n",
        "#### Intentos\n",
        "\n",
        "El `SamplerV2.run` método admite dos argumentos: una lista de PUB, cada uno de los cuales puede especificar un valor específico de « PUB » para «shots», y un argumento de palabra clave «shots». Estos valores de toma forman parte de la interfaz de ejecución del muestreador y son independientes de las opciones del muestreador en tiempo de ejecución.  Tienen prioridad sobre cualquier valor especificado como opción, con el fin de cumplir con la abstracción de Sampler.\n",
        "\n",
        "Sin embargo, si no `shots` se especifica mediante ninguna opción de « PUB » ni en el argumento de la palabra clave «run» (o si todos son `None` ), se utiliza el valor de «shots» de las opciones, en particular `default_shots`.\n",
        "\n",
        "En resumen, este es el orden de prioridad para especificar tomas en el Sampler, para cualquier « PUB » concreto:\n",
        "\n",
        "1. Si el archivo « PUB » especifica el número de tomas, utilice ese valor.\n",
        "2. Si se especifica el argumento `shots` de palabra clave en `run`, utilice ese valor.\n",
        "3. Si `twirling` está habilitado (True por defecto), se utiliza el producto de `num_randomizations` y `shots_per_randomization`, tal y como se especifica en [las opciones `twirling`](/docs/api/qiskit-ibm-runtime/options-twirling-options) de.\n",
        "4. Si `sampler.options.default_shots` se especifica, utilice ese valor.\n",
        "\n",
        "Por lo tanto, si se especifican tomas en todos los lugares posibles, se utiliza la que tiene mayor prioridad (las tomas especificadas en el archivo « PUB »).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Aunque las selecciones especificadas en « PUB » y en `run` tienen mayor prioridad, la tarea falla si `twirling` está habilitado y el producto de `num_randomizations` y `shots_per_randomization` es menor que el `shots` valor de. `num_randomizations`En este caso, `SamplerV2` no es posible distribuir los disparos entre los especificados.\n",
        "</Admonition>\n",
        "\n",
        "Ejemplo:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "e06376f4-fcba-4d03-8cbc-c53ca02d81af",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9bjirnu62qs738pbieg', '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",
        "## Opciones disponibles\n",
        "\n",
        "La siguiente tabla recoge las opciones de la última versión de `qiskit-ibm-runtime`. Para ver versiones anteriores de las opciones, visita la [`qiskit-ibm-runtime` referencia de la API](/docs/api/qiskit-ibm-runtime) y selecciona una versión anterior.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"`default_shots`\">\n",
        "    El número total de disparos que se utilizarán por circuito y por configuración.\n",
        "\n",
        "    **Opciones** : número entero >= 0\n",
        "\n",
        "    **Valor predeterminado** : Ninguno\n",
        "\n",
        "    [`default_shots` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-sampler-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`dynamical_decoupling`\">\n",
        "    Controlar los ajustes de mitigación de errores de desacoplamiento dinámico.\n",
        "\n",
        "    [`dynamical_decoupling` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-sampler-options#dynamical_decoupling)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`dynamical_decoupling.enable`\">\n",
        "        **Opciones** : `True`, `False`\n",
        "\n",
        "        **Por defecto** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.extra_slack_distribution`\">\n",
        "        **Opciones** : `middle`, `edges`\n",
        "\n",
        "        **Por defecto** : `middle`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.scheduling_method`\">\n",
        "        Opciones: `asap`, `alap`\n",
        "        Predeterminado: `alap`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.sequence_type`\">\n",
        "        Opciones: `XX`, `XpXm`, `XY4`\n",
        "        Predeterminado: `XX`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.skip_reset_qubits`\">\n",
        "        Opciones: `True`, `False`\n",
        "        Predeterminado: `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`environment`\">\n",
        "    [`environment` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-sampler-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.job_tags`\">\n",
        "        Lista de etiquetas.\n",
        "\n",
        "        **Opciones** : Ninguna\n",
        "\n",
        "        **Valor predeterminado** : Ninguno\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.log_level`\">\n",
        "        **Opciones** : DEBUG, INFO, WARNING, ERROR, CRITICAL\n",
        "\n",
        "        **Por defecto** : ADVERTENCIA\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.private`\">\n",
        "        **Opciones** : `True`, `False`\n",
        "\n",
        "        **Por defecto** : `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`execution`\">\n",
        "    [`execution` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-sampler-options#execution)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`execution.init_qubits`\">\n",
        "        Si se deben restablecer los qubits al estado fundamental en cada disparo.\n",
        "\n",
        "        **Opciones** : `True`, `False`\n",
        "\n",
        "        **Por defecto** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.rep_delay`\">\n",
        "        El intervalo de tiempo entre una medición y el circuito cuántico posterior.\n",
        "\n",
        "        **Opciones** : Valor dentro del rango proporcionado por `backend.rep_delay_range`\n",
        "\n",
        "        **Por defecto** : lo establece `backend.default_rep_delay`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.meas_type`\">\n",
        "        **Opciones** : `classified`, `kerneled`, `avg_kerneled`\n",
        "\n",
        "        **Por defecto** : `classified`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`max_execution_time`\">\n",
        "    Limita la duración de un trabajo, en segundos. Consulte la guía [sobre el tiempo máximo de ejecución](/docs/guides/max-execution-time) para obtener más información.\n",
        "\n",
        "    **Opciones** : número entero de segundos comprendido entre \\[1 y 10 800]\n",
        "\n",
        "    **Valor predeterminado** : 10800 (3 horas)\n",
        "\n",
        "    [`max_execution_time` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-sampler-options#max_execution_time)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`simulator`\">\n",
        "    Opciones que se deben pasar al simular un backend\n",
        "\n",
        "    [`simulator` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-simulator-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`simulator.basis_gates`\">\n",
        "        **Opciones** : Lista de nombres de puertas básicas a las que se va a desarrollar\n",
        "\n",
        "        **Por defecto** : el conjunto de todas las puertas básicas compatibles con [el simulador Qiskit Aer](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.coupling_map`\">\n",
        "        **Opciones** : Lista de interacciones dirigidas entre dos qubits\n",
        "\n",
        "        **Valor predeterminado** : Ninguno, lo que implica que no hay restricciones de conectividad (conectividad total).\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.noise_model`\">\n",
        "        **Opciones** : [Qiskit Aer NoiseModel](/docs/guides/build-noise-models) o su representación\n",
        "\n",
        "        **Valor predeterminado** : Ninguno\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.seed_simulator`\">\n",
        "        **Opciones** : Número entero\n",
        "\n",
        "        **Valor predeterminado** : Ninguno\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`twirling`\">\n",
        "    Opciones de giro\n",
        "\n",
        "    [`twirling` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`twirling.enable_gates`\">\n",
        "        **Opciones** : Verdadero, Falso\n",
        "\n",
        "        **Valor predeterminado** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.enable_measure`\">\n",
        "        **Opciones** : Verdadero, Falso\n",
        "\n",
        "        **Valor predeterminado** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.num_randomizations`\">\n",
        "        **Opciones** : `auto`, número entero >= 1\n",
        "\n",
        "        **Por defecto** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.shots_per_randomization`\">\n",
        "        **Opciones** : `auto`, número entero >= 1\n",
        "\n",
        "        **Por defecto** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.strategy`\">\n",
        "        **Opciones** : `active`, `active-circuit`, `active-accum`, `all`\n",
        "\n",
        "        **Por defecto** : `active-accum`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`experimental`\">\n",
        "    Opciones experimentales, cuando estén disponibles.\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",
        "## Compatibilidad de características\n",
        "\n",
        "Algunas funciones de tiempo de ejecución no se pueden utilizar conjuntamente en un mismo trabajo. Haga clic en la pestaña correspondiente para ver una lista de las funciones que son incompatibles con la función seleccionada:\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Circuitos dinámicos\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Desacoplamiento dinámico\n",
        "\n",
        "    Otras observaciones:\n",
        "\n",
        "    * La rotación de puertas se puede aplicar a circuitos dinámicos, pero solo a las puertas que no se encuentren dentro de bloques condicionales. La rotación de mediciones solo se puede aplicar a las mediciones de terminales.\n",
        "    * Compatible con puertas fraccionarias cuando se utiliza `qiskit-ibm-runtime`v0.42.0 o una versión posterior.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Desacoplamiento dinámico\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Circuitos dinámicos\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Puertas fraccionarias\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Giro de la puerta\n",
        "\n",
        "    Compatible con circuitos dinámicos cuando se utiliza `qiskit-ibm-runtime`v0.42.0 o una versión posterior.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Giro de la puerta\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Puertas fraccionarias\n",
        "    * Estiramientos\n",
        "\n",
        "    Otras observaciones:\n",
        "\n",
        "    * La rotación de puertas se puede aplicar a circuitos dinámicos, pero solo a las puertas que no se encuentren dentro de bloques condicionales.\n",
        "    * La rotación de la medición solo se puede aplicar a las mediciones en los terminales.\n",
        "    * El giro de la medida es incompatible con la [`store`](/docs/api/qiskit/circuit#store) instrucción.\n",
        "    * No funciona con enredadores que no sean Clifford.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "b95e9e8e-575c-411e-8504-4ef0a00166d3",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Próximos pasos\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recomendaciones\">\n",
        "  * Consulte la guía «[Introducción a las opciones](/docs/guides/runtime-options-overview) ».\n",
        "  * Encontrarás más detalles sobre los `SamplerV2` métodos en la [referencia de la API de Sampler](/docs/api/qiskit-ibm-runtime/sampler-v2).\n",
        "  * Decide en qué [modo de ejecución](execution-modes) quieres ejecutar tu tarea.\n",
        "  * Descubre cómo [gestionar el ruido 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
}