ユーティリティ
qiskit_mitigation.utils
Qiskitのリスク軽減ユーティリティ。
load_tasks_from_result
load_tasks_from_result(result, return_trex=False)
結果に保存された passthrough_data を使用して、実行結果から MitigationTask オブジェクトを読み込みます。
パラメーター
- result (QuantumProgramResult) – タスクを読み込むためのresulオブジェクト。
- return_trex (bool) – Trueの場合、返される MitigationTask オブジェクトのリストにTREXキャリブレーション要素を含めます。
戻り値
指定された結果を生み出した MitigationTask オブジェクトの一覧。
戻りの型
リスト [ MitigationTask ]
find_combined_unique_layers
find_combined_unique_layers(circuits, mitigation_types=None, custom_boxing_options=None, box_types='all')
指定されたボクシングオプションを使用して、指定された回路全体で検出された一意のボックス化されたレイヤーを返します。
返されるリストには、入力回路に現れる各異なるボックス化レイヤー(として表される CircuitInstruction)のインスタンスが1つずつ含まれます。 一部の緩和策では、関連するボクシングオプションが適用されます。 必要な緩和策を指定することで、一意なレイヤーを見つけるために回路をボックス化する際、これらのオプションが適用されます。 学習に使用される固有のレイヤーが実行時と同じになるようにするため、推奨される緩和策を講じることが推奨されます。 返されたボックスは、測定値を含むボックスだけ、ゲートのみを含むボックスだけ、あるいはすべての種類のボックスが返されるようにフィルタリングすることができます。
パラメーター
- circuits (list[QuantumCircuit]) – 一意なレイヤーを特定するための回路。
- mitigation_types (list[MitigationTask] | None) – 各回路の緩和処理に用いられる、初期化済みの緩和処理クラスの一覧。 各緩和策では、個々のレイヤーに影響を及ぼすボクシングオプションが適用される可能性があります。 指定された場合、そのリストの長さは と同じでなければなりません
circuits。 - custom_boxing_options (dict |list[dict] | None) – 関
generate_boxing_pass_manager()数が一意のレイヤーを検索するために使用する、カスタムボックス指定オプション。 1つの辞書が指定された場合、すべてのタスクに対して同じカスタムボクシングオプションが使用されます。 が指定Noneされた場合、デフォルトのボクシングオプションが使用されます。 - box_types (Literal['gates', 'measurement', 'all']) –
"gates"、または"measurements"のいずれかとなり"all"、それぞれゲート層のみ、測定層のみ、あるいはすべての層を含むフィルタボックスに対応します。
戻り値
指定されたボクシングオプションを使用して、指定された回路全体で見つかった一意なボックス化されたレイヤー。
戻りの型
リスト[CircuitInstruction]
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)
および qiskit_ibm_runtime.Executor メタデータから得られたショットデータに基づき、期待値を算出します。
のキーで指定された測定基準を用いて取得されたデータを使用し bool_array、の値にエンコードされた観測量を計算する basis_mapping``basis_mapping。
必要に応じて、ツイリング時と同様に bool_array、の追加の軸について平均化を行うことができます。
オプションで、測定のツイリング、PEC、およびポストセレクションに対応しています。
パラメーター
-
bool_array (ndarray[tuple[int, ...], dtype[bool]]) – ブール配列。おそらく、測定された量子ビットからのデータを表しているものと思われる。 最後の2つの軸は、それぞれショット数と古典ビット数です。 最下位ビットは、ビット軸
0のインデックス にあるものとみなされます。 がmeas_basis_axis与えられた場合、のその軸は、長さを持つ測定基底をインデックスbool_array付けするlen(basis_mapping)。 -
basis_mapping (dict[Pauli, list[SparsePauliOp | None]] |tuple[Sequence[SparsePauliOp], Sequence[str] | PauliList]) –
測定されたパウリ観測量およびそれに関連する基底。 「」
tuple、あるいは「」(observables, msmt_bases)、あるいは「dict」となる場合があります{basis: commuting_observables}。- タプル : length-2 型のタプルで
(observables, msmt_bases)、その要素は で構成observablesされる。ここで、 は個々の期待値を計算すべき のSparsePauliOpインスタンスのシーケンスであり、 はパウリ観測量のシーケンスmsmt_basesである。 における第 番i目のパウリは、にbool_array沿った の第 番i目のスライスに対応すると予想msmt_basesされるmeas_basis_axis。 - dict : 番
i目のキーは、 軸meas_basis_axisに沿ったbool_arrayの 番i目のスライスに対応すると仮定される測定基準です。 これらの値は、オブザーバブルの数と等しい長さのオブザーバブルのリスト (SparsePauliOp) です。Noneこれらの値は、オブザーバブルが基底と量子ビットごとに可換でない場合に使用されます。 この手法では、たとえ各観測可能量が複数の基底と可換であっても、値の中に各観測可能量が1回しか現れないことを前提としています。
- タプル : length-2 型のタプルで
-
meas_basis_axis (int | None) – 測定基底をインデックスとして指定する bool_array の軸。 順序は、. 内の順序と一致している必要があります
basis_mapping。 もし ならばNone、 は でlen(basis_mapping)なければならない1。また、 は唯一の測定基底に対応すると仮定bool_arrayする。 -
avg_axis (int |tuple[int, ...] | None) – 期待値を計算する際に、平均化の対象とする bool_array の軸(1つまたは複数)。 通常、これが「回転」軸となります。 非負でなければならない。 (ブール配列
-2のインデックス にあると仮定されるショット軸は、常に平均化の対象となります)。 -
measurement_flips (ndarray[tuple[int, ...], dtype[bool]] | None) – 測定のツイリングで使用される、オプションのブール値配列。 ビットフリップゲートを先行させた測定で取得されたビットを示します。 データ処理では、この配列と をXOR演算した結果が使用されます
bool_array。 . と同じ形状でなければなりませんbool_array。 -
pauli_signs (ndarray[tuple[int, ...], dtype[bool]] | None) – 確率的誤差相殺(PEC)で使用される、オプションのブール値配列。 最終軸は、回路内のノイズの多いボックスをすべて指し示すと想定される。 の値は、の全体的な符号がノイズの多いボックスに関連付けられるべき
-1であることを示Trueしています。これは通常、指定された回路のランダム化において、そのボックスに奇数個の逆ノイズ誤差が挿入されたためです。 最後の軸は、各回路のランダム化に関連する全体的な符号を求めるために、直ちに「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による緩和が施された期待値に適用される、再スケーリング係数γ。 その場合
None、再スケーリング係数は、陽性サンプルの数から陰性サンプルの数を差し引いた値として計算され、その計算式は となる1/(np.sum(~pauli_signs, axis=avg_axis) - np.sum(pauli_signs, axis=avg_axis))。 正のサンプルと負のサンプルの数が同じ場合、ゼロ除算によりこの処理が失敗する可能性があります。 また、これにより、各期待値がそれぞれ異なる倍率で再スケーリングされる点にも注意してください。 (TODO: ガンマ値の配列を指定できるようにする)。 -
rescale_factors (dict[str, float] | None) – 計算された観測量に見られる、各固有のパウリ項に対するスケール係数。 通常、読み出しノイズ低減(「TREX」)の補正係数に使用されます。 その場合
None、スケーリング係数は適用されません。
戻り値
(例: (val, variance) の2元組。観測したい各変数について1つずつ。
注:各観測変数における合計項間の共分散は、現時点では
返された分散。 # 予定
昇給
- ValueError – 負の値、重複する軸、または最後の2つの軸(ショット、ビット)のいずれかが含ま
avg_axisれている。 - ValueError – が含ま
avg_axisれていますmeas_basis_axis。 - ValueError – は
meas_basis_axisだがNonelen(basis_mapping) != 1。 - ValueError – が負である
meas_basis_axisか、または の最後の2つの軸(ショット、ビット)のいずれかを指すbool_array。 - ValueError – 内の要素数は、 に沿った
bool_arrayの長さと等しくないbasis_mapping``meas_basis_axis。 - ValueError – 観測量は、測定基底の範囲に含まれていない。
get_measurement_bases
get_measurement_bases(observables)
与えられたすべての観測量について期待値を計算するために、サンプリング対象となる基底を選択してください。
ここで「基底」とは、フルウェイトまたはハイウェイトのパウリ演算の測定を指し、これに基づいて、複数の量子ビットごとに可換なパウリ演算を推定することができる。
基底は、異なる観測量にわたる通勤パウリをグループ化することによって選択される。
パラメーター
observables (SparsePauliOp |list[SparsePauliOp]) – 量子コンピュータを用いて計算する観測量。
戻り値
- uint8 のリストにエンコードされた、サンプルに対するパウリ基底のリスト。ここで、 0=I,1=Z,2=X,3=Y。
- 各観測量について、測定された基底を、対応するパウリ状態およびその係数に写像する辞書。 測定された基底をキーとして、各観測量にはそれを表す SparsePauliOp が存在します。
戻りの型
tuple [ ndarray [ tuple [ int, …], dtype[uint8]], dict [ Pauli, list [ SparsePauliOp ]]]
map_observable_isa_to_canonical
map_observable_isa_to_canonical(isa_observable, canonical_qubits)
トランスパイルされた回路を基準として定義されたオブザーバブルを、標準的なボックス順にマッピングする。
トランスパイルされた(またはISA)順序では、量子ビットはデバイス内の量子ビットの「物理的な」配置に基づいてインデックス付けされます。
標準的な量子ビットの順序付け規則については、 Samplomaticのドキュメントを参照してください。
パラメーター
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli、 SparsePauliOp,、または SparseObservable のオブジェクト。
- canonical_qubits (Sequence[int]) – 各標準量子ビットに対応する物理量子ビットを指定するシーケンス。
戻り値
と同じ型を持つマップされた演算子 isa_observable
戻りの型
map_observable_virtual_to_canonical
map_observable_virtual_to_canonical(virt_observable, layout, canonical_qubits)
仮想量子ビットの順序を持つオブザーバブルを、標準的なボックス順序にマッピングする。
標準的な量子ビットの順序付け規則については、 Samplomaticのドキュメントを参照してください。
パラメーター
- virt_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli、 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)
トランスパイルされた回路を基準として定義されたオブザーバブルを、仮想順序にマッピングする。
トランスパイルされた(またはISA)順序では、量子ビットはデバイス内の量子ビットの「物理的な」配置に基づいてインデックス付けされます。
パラメーター
- isa_observable (Pauli |SparsePauliOp |SparseObservable) – Pauli、 SparsePauliOp,、または SparseObservable のオブジェクト。
- layout (Sequence[int]) – isa回路に使用される物理量子ビットの一覧。
戻り値
と同じ型を持つマップされた演算子 isa_observable
戻りの型