qiskit_noise_learning.gate_sets.QiskitGateSet
class qiskit_noise_learning.gate_sets.QiskitGateSet(num_qubits: int | None = None, *, target: Target | None = None, qubit_subset: Iterable[int] | None = None, add_default_spam: bool = True, name: str | None = None, latex_str: str | None = None)
ベース: GateSet[QiskitGate]
ノイズを学習対象とし、Qiskitオブジェクトを使用して指定されるゲートセット。
ここでは、「ゲート」という用語をノイズ学習の文脈で使用しています。この文脈において、我々が注目する演算は、通常、デバイス上で個別に実行される最小単位の演算(ゲート cz など)ではなく、むしろ、そのノイズが単一の単位としてまとめて学習されるような、そうした演算の集合を指します。 要するに、この授業では通常、ゲートは層として扱われます。 ただし、必ずしもそうである必要はありません。部分幅のレイヤーや、内部で操作が重複しているレイヤーも有効です。 このオブジェクトをそれらの集合として表現する必要があるのは、特定のケースにおいて、それらのノイズモデル間で一貫性のあるゲージを定義するため、あるいはそれらのノイズモデルのパラメータ化を相互に関連付けるために、それらのノイズをまとめて学習する必要があるからです。
このオブジェクトは Python マッピングプロトコルに準拠しているため、例えば、辞書構文を使用してゲートを抽出することができます。 ゲートの名前は常に文字列です。
>>> from qiskit_noise_learning.gate_sets import QiskitGateSet
>>> from qiskit.circuit import QuantumCircuit
>>> # instantiate a new gate set on 10 qubits
>>> gate_set = QiskitGateSet(10)
>>> # the gate set comes populated with preparation and measurement gates on all 10 qubits
>>> assert len(gate_set) == 2
>>> assert "P" in gate_set and "M" in gate_setパラメーター
- num_qubits – 対象のQPUが持つ量子ビットの数。 a が指定
targetされている場合、このフィールドは省略可能です。 - target – ゲートセットにゲートが追加されるたびに、操作の妥当性を検証するための
Target基準(オプション)。 両方が存在num_qubitsする場合、その量子ビット数は と一致していなければならない。 - qubit_subset – QPUの関心領域を指定
range(num_qubits)するののサブセット。 追加されたすべてのゲートは、この部分集合の範囲内で動作する必要があります。 デフォルトでは、すべての量子ビットが含まれます。 - add_default_spam – 対象領域内のすべての量子ビットに対して、それぞれ状態準備(指定された名前
"P")および状態測定(指定された名前"M")を実装するゲートでゲートセットを初期化するかどうか。 - name – このゲートセットの名前。 その場合
None、クラス名にフォールバックnameします。 - latex_str – このゲートセットをレンダリングするための、 LaTeX の文字列(オプション)。
__init__
__init__(num_qubits: int | None = None, *, target: Target | None = None, qubit_subset: Iterable[int] | None = None, add_default_spam: bool = True, name: str | None = None, latex_str: str | None = None)
方法
コラム「 1 」 | コラム「 2 」 |
|---|---|
__init__([num_qubits, target, qubit_subset, ...]) | |
add_box_as_gate(box_instr, *[, name, latex_str]) | ボックス演算をゲートとして含むQiskit回路の命令を追加します。 |
add_circuit_as_gate(回路[, qubit_idxs, ...]) | 量子回路オブジェクトをゲートとして追加します。 |
add_gate(ゲート) | ゲートセットにゲートを追加します。 |
add_measurement(qubit_idxs, operation_type,...) | 指定された量子ビットを測定するゲートを、このゲートセットに追加してください。 |
add_preparation([qubit_idxs, annotations, ...]) | このゲートセットに、指定された量子ビットを準備(またはリセット)するゲートを追加します。 |
build_new_gate([name, idle_unused, latex_str]) | その内容がゲートとして追加される回路ビルダーを返します。 |
draw() | ゲートごとに色分けして、デバイスのトポロジーを描いてください。 |
get(k[,d]) | |
items() | |
keys() | |
values() |
属性
コラム「 1 」 | コラム「 2 」 |
|---|---|
label | プロッタの凡例で使用する文字列ラベル。 |
latex_str | このゲートセット用の LaTeX 文字列。 |
math_label | LaTeXの数学モード内で使用する文字列ラベル。 |
model_gate_set | このゲートセットのモデル。 |
name | このゲートセットの名前。デフォルトではクラス名が使用されます。 |
num_qubits | このゲートセットが作用するデバイスの量子ビットの総数。 |
qubit_subset | すべてのゲートが作用するデバイスキュービットのサブセットのインデックス。 |
target | このゲートセットの対象(もし存在する場合)。 |
model_gate_set
種類: ModelGateSet
このゲートセットのモデル。
target
add_gate
add_gate(gate: QiskitGate)
ゲートセットにゲートを追加します。
>>> from qiskit_noise_learning.gate_sets import QiskitGateSet, QiskitGate
>>> from qiskit.circuit import QuantumCircuit
>>> gate_set = QiskitGateSet(10)
>>> circuit = QuantumCircuit(5)
>>> circuit.cx(3, 4)
>>> gate_set.add_gate(QiskitGate("gate0", circuit, [4, 5, 7, 8, 9]))
>>> assert "gate0" in gate_setパラメーター
gate – 追加するゲート。
昇給
ValueError – ゲートが有効範囲外の量子ビットに作用する場合、またはこのゲートセットにターゲットが指定されているにもかかわらず、ゲートの構成要素のいずれかがその条件を満たしていない場合、あるいはゲートセット内でその名前がすでに使用されている場合。
add_box_as_gate
add_box_as_gate(box_instr: CircuitInstruction, *, name: str | None = None, latex_str: str | None = None) → str
ボックス演算をゲートとして含むQiskit回路の命令を追加します。
>>> from qiskit_noise_learning.gate_sets import QiskitGateSet, QiskitGate
>>> from qiskit.circuit import QuantumCircuit
>>> gate_set = QiskitGateSet(10)
>>> circuit = QuantumCircuit(10)
>>> with circuit.box():
... circuit.cx(3, 4)
... # use noop to indicate that only the first 7 qubits will be part of the gate,
... # otherwise it would be restricted to only qubits 3 and 4, and learned noise
... # will only be with respect to those two qubits
... circuit.noop(range(7))
>>> name = gate_set.add_box_as_gate(circuit[0])
>>> assert name in gate_setパラメーター
- box_instr – ボックス演算を含む回路命令。
- name – ゲートの名前、または 自動的に名前を割り当て
Noneてもらう。 - latex_str – このゲートに対するオプションの LaTeX 文字列。
戻り値
追加されたゲートの名前。
昇給
ValueError – 指定された命令に演算 qiskit.circuit.BoxOp が含まれていない場合、またはその命令が物理的ではない量子ビットに対して作用する場合。
add_circuit_as_gate
add_circuit_as_gate(circuit: QuantumCircuit, qubit_idxs: Iterable[int] | None = None, *, annotations: Iterable[Annotation] | None = None, name: str | None = None, latex_str: str | None = None) → str
量子回路オブジェクトをゲートとして追加します。
このメソッドは、 の薄いラッパーであり、 を add_gate() 自動的に QiskitGate 生成してくれます。
>>> from qiskit_noise_learning.gate_sets import QiskitGateSet, QiskitGate
>>> from qiskit.circuit import QuantumCircuit
>>> gate_set = QiskitGateSet(10)
>>> circuit = QuantumCircuit(5)
>>> circuit.cx(3, 4)
>>> name = gate_set.add_circuit_as_gate(circuit, [4, 5, 7, 8, 9])
>>> assert name in gate_setこれらはまったく無関係 circuit.qubits であり、例えば物理的な量子ビットを表すものではない。 その代わりに、このマッピングは、回路内の各量子ビットがどの物理量子ビットに対応するかという「レシピ」を提供 dict(zip(circuit.qubits, qubit_idxs)) するものである。
パラメーター
- 回路 – ゲートとして使用する回路。
- qubit_idxs – 回路が作用する物理的な量子ビット。
- 注釈 – 回路の実装方法を記述する注釈、または のデフォルトの注釈を使用
NoneするQiskitGate。 - name – ゲートの名前、または 自動的に名前を割り当て
Noneてもらう。 - latex_str – このゲートに対するオプションの LaTeX 文字列。
戻り値
追加されたゲートの名前。
build_new_gate
build_new_gate(name: str | None = None, idle_unused: bool = True, latex_str: str | None = None) → GateBuilder
その内容がゲートとして追加される回路ビルダーを返します。
>>> from qiskit_noise_learning.gate_sets import QiskitGateSet, QiskitGate
>>> from qiskit.circuit import QuantumCircuit
>>> gate_set = QiskitGateSet(10)
>>> with gate_set.build_new_gate() as builder:
... builder.circuit.cx(4, 5)
>>> assert builder.name in gate_set
>>> assert set(gate_set[builder.name].qubit_idxs) == set(range(10))パラメーター
- name – ゲートの名前、または 自動的に名前を割り当て
Noneてもらう。 - idle_unused – ゲートにまだ含まれていないすべての量子ビットを
qubit_subset、アイドル量子ビットとして自動的に含めるかどうか。 - latex_str – このゲートに対するオプションの LaTeX 文字列。
戻り値
回路設計者。
add_measurement
add_measurement(qubit_idxs: Iterable[int] | None = None, operation_type: type[Operation] = <class 'qiskit.circuit.measure.Measure'>, *, annotations: Iterable[Annotation] | None = None, name: str | None = None, latex_str: str | None = None) → str
指定された量子ビットを測定するゲートを、このゲートセットに追加してください。
パラメーター
- qubit_idxs – 測定対象となる物理量子ビットのインデックス。これらは、古典ビットとして測定される順序で指定されます。 デフォルトでは、関心領域は昇順で表示されます。
- operation_type – 各量子ビットに対して適用する測定操作の種類。
- 注釈 – 測定方法の実施方法を記述した注釈、または のデフォルトの注釈を使用
NoneするQiskitGate。 - name – ゲートの名前、または 自動的に名前を割り当て
Noneてもらう。 - latex_str – このゲートに対するオプションの LaTeX 文字列。
戻り値
追加されたゲートの名前。
add_preparation
add_preparation(qubit_idxs: Iterable[int] | None = None, *, annotations: Iterable[Annotation] | None = None, name: str | None = None, latex_str: str | None = None) → str
このゲートセットに、指定された量子ビットを準備(またはリセット)するゲートを追加します。
パラメーター
- qubit_idxs – 準備する物理量子ビットのインデックス。
- 注釈 – 準備の実装方法を記述する注釈、あるいは のデフォルトの注釈を使用
Noneする方法QiskitGate。 - name – ゲートの名前、または 自動的に名前を割り当て
Noneてもらう。 - latex_str – このゲートに対するオプションの LaTeX 文字列。
戻り値
追加されたゲートの名前。