{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "bed19311-f71d-4d8c-9a05-1b68fa72df29",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"サンプラーのオプションを指定する\"\n",
        "description: \"Samplerプリミティブを使用してビルドする際、オプションを指定します。\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-sampler-options\" />\n",
        "\n",
        "# サンプラーのオプションを指定する\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=\"パッケージ・バージョン\">\n",
        "    このページのコードは、以下の要件に基づいて開発されました。\n",
        "    これらのバージョン以降のご利用をお勧めします。\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": [
        "オプションを使用して、サンプラープリミティブをカスタマイズすることができます。 このセクションでは、 IBM Quantum のプリミティブオプションの指定方法について解説します。 プリミティブのメソッド `run()` のインターフェースはすべての実装で共通していますが、そのオプションは共通ではありません。 および [`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) に関する詳細については、それぞれのAPIリファレンスを参照してください。\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-sampler-options\" />\n",
        "\n",
        "## サンプラーの設定\n",
        "\n",
        "Samplerの初期化時、初期化後、あるいはSamplerの初期化後にオプションを設定することができます。 これらのテクニックの使用方法については、 [「オプションの概要」](/docs/guides/runtime-options-overview#options-precedence) のトピックを参照してください。\n",
        "\n",
        "さらに、次のセクションで説明するように、` `run()` method` 内で ` `shots` value` を設定することもできます。\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",
        "### Run() メソッド\n",
        "\n",
        "に渡し得る値は、 `run()` インターフェースで定義されているものに限られます。  つまり、 `shots`。 これにより、現在の実行に対して `default_shots` 設定された値が上書きされます。\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",
        "### 特別な事例\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857e40a1-de1d-46f0-9db8-db55a6954f47",
      "metadata": {},
      "source": [
        "<span id=\"shots\" />\n",
        "\n",
        "<span id=\"shots\" />\n",
        "\n",
        "#### ショット\n",
        "\n",
        "この `SamplerV2.run` メソッドは2つの引数を受け取ります。1つはPUBのリストで、各PUBは「shots」に対して PUB 固有の値を指定できます。もう1つは「shots」というキーワード引数です。 これらのショット値はサンプラーの実行インターフェースの一部であり、ランタイム・サンプラーのオプションとは独立しています。  これらは、Samplerの抽象化に準拠するため、オプションとして指定された値よりも優先されます。\n",
        "\n",
        "ただし、 PUB やrunキーワード引数で指定されていない場合（あるいはそれらがすべて `None`である `shots` 場合）、オプションで指定されたshotsの値が使用されます。特に、 `default_shots`が該当します。\n",
        "\n",
        "要約すると、特定の PUB において、Samplerでショットを指定する際の優先順位は以下の通りです：\n",
        "\n",
        "1. PUB にショット数が指定されている場合は、その値を使用してください。\n",
        "2. でキーワード `shots` 引数が指定 `run`されている場合は、その値を使用します。\n",
        "3. が有効になっている `twirling` 場合（デフォルトでは True）、 [オプション `twirling`](/docs/api/qiskit-ibm-runtime/options-twirling-options) として指定された と `shots_per_randomization` `num_randomizations` の積が使用されます。\n",
        "4. が指定されている `sampler.options.default_shots` 場合は、その値を使用します。\n",
        "\n",
        "したがって、すべての可能な箇所でショットが指定されている場合、優先順位が最も高いもの（ PUB で指定されたショット）が使用されます。\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  PUB および で `run` 指定されたショットは優先順位が高いものの、 が有効になっており、 と `shots_per_randomization` の `num_randomizations` 積が の `shots` 値よりも小さい場合 `twirling` 、ジョブは失敗します。 `num_randomizations`このシナリオでは、 `SamplerV2` 指定された対象にショットを割り当てることができません。\n",
        "</Admonition>\n",
        "\n",
        "例:\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",
        "## 使用可能なオプション\n",
        "\n",
        "次の表は、最新バージョンの `qiskit-ibm-runtime`.のオプションをまとめたものです。 以前のバージョンのオプションを確認するには、 [API `qiskit-ibm-runtime` リファレンス](/docs/api/qiskit-ibm-runtime)にアクセスし、以前のバージョンを選択してください。\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"`default_shots`\">\n",
        "    構成ごとに、1つの回路あたりに使用するショットの総数。\n",
        "\n",
        "    **選択肢** ：0以上の整数\n",
        "\n",
        "    **既定値** ：なし\n",
        "\n",
        "    [`default_shots` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-sampler-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`dynamical_decoupling`\">\n",
        "    動的デカップリング誤差の低減設定を制御します。\n",
        "\n",
        "    [`dynamical_decoupling` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-sampler-options#dynamical_decoupling)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`dynamical_decoupling.enable`\">\n",
        "        **選択肢** ： `True`, `False`\n",
        "\n",
        "        **既定値** ： `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.extra_slack_distribution`\">\n",
        "        **選択肢** ： `middle`, `edges`\n",
        "\n",
        "        **既定値** ： `middle`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.scheduling_method`\">\n",
        "        選択肢： `asap`, `alap`\n",
        "        デフォルト： `alap`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.sequence_type`\">\n",
        "        選択肢： `XX`, `XpXm`, `XY4`\n",
        "        デフォルト： `XX`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.skip_reset_qubits`\">\n",
        "        選択肢： `True`, `False`\n",
        "        デフォルト： `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`environment`\">\n",
        "    [`environment` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-sampler-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.job_tags`\">\n",
        "        タグの一覧。\n",
        "\n",
        "        **選択肢** ：なし\n",
        "\n",
        "        **既定値** ：なし\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.log_level`\">\n",
        "        **選択肢** ：DEBUG、INFO、WARNING、ERROR、CRITICAL\n",
        "\n",
        "        **デフォルト** : 警告\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.private`\">\n",
        "        **選択肢** ： `True`, `False`\n",
        "\n",
        "        **既定値** ： `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`execution`\">\n",
        "    [`execution` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-sampler-options#execution)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`execution.init_qubits`\">\n",
        "        ショットごとに量子ビットを基底状態にリセットするかどうか。\n",
        "\n",
        "        **選択肢** ： `True`, `False`\n",
        "\n",
        "        **既定値** ： `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.rep_delay`\">\n",
        "        測定とそれに続く量子回路との間の時間差。\n",
        "\n",
        "        **選択肢** ：指定された範囲内の値 `backend.rep_delay_range`\n",
        "\n",
        "        **デフォルト** ：指定された値 `backend.default_rep_delay`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.meas_type`\">\n",
        "        **選択肢** ： `classified`, `kerneled`, `avg_kerneled`\n",
        "\n",
        "        **既定値** ： `classified`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`max_execution_time`\">\n",
        "    ジョブの実行時間を秒単位で制限します。 詳細については[、最大実行時間](/docs/guides/max-execution-time)に関するガイドをご覧ください。\n",
        "\n",
        "    **選択肢** ： \\[1 から 10800 までの]範囲の秒数（整数）\n",
        "\n",
        "    **デフォルト** ：10800（3時間）\n",
        "\n",
        "    [`max_execution_time` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-sampler-options#max_execution_time)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`simulator`\">\n",
        "    バックエンドをシミュレートする際に渡すオプション\n",
        "\n",
        "    [`simulator` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-simulator-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`simulator.basis_gates`\">\n",
        "        **選択肢** ：アンロール先の基本ゲート名のリスト\n",
        "\n",
        "        **デフォルト** ： [Qiskit Aer シミュ](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html)レータがサポートするすべての基本ゲートの集合\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.coupling_map`\">\n",
        "        **選択肢** ：方向性を持つ2量子ビット相互作用の一覧\n",
        "\n",
        "        **デフォルト** ：なし。これは、接続性の制約がない（完全接続）ことを意味します。\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.noise_model`\">\n",
        "        **選択肢** ： [Qiskit Aer NoiseModel](/docs/guides/build-noise-models)、またはその表現\n",
        "\n",
        "        **既定値** ：なし\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.seed_simulator`\">\n",
        "        **選択肢** ：整数\n",
        "\n",
        "        **既定値** ：なし\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`twirling`\">\n",
        "    回転オプション\n",
        "\n",
        "    [`twirling` APIドキュメント](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`twirling.enable_gates`\">\n",
        "        **選択肢** ：はい、いいえ\n",
        "\n",
        "        **デフォルト** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.enable_measure`\">\n",
        "        **選択肢** ：はい、いいえ\n",
        "\n",
        "        **デフォルト** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.num_randomizations`\">\n",
        "        **選択肢** ： `auto`、1以上の整数\n",
        "\n",
        "        **既定値** ： `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.shots_per_randomization`\">\n",
        "        **選択肢** ： `auto`、1以上の整数\n",
        "\n",
        "        **既定値** ： `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.strategy`\">\n",
        "        **選択肢** ： `active`, `active-circuit`, `active-accum`, `all`\n",
        "\n",
        "        **既定値** ： `active-accum`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`experimental`\">\n",
        "    利用可能な場合は、実験的なオプション。\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",
        "## フィーチャーの互換性\n",
        "\n",
        "特定のランタイム機能は、1つのジョブ内で同時に使用することはできません。 選択した機能と互換性のない機能の一覧を表示するには、該当するタブをクリックしてください：\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"動的回路\">\n",
        "    互換性がないもの：\n",
        "\n",
        "    * 動的デカップリング\n",
        "\n",
        "    その他の注意事項：\n",
        "\n",
        "    * ゲートの回転は動的回路に適用できますが、条件付きブロック内にあるゲートには適用できません。 測定の反転は、端子測定にのみ適用できます。\n",
        "    * v0.42.0`qiskit-ibm-runtime` 以降を使用する場合、フラクショナルゲートに対応しています。\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"動的脱結合\">\n",
        "    互換性がないもの：\n",
        "\n",
        "    * 動的回路\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"部分ゲート\">\n",
        "    互換性がないもの：\n",
        "\n",
        "    * 門をくるくる回す\n",
        "\n",
        "    v0.42.0`qiskit-ibm-runtime` 以降を使用する場合、動的回路に対応しています。\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"門をくるくる回す\">\n",
        "    互換性がないもの：\n",
        "\n",
        "    * 部分ゲート\n",
        "    * ストレッチ\n",
        "\n",
        "    その他の注意事項：\n",
        "\n",
        "    * ゲートの回転は動的回路に適用できますが、条件付きブロック内のゲートには適用できません。\n",
        "    * 測定の反転は、端子測定にのみ適用できます。\n",
        "    * 「Measurement twirling」は、この [`store`](/docs/api/qiskit/circuit#store) 命令と互換性がありません。\n",
        "    * Clifford型以外のエンタングラーでは動作しません。\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "b95e9e8e-575c-411e-8504-4ef0a00166d3",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## 次のステップ\n",
        "\n",
        "<Admonition type=\"tip\" title=\"推奨事項\">\n",
        "  * [「オプション入門」](/docs/guides/runtime-options-overview) ガイドをご確認ください。\n",
        "  * 各メソッドの `SamplerV2` 詳細については、 [Sampler API リファレンス](/docs/api/qiskit-ibm-runtime/sampler-v2)をご覧ください。\n",
        "  * ジョブ[を実行](execution-modes)するモードを決定します。\n",
        "  * [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
}