Skip to main content
IBM Quantum Platform

exp_vals

qiskit_addon_utils.exp_vals

期待値を計算するツール。

executor_expectation_values

executor_expectation_values(bool_array, basis_mapping, /, meas_basis_axis=None, *, avg_axis=None, measurement_flips=None, pauli_signs=None, postselect_mask=None, gamma_factor=None, rescale_factors=None)

GitHub

およびメタデータから qiskit_ibm_runtime.Executor 得られたショットデータに基づいて、期待値を算出します。

basis_dict``basis_dict``bool_arrayのキーで指定された測定基準を用いて取得されたデータを使用し、の値に符号化された観測量を計算する。

bool_array必要に応じて、ツイリング時と同様に、の追加の軸について平均化を行うことができます。

オプションで、測定ツワーリング、PEC、ポストセレクションをサポート。

パラメーター

  • bool_array (ndarray[tuple[int, ...], dtype[bool]]) – ブール配列。おそらく、測定された量子ビットからのデータを表しているものと思われる。 最後の2つの軸は、それぞれショット数と古典ビット数です。 最下位ビットは、ビット軸のインデックス 0 にあるものとみなされます。 len(basis_mapping)が与えられた場合 meas_basis_axis 、その軸は bool_array 長さを持つ測定基底をインデックス付けする。

  • basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –

    測定されたパウリ観測量およびそれに関連する基底。 {basis: commuting_observables}``dict``(observables, msmt_bases)``tuple「」、あるいは「」、あるいは「」となる場合があります。

    • (observables, msmt_bases)タプル : length-2 のタプルで、 を含む。ここで、 observables は個々の期待値を計算すべき のインスタンスの SparsePauliOp シーケンスであり、 msmt_bases はパウリ観測量のシーケンスである。 meas_basis_axisにおける msmt_basesi 番目のパウリは、に沿った の bool_array 番目のスライスに対応 i すると予想される。
    • i** dict** : 番目のキーは i 、 軸 meas_basis_axis に沿った の bool_array 番目のスライスに対応すると仮定される測定基準である。 これらの値は、オブザーバブルの個数と同じ長さのオブザーバブルのリスト (SparsePauliOp) です。 None これらの値は、オブザーバブルが基底と量子ビットごとに可換でない場合に用いられる。 この手法では、たとえ各観測可能量が複数の基底と可換であっても、値の中に各観測可能量が1回しか現れないことを前提としています。
  • meas_basis_axis (int | None) – 測定基準をインデックス付けする bool_array の軸。 basis_mapping順序は、. 内の順序と一致している必要があります。 1``Noneもし ならば、 は len(basis_mapping) でなければならない。また、 bool_array は唯一の測定基底に対応すると仮定する。

  • avg_axis (int |tuple[int, ...] | None) – 期待値を計算する際に、平均化の対象とする bool_array の軸(1つまたは複数)。 通常、これが「回転」軸となります。 非負でなければならない。 (ブール配列のインデックス -2 にあると仮定されるショット軸については、常に平均化が行われます)。

  • measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – 測定のツイリングで使用される、オプションのブール値配列。 ビット反転ゲートを先行させた測定で取得されたビットを示します。 bool_arrayデータ処理では、この配列と をXOR演算した結果が使用されます。 bool_array. と同じ形状でなければなりません。

  • pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – 確率的誤差相殺(PEC)で使用される、オプションのブール値配列。 最終軸は、回路内のノイズの多いボックスをすべてインデックス付けすると仮定する。 の True 値は、の -1 全体的な符号がノイズの多いボックスに関連付けられるべきであることを示しています。これは通常、指定された回路のランダム化において、そのボックスに奇数個の逆ノイズ誤差が挿入されたためです。 最後の軸は、各回路のランダム化に関連する全体的な符号を求めるため、直ちに「2を法とする和」として折りたたまれます。 pauli_signs.shape[:-1] == bool_array.shape[:-2]残りの形状は、でなければならない。 なお、この配列には「ショット」軸はありません。

  • postselect_mask (ndarray[tuple[int, ...], dtype[bool]] | None) – ポストセレクションに使用されるオプションのブール値の配列。 True (False) は、ポストセレクションによって受け入れられた(または拒否された)ショットを示す。 bool_array.shape[:-1]形状は である必要があります。

  • gamma_factor (float | None) – PECによる緩和が施された期待値に適用される、再スケーリング係数γ。 1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis))``Noneその場合、再スケーリング係数は、陽性サンプルの数から陰性サンプルの数を差し引いた値として計算され、その計算式は となる。 正のサンプルと負のサンプルの数が同じ場合、ゼロ除算によりこの処理が失敗する可能性があります。 また、これにより、各期待値がそれぞれ異なる倍率で再スケーリングされる点にも注意してください。 (TODO: ガンマ値の配列を指定できるようにする)。

  • basis_mappingrescale_factors (Sequence[Sequence[Sequence[float]]] | None) – 与えられた各基底における各観測量内の各パウリ項に対するスケール係数。 通常、読み出しノイズ低減(「TREX」)の補正係数に使用されます。 リスト内の各項目はそれぞれ異なる基底に対応しており、その基底に関連する各観測量の各項について、因子のリストのリストが含まれています。 basis_mapping各基底内の基底の順序および観測量は、で示されているものと同じであるべきである。 一部の基底について、空のオブザーバブルがある場合は、空のリストを保持してください。 Noneその場合、スケーリング係数は適用されません。

戻り値

のリスト。 val,variance)の2タプルで、各観測対象に対して1つずつ。

注:各観測変数の合計項間の共分散は、現在のところ考慮されていない。

返された分散。 # 予定

レイズ

  • ValueErroravg_axis 負の値が含まれている。
  • ValueErrormeas_basis_axisNone だが len(basis_mapping) != 1
  • meas_basis_axisValueError – 内の basis_mapping 要素数は、 に沿った bool_array の長さと等しくない。
  • ValueError – 観測量は、測定基底の範囲に含まれていない。

get_measurement_bases

get_measurement_bases(observables, bases_in_int_format=True)

GitHub

与えられたすべての観測量に対する期待値を計算するために、サンプリングする塩基を選択する。

ここでいう「基底」とは、フルウェイトまたはハイウェイトのパウリの測定のことであり、そこから複数の量子ビット単位のコミュティングパウリを推定することができる。

ベースは、異なる観測値にわたって通い合うポーリをグループ化することによって選択される。

パラメーター

  • observables (SparsePauliOp |list[SparsePauliOp]) – 量子コンピュータを使って計算する観測量。
  • bases_in_int_format (bool) – 真の場合、samplomaticの規約( I=0、 Z=1、 X=2、 Y=3 )に従って、基数を整数の配列として返します。 整数の順序は、文字列内の各パウリのインデックスに従います。 たとえば、基底「IXYZ」の場合、 [1、3、2、0] という結果が返されます。 false の場合、基底を文字列の配列として返します。

戻り値

  • サンプル用のパウリ基底のリスト。これは、 uint8 のリストとしてエンコードされており、 0=I,1=Z,2=X,3=Y、または文字列のリスト(bases_in_int_formatパラメータに基づく)として指定されます。
  • 各測定基底を、各観測変数に関連するポーリスとその係数に対応付けるディクティク。 測定されたベースをキーとして、各観測可能なものにはそれを表す SparsePauliOp。

戻りの型

タプル [ リスト [ ndarray [ タプル [ int, …], d[* type uint8*] ]], dict [ Pauli, list [ SparsePauliOp ]]] | tuple [ list [ str ], dict [ Pauli, list [ SparsePauliOp ]]]

map_observable_isa_to_canonical

map_observable_isa_to_canonical(isa_observable, canonical_qubits)

GitHub

トランスパイルされた回路に対して定義された観測値を、カノニカルなボックスオーダーにマップする。

トランスパイル(またはISA)順序では、量子ビットはデバイス内の量子ビットの "物理的 "レイアウトに基づいてインデックス付けされる。

標準的な量子ビットの順序規則については、 Samplomaticのドキュメントを参照)。

パラメーター

  • isa_observable (Pauli |SparsePauliOp |SparseObservable) – パウリ、 SparsePauliOp, または SparseObservable オブジェクト。
  • canonical_qubits (Sequence[int]) – 各正準量子ビットの物理量子ビットを指定するシーケンス。

戻り値

と同じ型のマップされた演算子。 isa_observable

戻りの型

*パウリ *SparsePauliOp | SparseObservable

map_observable_virtual_to_canonical

map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)

GitHub

仮想的な量子ビット順序を持つ観測値を、カノニカルなボックス順序にマップする。

標準的な量子ビットの順序規則については、 Samplomaticのドキュメントを参照)。

パラメーター

  • virt_observable (Pauli |SparsePauliOp |SparseObservable) – パウリ、 SparsePauliOp, または SparseObservable オブジェクト。
  • layout (Sequence[int]) – isa回路に使用される物理量子ビットのリスト。
  • canonical_qubits (Sequence[int]) – ボックス内のカノニカル量子ビットをレイアウト内の物理量子ビットにマッピングする辞書。

戻り値

と同じ型のマップされた演算子。 virt_observable

map_observable_isa_to_virtual

map_observable_isa_to_virtual(isa_observable, layout)

GitHub

トランスパイルサーキットに対して定義されたオブザーバブルをバーチャルオーダーにマップする。

トランスパイル(またはISA)順序では、量子ビットはデバイス内の量子ビットの "物理的 "レイアウトに基づいてインデックス付けされる。

パラメーター

  • isa_observable (Pauli |SparsePauliOp |SparseObservable) – パウリ、 SparsePauliOp, または SparseObservable オブジェクト。
  • layout (Sequence[int]) – isa回路に使用される物理量子ビットのリスト。

戻り値

と同じ型のマップされた演算子。 isa_observable

戻りの型

*パウリ *SparsePauliOp | SparseObservable

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。