{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "bed19311-f71d-4d8c-9a05-1b68fa72df29",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Especificar opções do Sampler\"\n",
        "description: \"Especifique as opções ao criar com a primitiva Sampler.\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-sampler-options\" />\n",
        "\n",
        "# Especificar opções do Sampler\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=\"Versões do pacote\">\n",
        "    O código desta página foi desenvolvido com base nos seguintes requisitos.\n",
        "    Recomendamos usar essas versões ou versões mais recentes.\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": [
        "Você pode usar as opções para personalizar a primitiva Sampler. Esta seção aborda como definir as opções primárias d Qiskit Runtime. Embora a interface do método `run()` das primitivas seja comum a todas as implementações, suas opções não o são. Consulte as referências da API correspondentes para obter informações sobre as opções [`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) e.\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-sampler-options\" />\n",
        "\n",
        "## Definir opções do Sampler\n",
        "\n",
        "Você pode definir as opções ao inicializar o Sampler, após a inicialização do Sampler, ou pode atualizar as opções depois que o Sampler tiver sido inicializado. Para obter instruções sobre como usar essas técnicas, consulte o tópico “[Introdução às opções](/docs/guides/runtime-options-overview#options-precedence) ”.\n",
        "\n",
        "Além disso, você pode definir o `shots` valor no `run()` método, conforme descrito na seção a seguir.\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",
        "Os únicos valores que você `run()` pode passar são aqueles definidos na interface.  Ou seja, `shots`. Isso substitui qualquer valor definido para `default_shots` na execução atual.\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 especiais\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857e40a1-de1d-46f0-9db8-db55a6954f47",
      "metadata": {},
      "source": [
        "<span id=\"shots\" />\n",
        "\n",
        "<span id=\"shots\" />\n",
        "\n",
        "#### Tentativas\n",
        "\n",
        "O `SamplerV2.run` método aceita dois argumentos: uma lista de PUBs, cada um dos quais pode especificar um valor específico do `PUB` para o número de fotos, e um argumento de palavra-chave para o número de fotos. Esses valores de amostragem fazem parte da interface de execução do Sampler e são independentes das opções do Runtime Sampler.  Eles têm precedência sobre quaisquer valores especificados como opções, a fim de estar em conformidade com a abstração do Sampler.\n",
        "\n",
        "No entanto, se não `shots` for especificado por nenhuma opção `PUB` nem no argumento de palavra-chave `run` (ou se todos forem `None` ), então é utilizado o valor de `shots` das opções, mais especificamente `default_shots`.\n",
        "\n",
        "Em resumo, esta é a ordem de precedência para especificar shots no Sampler, para qualquer PUB específico:\n",
        "\n",
        "1. Se o parâmetro `PUB` especificar o número de fotos, use esse valor.\n",
        "2. Se o argumento `shots` da palavra-chave for especificado em `run`, use esse valor.\n",
        "3. Se `twirling` estiver ativado (True por padrão), então é utilizado o produto de `num_randomizations` e `shots_per_randomization`, conforme especificado nas [`twirling` opções](/docs/api/qiskit-ibm-runtime/options-twirling-options).\n",
        "4. Se `sampler.options.default_shots` for especificado, use esse valor.\n",
        "\n",
        "Assim, se forem especificadas jogadas em todos os locais possíveis, será utilizada aquela com maior prioridade (as jogadas especificadas no `PUB`).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Embora as doses especificadas no PUB e e em `run` tenham maior prioridade, a tarefa falha se `twirling` estiver ativado e o produto de `num_randomizations` e `shots_per_randomization` for menor que o `shots` valor de. `num_randomizations`Nesse cenário, `SamplerV2` não é possível distribuir as tomadas entre os especificados.\n",
        "</Admonition>\n",
        "\n",
        "Exemplo:\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",
        "## Opções disponíveis\n",
        "\n",
        "A tabela a seguir apresenta as opções da versão mais recente do `qiskit-ibm-runtime`. Para ver versões anteriores das opções, acesse a [`qiskit-ibm-runtime` referência da API](/docs/api/qiskit-ibm-runtime) e selecione uma versão anterior.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"`default_shots`\">\n",
        "    O número total de disparos a serem utilizados por circuito por configuração.\n",
        "\n",
        "    **Opções** : Número inteiro >= 0\n",
        "\n",
        "    **Padrão** : Nenhum\n",
        "\n",
        "    [`default_shots` Documentação da API](/docs/api/qiskit-ibm-runtime/options-sampler-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`dynamical_decoupling`\">\n",
        "    Controle as configurações de mitigação de erros de desacoplamento dinâmico.\n",
        "\n",
        "    [`dynamical_decoupling` Documentação da API](/docs/api/qiskit-ibm-runtime/options-sampler-options#dynamical_decoupling)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`dynamical_decoupling.enable`\">\n",
        "        **Opções** : `True`, `False`\n",
        "\n",
        "        **Padrão** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.extra_slack_distribution`\">\n",
        "        **Opções** : `middle`, `edges`\n",
        "\n",
        "        **Padrão** : `middle`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.scheduling_method`\">\n",
        "        Opções: `asap`, `alap`\n",
        "        Padrão: `alap`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.sequence_type`\">\n",
        "        Opções: `XX`, `XpXm`, `XY4`\n",
        "        Padrão: `XX`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.skip_reset_qubits`\">\n",
        "        Opções: `True`, `False`\n",
        "        Padrão: `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`environment`\">\n",
        "    [`environment` Documentação da API](/docs/api/qiskit-ibm-runtime/options-sampler-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.job_tags`\">\n",
        "        Lista de tags.\n",
        "\n",
        "        **Opções** : Nenhuma\n",
        "\n",
        "        **Padrão** : Nenhum\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.log_level`\">\n",
        "        **Opções** : DEBUG, INFO, WARNING, ERROR, CRITICAL\n",
        "\n",
        "        **Padrão** : AVISO\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.private`\">\n",
        "        **Opções** : `True`, `False`\n",
        "\n",
        "        **Padrão** : `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`execution`\">\n",
        "    [`execution` Documentação da API](/docs/api/qiskit-ibm-runtime/options-sampler-options#execution)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`execution.init_qubits`\">\n",
        "        Se os qubits devem ser reinicializados para o estado fundamental a cada disparo.\n",
        "\n",
        "        **Opções** : `True`, `False`\n",
        "\n",
        "        **Padrão** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.rep_delay`\">\n",
        "        O intervalo entre uma medição e o circuito quântico subsequente.\n",
        "\n",
        "        **Opções** : Valor na faixa fornecida por `backend.rep_delay_range`\n",
        "\n",
        "        **Padrão** : Definido por `backend.default_rep_delay`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.meas_type`\">\n",
        "        **Opções** : `classified`, `kerneled`, `avg_kerneled`\n",
        "\n",
        "        **Padrão** : `classified`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`max_execution_time`\">\n",
        "    Limita o tempo de execução de uma tarefa, em segundos. Consulte o guia [sobre o tempo máximo de execução](/docs/guides/max-execution-time) para obter mais detalhes.\n",
        "\n",
        "    **Opções** : Número inteiro de segundos no intervalo \\[de] 1 a 10.800\n",
        "\n",
        "    **Padrão** : 10800 (3 horas)\n",
        "\n",
        "    [`max_execution_time` Documentação da API](/docs/api/qiskit-ibm-runtime/options-sampler-options#max_execution_time)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`simulator`\">\n",
        "    Opções a serem passadas ao simular um backend\n",
        "\n",
        "    [`simulator` Documentação da API](/docs/api/qiskit-ibm-runtime/options-simulator-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`simulator.basis_gates`\">\n",
        "        **Opções** : Lista de nomes de portas básicas para as quais se deve realizar o desenrolamento\n",
        "\n",
        "        **Padrão** : O conjunto de todas as portas básicas suportadas pelo [simulador Qiskit Aer](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html)\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.coupling_map`\">\n",
        "        **Opções** : Lista de interações direcionadas entre dois qubits\n",
        "\n",
        "        **Padrão** : Nenhum, o que implica a ausência de restrições de conectividade (conectividade total).\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.noise_model`\">\n",
        "        **Opções** : [Qiskit Aer NoiseModel](/docs/guides/build-noise-models) ou sua representação\n",
        "\n",
        "        **Padrão** : Nenhum\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.seed_simulator`\">\n",
        "        **Opções** : Inteiro\n",
        "\n",
        "        **Padrão** : Nenhum\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`twirling`\">\n",
        "    Opções de rotação\n",
        "\n",
        "    [`twirling` Documentação da API](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`twirling.enable_gates`\">\n",
        "        **Opções** : Verdadeiro, Falso\n",
        "\n",
        "        **Padrão** : Falso\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.enable_measure`\">\n",
        "        **Opções** : Verdadeiro, Falso\n",
        "\n",
        "        **Padrão** : Falso\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.num_randomizations`\">\n",
        "        **Opções** : `auto`, Número inteiro >= 1\n",
        "\n",
        "        **Padrão** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.shots_per_randomization`\">\n",
        "        **Opções** : `auto`, Número inteiro >= 1\n",
        "\n",
        "        **Padrão** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.strategy`\">\n",
        "        **Opções** : `active`, `active-circuit`, `active-accum`, `all`\n",
        "\n",
        "        **Padrão** : `active-accum`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`experimental`\">\n",
        "    Opções experimentais, quando disponíveis.\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",
        "## Compatibilidade de recurso\n",
        "\n",
        "Certas funcionalidades de tempo de execução não podem ser utilizadas em conjunto em um único trabalho. Clique na guia correspondente para ver uma lista de recursos incompatíveis com o recurso selecionado:\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Circuitos dinâmicos\">\n",
        "    Incompatível com:\n",
        "\n",
        "    * Desacoplamento dinâmico\n",
        "\n",
        "    Outras observações:\n",
        "\n",
        "    * A rotação de portas pode ser aplicada a circuitos dinâmicos, mas apenas a portas que não estejam dentro de blocos condicionais. A rotação da medição só pode ser aplicada a medições em terminais.\n",
        "    * Compatível com portas fracionárias ao usar o `qiskit-ibm-runtime` `v0.42.0` ou versões posteriores.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Desacoplamento dinâmico\">\n",
        "    Incompatível com:\n",
        "\n",
        "    * Circuitos dinâmicos\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Portas fracionárias\">\n",
        "    Incompatível com:\n",
        "\n",
        "    * Giro do portão\n",
        "\n",
        "    Compatível com circuitos dinâmicos ao usar o `qiskit-ibm-runtime`v0.42.0 ou versões posteriores.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"Giro do portão\">\n",
        "    Incompatível com:\n",
        "\n",
        "    * Portas fracionárias\n",
        "    * Alongamentos\n",
        "\n",
        "    Outras observações:\n",
        "\n",
        "    * A rotação de portas pode ser aplicada a circuitos dinâmicos, mas apenas a portas que não estejam dentro de blocos condicionais.\n",
        "    * A rotação da medição só pode ser aplicada a medições em terminais.\n",
        "    * A manipulação das medidas é incompatível com a [`store`](/docs/api/qiskit/circuit#store) instrução.\n",
        "    * Não funciona com entanglers que não sejam 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óximas etapas\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recomendações\">\n",
        "  * Consulte o guia “[Introdução às opções](/docs/guides/runtime-options-overview) ”.\n",
        "  * Veja mais detalhes sobre os `SamplerV2` métodos na [referência](/docs/api/qiskit-ibm-runtime/sampler-v2) da API do Sampler.\n",
        "  * Decida em que [modo de execução](execution-modes) deseja executar sua tarefa.\n",
        "  * Saiba mais sobre [o gerenciamento de ruídos com o 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
}