{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "c457f721-e66d-403e-84be-10b26863c86d",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Especificar opciones del estimador\"\n",
        "description: \"Especifica las opciones al crear con la primitiva Estimator.\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-estimator-options\" />\n",
        "\n",
        "# Especificar opciones del estimador\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=\"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": "3c1e38b5-3f01-4818-943e-f52d877be6ad",
      "metadata": {},
      "source": [
        "Puedes utilizar las opciones para personalizar la primitiva «Estimator». 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 para obtener información sobre las opciones [`qiskit.primitives.BaseEstimatorV2`](/docs/api/qiskit/qiskit.primitives.BaseEstimatorV2) [`qiskit_aer.BaseEstimatorV2`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.primitives.EstimatorV2.html) y.\n",
        "\n",
        "Notas:\n",
        "\n",
        "<Admonition type=\"note\" title=\"Notas sobre la especificación de opciones en las primitivas del Estimador\">\n",
        "  * Puedes consultar las opciones disponibles y actualizar los valores de las opciones durante o después de la inicialización del Estimador.\n",
        "  * Utiliza el `update()` método para aplicar los cambios al `options` atributo.\n",
        "  * Si no se especifica un valor para una opción, se le asigna un valor especial de `Unset` y se utilizan los valores predeterminados del servidor.\n",
        "  * El `options` atributo es de `dataclass` tipo « Python ».  Puedes utilizar el método integrado `asdict` para convertirlo en un diccionario.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-estimator-options\" />\n",
        "\n",
        "## Configurar las opciones del estimador\n",
        "\n",
        "Puedes configurar las opciones al inicializar Estimator, después de inicializar Estimator o (solo en `precision` este caso) en el `run()` método.\n",
        "\n",
        "<span id=\"primitive-initialization\" />\n",
        "\n",
        "### Inicialización primitiva\n",
        "\n",
        "Al inicializar Estimator, puedes pasar una instancia de la clase de opciones o un diccionario, y el programa creará una copia de esas opciones. Por lo tanto, modificar el diccionario original o la instancia de opciones no afecta a las opciones asociadas a la primitiva.\n",
        "\n",
        "<span id=\"options-class\" />\n",
        "\n",
        "#### Clase de opciones\n",
        "\n",
        "Al crear una instancia de la `EstimatorV2` clase, puedes pasarle una instancia de la clase de opciones. Esas opciones se aplicarán cuando utilices `run()` para realizar el cálculo.  Especifica las opciones con este formato: `options.option.sub-option.sub-sub-option = choice`.  Por ejemplo: `options.dynamical_decoupling.enable = True`\n",
        "\n",
        "Ejemplo:\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",
        "#### Diccionario\n",
        "\n",
        "Puedes especificar las opciones en forma de diccionario al inicializar 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",
        "### Opciones de actualización tras la inicialización\n",
        "\n",
        "Puedes especificar las opciones en este formato: `estimator.options.option.sub-option.sub-sub-option = choice` para aprovechar la función de autocompletado, o utilizar el `update()` método para realizar actualizaciones masivas.\n",
        "\n",
        "No es necesario instanciar la clase de `EstimatorV2` opciones ([`EstimatorOptions`](/docs/api/qiskit-ibm-runtime/options-estimator-options)) si se configuran las opciones tras inicializar el objeto 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",
        "### Método Run()\n",
        "\n",
        "Los únicos valores que se `run()` pueden pasar son los definidos en la interfaz.  Es decir, `precision` para Estimator. Esto sobrescribe cualquier valor establecido para `default_precision` en la ejecución actual.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "id": "c0606f38-2bed-4b56-8202-708669e5ea66",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9bjitvu62qs738pbiig', '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 especial: precisión\n",
        "\n",
        "El `EstimatorV2.run` método admite dos argumentos: una lista de PUB, cada uno de los cuales puede especificar un valor de precisión específico de « PUB », y un argumento de palabra clave de precisión. Estos valores de precisión forman parte de la interfaz de ejecución del Estimador y son independientes de las opciones del Estimador en tiempo de ejecución.  Tienen prioridad sobre cualquier valor especificado como opción para cumplir con la abstracción del Estimador.\n",
        "\n",
        "Sin embargo, si no `precision` se especifica mediante ninguna opción de `PUB` ni en el argumento de la palabra clave `run` (o si todos son `0` `None`), se utiliza el valor de precisión de las opciones, en particular `0.0001 `default\\_precision\\`\\`.\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Estos parámetros de precisión sirven únicamente para especificar la precisión *deseada*, y no se garantiza que los resultados alcancen la precisión especificada.\n",
        "</Admonition>\n",
        "\n",
        "Ten en cuenta que las opciones de Estimator incluyen tanto `default_shots` como `default_precision`. Sin embargo, dado que la función «gate-twirling» está activada por defecto, el producto de `num_randomizations` y `shots_per_randomization` tiene prioridad sobre esas dos opciones.\n",
        "\n",
        "En concreto, para cualquier Estimator PUB :\n",
        "\n",
        "1. Si el archivo « PUB » especifica la precisión, utilice ese valor.\n",
        "2. Si se especifica el argumento de palabra clave «precision» 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 `twirling` opciones](/docs/api/qiskit-ibm-runtime/options-twirling-options).\n",
        "4. Si `estimator.options.default_shots` se especifica, utilice ese valor para controlar la cantidad de datos.\n",
        "5. Si `estimator.options.default_precision` se especifica, utilice ese valor.\n",
        "\n",
        "Por ejemplo, si se especifica la precisión en los cuatro lugares, se utiliza la que tiene mayor prioridad (la precisión especificada en el `PUB`).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Aunque la precisión especificada en el archivo « PUB » y en `run` tiene mayor prioridad, el trabajo falla si `twirling` está activado y el producto de `num_randomizations` y `shots_per_randomization` es menor que el número de disparos necesarios para alcanzar dicha precisión. `num_randomizations`En este caso, `EstimatorV2` no es posible distribuir los disparos entre los especificados.\n",
        "</Admonition>\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  La precisión es inversamente proporcional al uso.  Es decir, cuanto menor sea la precisión, más tiempo de procesamiento de la QPU se necesitará para ejecutarlo.\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "bf02c107-226e-443a-ab4c-dfd3246ada2c",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('d9bjj03v6alc73ct56lg', '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",
        "## Desactiva todas las funciones de mitigación y supresión de errores\n",
        "\n",
        "Puedes desactivar todas las funciones de mitigación y supresión de errores si, por ejemplo, estás investigando tus propias técnicas de mitigación. Para ello, configura `resilience_level = 0`.\n",
        "\n",
        "Ejemplo:\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",
        "## 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-estimator-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`default_precision`\">\n",
        "    La precisión predeterminada que se utilizará en cualquier llamada a ` PUB`run()` ` que no especifique una.\n",
        "\n",
        "    **Opciones** : Float > 0\n",
        "\n",
        "    **Valor predeterminado** : 0.015625 (1 / √4096)\n",
        "\n",
        "    [`default_precision` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-estimator-options#default_precision)\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-estimator-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-estimator-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.callback`\">\n",
        "        Función invocable que recibe `Job ID` y `Job result`.\n",
        "\n",
        "        **Opciones** : Ninguna\n",
        "\n",
        "        **Valor predeterminado** : Ninguno\n",
        "      </AccordionItem>\n",
        "\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-estimator-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",
        "    </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",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`resilience`\">\n",
        "    Opciones avanzadas de resiliencia para ajustar con precisión la estrategia de resiliencia.\n",
        "\n",
        "    [`resilience` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning`\">\n",
        "        Opciones para el aprendizaje del ruido de capa.\n",
        "\n",
        "        [`resilience.layer_noise_learning` Documentación de la 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",
        "        **Opciones** : \\[lista] de entre 2 y 10 valores comprendidos entre \\[0 y 200]\n",
        "\n",
        "        **Por defecto** : `(0, 1, 2, 4, 16, 32)`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.max_layers_to_learn`\">\n",
        "        **Opciones** : Ninguna, número entero >= 1\n",
        "\n",
        "        **Por defecto** : `4`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.num_randomizations`\">\n",
        "        **Opciones** : número entero >= 1\n",
        "\n",
        "        **Por defecto** : `32`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_learning.shots_per_randomization`\">\n",
        "        **Opciones** : número entero >= 1\n",
        "\n",
        "        **Por defecto** : `128`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.layer_noise_model`\">\n",
        "        **Opciones** : `NoiseLearnerResult`, `Sequence[LayerError]`\n",
        "\n",
        "        **Valor predeterminado** : Ninguno\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_mitigation`\">\n",
        "        **Opciones** : `True`, `False`\n",
        "\n",
        "        **Por defecto** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_noise_learning`\">\n",
        "        Opciones para el aprendizaje del ruido de medición.\n",
        "\n",
        "        [`resilience.measure_noise_learning` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-measure-noise-learning-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_noise_learning.num_randomizations`\">\n",
        "        **Opciones** : número entero >= 1\n",
        "\n",
        "        **Por defecto** : `32`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.measure_noise_learning.shots_per_randomization`\">\n",
        "        **Opciones** : Entero, `auto`\n",
        "\n",
        "        **Por defecto** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec_mitigation`\">\n",
        "        **Opciones** : `True`, `False`\n",
        "\n",
        "        **Por defecto** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec`\">\n",
        "        Opciones de mitigación de la cancelación probabilística de errores.\n",
        "\n",
        "        [`resilience.pec` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-pec-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec.max_overhead`\">\n",
        "        **Opciones** : `None`, número entero >= 1\n",
        "\n",
        "        **Por defecto** : `100`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.pec.noise_gain`\">\n",
        "        **Opciones** : `auto`, número real comprendido entre \\[0 y 1]\n",
        "\n",
        "        **Por defecto** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne_mitigation`\">\n",
        "        **Opciones** : `True`, `False`\n",
        "\n",
        "        **Por defecto** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne`\">\n",
        "        [`resilience.zne` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-zne-options)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.amplifier`\">\n",
        "        **Opciones** : `gate_folding`, `gate_folding_front`, `gate_folding_back`, `pea`\n",
        "\n",
        "        **Por defecto** : `gate_folding`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.extrapolated_noise_factors`\">\n",
        "        **Opciones** : Lista de flotadores\n",
        "\n",
        "        **Por defecto** : `[0, *noise_factors]`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.extrapolator`\">\n",
        "        **Opciones** : Una o varias de las siguientes: `exponential`, `linear`, `double_exponential`, `polynomial_degree_(1 <= k <= 7)`, `fallback`\n",
        "\n",
        "        **Por defecto** : `(exponential, linear)`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`resilience.zne.noise_factors`\">\n",
        "        **Opciones** : Lista de números flotantes; cada número flotante es mayor o igual a 1\n",
        "\n",
        "        **Por defecto** : `(1, 1.5, 2)` para `PEA`, y `(1, 3, 5)` en los demás casos\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`resilience_level`\">\n",
        "    ¿Qué grado de resiliencia hay que desarrollar frente a los errores? Los niveles más altos generan resultados más precisos, aunque a costa de tiempos de procesamiento más largos. Consulte la sección [sobre niveles de resiliencia](/docs/guides/estimator-noise-management#resilience) en el tema «Gestión del ruido» para obtener más información.\n",
        "\n",
        "    **Opciones** : `0`, `1`, `2`\n",
        "\n",
        "    **Por defecto** : `1`\n",
        "\n",
        "    [`resilience_level` Documentación de la API](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience_level)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`seed_estimator`\">\n",
        "    **Opciones** : Número entero\n",
        "\n",
        "    **Valor predeterminado** : Ninguno\n",
        "\n",
        "    [`seed_estimator`](/docs/api/qiskit-ibm-runtime/options-estimator-options#seed_estimator)\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** : True\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": "83f4261c-fe8e-4993-ad7c-280350a970f3",
      "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=\"Puertas fraccionarias\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Giro de la puerta\n",
        "    * PEA\n",
        "    * Pec\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"ZNE con pliegue en forma de puerta\">\n",
        "    Es posible que no funcione si se utilizan puertas personalizadas. Incompatible con:\n",
        "\n",
        "    * PEA\n",
        "    * Pec\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 mediciones solo se puede aplicar a las mediciones de terminales.\n",
        "    * No funciona con enredadores que no sean Clifford.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"PEA\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Puertas fraccionarias\n",
        "    * ZNE con pliegue en forma de puerta\n",
        "    * Pec\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Pec\">\n",
        "    Incompatible con:\n",
        "\n",
        "    * Puertas fraccionarias\n",
        "    * ZNE con pliegue en forma de puerta\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",
        "## Próximos pasos\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recomendaciones\">\n",
        "  * Encontrarás más detalles sobre los `EstimatorV2` métodos en la [referencia de la API de Estimator](/docs/api/qiskit-ibm-runtime/estimator-v2).\n",
        "  * Decide en qué [modo de ejecución](/docs/guides/execution-modes) quieres ejecutar tu tarea.\n",
        "  * Descubre cómo [gestionar el ruido 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
}