Skip to main content
IBM Quantum Platform

qiskit_noise_learning.models.PauliLindbladModel

class qiskit_noise_learning.models.PauliLindbladModel(gate_set: GateSet, generators: dict[str, QubitSparsePauliList], noise_site: dict[str, str] | None = None)

GitHub

基底: LinearMap[GeneratorIndex, FidelityIndex]

パウリ・リンドブラッド生成率から対数フィデリティへの線形写像。

このモデルクラスでは、ゲートセット内のすべてのゲートが、ユニタリ演算、純粋な準備状態(すべての量子ビットが準備され、ユニタリ部分は自明である)、あるいは純粋な測定(すべての量子ビットが測定され、ユニタリ部分は自明である)のいずれかであると仮定している。 さらに、少なくとも1つの準備ゲートと少なくとも1つの測定ゲートが存在すると仮定する。

この場合の各ゲートに対するノイズモデルはパウリチャネルであり、パウリ・リンドブラッド分解 exp⁡(∑P∈PnrPL(P))\exp(\sum_{P \in \mathcal{P}_n} r_P L(P)) のレートを用いてパラメータ化される。ここで、 rPr_P がレートであり、 L(P)=P⋅P−⋅L(P) = P \cdot P - \cdot である。ユニタリーゲートの場合、ノイズは理想的なユニタリー演算の前または後に発生するものとしてモデル化することができる。

パラメーター

  • gate_set – 忠実度がモデル化されているゲートセット。 . に変換されます ModelGateSet。
  • ジェネレータ – ゲート名と、そのゲートのノイズモデルに対応するパウリ・リンドブラッド・ジェネレータの集合を対応付ける辞書。 各ゲート用のジェネレータは、それぞれ一意でなければなりません。 準備層および測定層用のジェネレータは、IおよびXのみを用いて構築されなければならない。
  • noise_site – 各ゲート名について、ノイズモデルがゲートの前か後かで発生するかを指定する辞書。これは、文字列 および "before" で示される "after"。 ゲートセットで指定されていない値については、デフォルト値が設定されます。ユニタリゲートおよび純粋な準備状態ゲートについては "after" 、純粋な測定 "before" については。 純粋な測定または準備の値として、デフォルト値とは異なる値が指定された場合、エラーが発生します。

昇給

ValueError – ゲートセットが指定された形式に合致しない場合、または無効な値が含ま noise_site れている場合。

__init__

__init__(gate_set: GateSet, generators: dict[str, QubitSparsePauliList], noise_site: dict[str, str] | None = None)


方法

コラム「 1 」
コラム「 2 」
__init__(gate_set, generators[, noise_site])
compose(外側)ポストコンポーズ:self は I→O を写像し、outer は O→C を写像し、result は I→C を写像する。
k_local(gate_set[, k, gate_k, paulis, ...])k-局所モデルを構築する。
k_partition_local(gate_set[, k, gate_k, ...])量子ビットの分割に基づいて、k-局所モデルを構築する。
left_multiply(行列)左辺に明示的な行列を掛けます。
pre_compose(内部)事前合成:内部写像 A→I、自己写像 I→O、結果写像 A→O。
projected_output(output_indices, ベクトル)ベクトルに適用された写像の射影を計算する。
rows(output_indices)与えられたフィデリティ指標を行とする部分行列を構成する。
to_pauli_lindblad_maps(model_data[, ...])モデル内の各ゲートについて PauliLindbladMap 、の辞書を返す。

属性

コラム「 1 」
コラム「 2 」
gate_setその忠実度がモデル化されているゲートセット。
generatorsノイズモデル用の発生器。
input_space入力空間。
meas_namesこのモデルにおける測定項目の名称。
noise_site各ノイズマップが、各ゲートの前か後か。
output_space出力空間。
prep_namesこのモデルにおける調剤名のリスト。

gate_set

種類: ModelGateSet

その忠実度がモデル化されているゲートセット。

generators

型: dict[str, QubitSparsePauliList]

ノイズモデル用の発生器。

meas_names

タイプ: set[str]

このモデルにおける測定項目の名称。

noise_site

型: dict[str, str]

各ノイズマップが、各ゲートの前か後か。

prep_names

タイプ: set[str]

このモデルにおける調剤名のリスト。

rows

rows(output_indices: Iterable[FidelityIndex]) → IndexedMatrix[FidelityIndex, GeneratorIndex]

与えられたフィデリティ指標を行とする部分行列を構成する。

パラメーター

output_indices – 対象となる行にラベルを付ける忠実度インデックス。

戻り値

(ゼロ以外の)要求された忠実度インデックスおよびそれらの行に現れる生成子インデックスによってインデックス IndexedMatrix 付けされた。

昇給

ValueError – フィデリティ・インデックスのいずれかが、モデルに含まれていないゲートにラベルを付けた場合。

k_partition_local

static k_partition_local(gate_set: GateSet, k: int = 2, gate_k: dict[str, int] | None = None, qubit_partitions: dict[str, list[set[int]]] | None = None, local_paulis: dict[str, list[QubitSparsePauliList]] | None = None, noise_site: dict[str, Literal['before', 'after']] | None = None) → Self

量子ビットの分割に基づいて、k-局所モデルを構築する。

なお、このメソッド(後述)のデフォルトのパーティション設定により、このメソッドのデフォルトの動作は、. の場合とは異なりますのでご注意ください PauliLindbladModel.k_local()。

この手法は、 nn 個の量子ビットからなる集合の分割を用いてk-局所性を定義するものであり、単一の量子ビットにとどまらない、従来の概念を一般化したものである。 パーティションとは、 {0,...,n−1}\{0, ..., n - 1\} を網羅する、互いに交わらないクビットインデックスの集合のことです。2つのクビットインデックス i,ji, j は、辺 (i,j)(i, j) または (j,i)(j, i) のいずれかが結合マップに含まれている場合、隣り合うものとみなされます。この結合マップは から取得される gate_set か、デフォルトでは完全な結合マップが使用されます。 ある分割 PP が与えられたとき、2つの異なる量子ビットインデックス集合 B0,B1∈PB_0, B_1 \in P は、インデックス i∈B0i \in B_0 と j∈B1j \in B_1 が隣り合っている場合、互いに隣り合っているという。 同様に、異なる B0,B1∈PB_0, B_1 \in P は、 B0B_0 と B1B_1 の両方と隣り合っている異なる B2∈PB_2 \in P が存在する場合、互いに「次近傍」である。以下同様である。

あるゲートについて、 kk 局所モデルは、引数で定義された 11 局所項を起点として再帰的に構築される local_paulis。ここで、 11 局所項は、次式で m 与えられるサイズ の部分集合に対して定義される local_paulis[m]。 22 局所項は、隣接する部分集合のペア間の 11 局所項のテンソル積によって構築される。 一般に、 kk -局所項は、 (k−1)(k - 1) -局所項と 11 -局所項のテンソル積から構成され、これらは kk で連結な集合の集合上で定義される。

が qubit_partition 指定されない場合、シングルトンの分割が想定されます。 が local_paulis 指定されない場合、指定されたクビット数におけるすべての可能なパウリ状態の集合が想定されます。

パラメーター

  • gate_set – モデリング対象のゲートセット。 クリフォード層、純粋な準備層、および純粋な測定層のみを含んでいなければならない。 . に変換されます ModelGateSet。 カップリングマップは から描画されます gate_set.model_gate_set.coupling_map。あるいは、 が の場合 None、デフォルトでは完全なカップリングマップになります。
  • k – モデルのデフォルトの局所性の度合い。 . に明記されていないすべてのゲートに適用されます gate_k。 デフォルトは 2. です。 の値の場合、生成器は存在 0 せず、つまり、ゲートはノイズのないものとしてモデル化されます。
  • gate_k – ゲート名を、指定されたゲート k に対して優先されるゲートごとの局所性値にマッピングする辞書。
  • qubit_partitions – 各ゲートに対する量子ビットの分割を示す辞書。 指定されていないパーティションには、ユニタリゲート演算によって接続されている量子ビットがグループ化されるというデフォルト設定が適用されます。
  • local_paulis – 各ゲートについて、各キュービット分割にどの1-ローカル・パウリ演算を使用するかを指定する辞書。 I.e. len(local_paulis[gate_name]) は、における最大パーティションサイズと等しくなければならず qubit_partitions[gate_name]、 は と等しくなければ local_paulis[gate_name][k].num_qubits ならない k。 クリフォードゲートの場合、デフォルト local_paulis[gate_name][k] では 量子 k ビット上のすべての可能な非恒等パウリ状態が設定され、測定および準備の場合、デフォルトでは 量子 k ビット上の {I,X}\{I, X\} で構成されるすべてのパウリ状態が設定されます。
  • noise_site – ゲートノイズを としてモデル化するかどうか、あるいは "before" として "after" モデル化するかを指定する辞書。

戻り値

新しい PauliLindbladModel インスタンス。

昇給

  • ValueError – いずれかの値 k が. を超えた場合 len(gate_set.qubit_subset)。
  • ValueError – いずれかの値 k が負の場合。
  • ValueError – contains に、ゲートセットに含まれていない名前が含ま gate_k れている場合。
  • ValueError – 名前が他の辞書に含まれて gate_set いません。
  • ValueError – いずれかのパーティションの形式が不正です。
  • ValueError – 想定された形式を満た local_paulis していません。

k_local

static k_local(gate_set: GateSet, k: int = 2, gate_k: dict[str, int] | None = None, paulis: dict[str, QubitSparsePauliList] | None = None, noise_site: dict[str, Literal['before', 'after']] | None = None) → Self

k-局所モデルを構築する。

これは、各ゲートについて、各パーティション PauliLindbladModel.k_partition_local() を単一要素のパーティションとして指定して を呼び出すことと同じです。

パラメーター

  • gate_set – モデリング対象のゲートセット。 クリフォード層、純粋な準備層、および純粋な測定層のみを含んでいなければならない。 . に変換されます ModelGateSet。
  • k – モデルのデフォルトの局所性の度合い。 . に明記されていないすべてのゲートに適用されます gate_k。 デフォルトは 2. です。 の値の場合、生成器は存在 0 せず、つまり、ゲートはノイズのないものとしてモデル化されます。
  • gate_k – ゲート名を、指定されたゲート k に対して優先されるゲートごとの局所性値にマッピングする辞書。
  • paulis – k-ローカルモデルにおいて、各ゲートで使用する単一クビットのパウリ状態を示す辞書。 クリフォードゲートについては、デフォルトですべての単一量子ビットのパウリ演算が設定され、測定および状態準備については、デフォルトで {I,X}\{I, X\} が設定されます。
  • noise_site – ゲートノイズを としてモデル化するかどうか、あるいは "before" として "after" モデル化するかを指定する辞書。

戻り値

新しい PauliFidelityModel インスタンス。

to_pauli_lindblad_maps

to_pauli_lindblad_maps(model_data: ModelData, include_spam: bool = False, symmetrize_spam: bool = False, restrict_to_qubit_idxs: bool = False) → dict[str, PauliLindbladMap]

モデル内の各ゲートについて PauliLindbladMap 、の辞書を返す。

パラメーター

  • model_data – 推定されたモデルパラメータ。
  • include_spam – 出力にSPAMゲートを含めるかどうか。
  • symmetrize_spam – 準備ノイズマップおよび測定ノイズマップを、完全に指定された一般化脱分極マップに対称化するか否か。 が である include_spam 場合を除き、何の効果もありません True。 SPAM層のノイズについては、IおよびXのパウリのみを指定するように制限されています。 その場合 False、このメソッドは、指定された通りのジェネレータを持つSPAMマップを返します。つまり、IとXのパウリのみを含むマップです。 その場合 True、SPAMノイズマップは、一般化された脱分極マップとして返される。つまり、同じパターンを持つすべての発生源は、必然的に同じ発生率を持つことになる。 一般化された脱分極写像は、以下の条件を満たすように選択される:(1) Zのみの演算子に対する忠実度が、元のXのみの写像と同じであること、および (2) 新たな最大パターンを一切追加しないこと。 なお、生成子の数が増える可能性があることに注意してください。この写像では、生成子によって指定される量子ビットの部分集合が、部分集合の取り出しに関して閉じた集合であることが求められますが、k-局所写像の場合、これは通常成り立ちません。 最後に、これにより、以前は存在しなかったマイナス金利が生じる可能性があることに注意してください。その場合は、警告が表示されます。
  • restrict_to_qubit_idxs – 返されるパウリ・リンドブラッド写像を、各ゲートが定義されている量子ビットのみに制限します。 返されるマップ idx 内の「量子ビットインデックス」は、物理的な量子ビットに対応しています sorted(gate.qubit_idxs)[idx]。 もし False、であれば、返されるすべてのマップは、物理クビットのインデックスによってインデックス付けされたすべてのクビット gate_set.num_qubits に対して作用する。

戻り値

ゲート名とそれに対応するノイズマップを照合するための辞書。

昇給

ValueError – に正しいパラメータが含まれて model_data いない場合。

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