ControlFlowOp
class qiskit.circuit.ControlFlowOp(*args, **kwargs)
ベース: Instruction, ABC
すべての制御フロー操作をカプセル化する抽象クラス。
のすべてのサブクラスは ControlFlowOp のサブクラスはすべて内部属性を持つ、 blocksこれは、制御フローの異なるブロックで使用される内部サブ回路を公開する。
パラメータ duration と unit は Qiskit 1.3 以降非推奨となっており、 2.0 以降で削除される予定です。 命令の継続時間は、バックエンドのTargetオブジェクトで定義される。
パラメーター
- name (str) – インストラクション名
- num_qubits (int) – 命令の量子ビット幅
- num_clbits (int) – 命令のビット幅
- params (list[int|float|complex|str|ndarray|list|ParameterExpression]) – パラメータ一覧
- label (str or None) – 命令を識別するためのオプションのラベル。
レイズ
- CircuitError - レジスタが正しいフォーマットでない場合。
- TypeError - オプションのラベルが与えられているが、それが文字列ではない場合。
属性
base_class
この命令の基本クラスを取得します。 これは self の継承ツリーにあることが保証されている。
命令の "基本クラス "とは、そのオブジェクトが回路アプリケーションのために完全 に互換性があると考えるべき、継承ツリーで最も低いクラスのことである。 これは通常、サブクラスが純粋にベースクラスよりもプログラマーの利便性を向上させるために定義され、ベースクラスが動作の観点から「真の」クラスであることを意味する。 特に、上書きしないでください base_class 代替測定戦略や、特定のパラメータセットを持つパラメータ化されたゲートのバージョンなど、ハードウェアによって異なる方法で実装される命令のカスタムバージョンを定義する場合、 Target 完全にパラメータ化されたゲートから。
これは、標準ライブラリ命令のシングルトン・インスタンスの場合を除き、 type(obj) と正確に等価であることが多い。 これらのシングルトン・インスタンスはベース・クラスの特別なサブクラスであり、このプロパティはそのベースを返す。 例:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True一般的に、命令の正確なクラスは当てにならない。 Instruction.name は、ほとんどの状況において、より適切な識別器となることが期待される。
blocks
のタプル QuantumCircuitの実行の一部として実行される。 ControlFlowOp.
decompositions
SessionEquivalenceLibrary から命令の分解を取得する。
definition
他の基本ゲートの観点から定義を返す。
label
返品指示ラベル
mutable
このインスタンスはミュータブルなユニークインスタンスかどうか。
この属性が False である場合、ゲートのインスタンスは共有シングルトンであり、ミュータブルではありません。
name
名前を返す。
num_clbits
clbits の数を返す。
num_qubits
量子ビットの数を返す。
params
このパラメータは Instruction. 理想はゲートアングルだ。
方法
add_decomposition
broadcast_arguments
broadcast_arguments(qargs, cargs)
引数の検証。
パラメーター
- qargs (List) – 量子ビット引数のリスト。
- cargs (List) – 古典的なビット引数のリスト。
生成数
Tuple(List, List) - 単一の引数を持つタプル。
レイズ
CircuitError - 入力が有効でない場合。 例えば、引数の数がゲートの予想と一致しない。
copy
copy(name=None)
インストラクションのコピー
パラメーター
name (str) – コピーされた回路に与えられる名前。 None の場合、名前はそのまま。
戻り値
現在の命令のコピーで、名前が与えられていればそれを更新する
戻りの型
inverse
inverse(annotated=False)
この指示を反転させる。
注釈付きが偽の場合、逆命令は、再帰的に反転された定義を持つ新しい命令として実装される。
アノテーションが True の場合、逆命令は次のように実装されます。 AnnotatedOperationとして実装され、"inverse modifier "でアノテーションされた命令に対応します。
インストラクションを継承する特殊な命令は、それ自身の逆数を実装できる(例:TとTdg、バリアなど) 特に、引数 annotated をどのように扱うかを選択することができる。これには、無視することや、逆ゲートが標準ゲートとして定義されている場合は常に具象ゲートクラスを返すことなどが含まれる。
パラメーター
annotated (bool) – として返される。 AnnotatedOperation.
戻り値
逆の操作。
レイズ
CircuitError - 命令が複合命令でなく、その逆数が実装されていない場合。
is_parameterized
iter_captured_stretches
iter_captured_stretches()
このコンストラクトのすべてのブロックで、一意にキャプチャされたストレッチ変数に対するイテレータを取得します。
戻りの型
Iterable [ expr.Stretch ]
iter_captured_vars
repeat
replace_blocks
abstractmethod replace_blocks(blocks)
このコントロールフロー操作の新しいバージョンを返す。 blocks を新しいものにマッピングして返す。
通常、これは次のようなワークフローで使用される:
existing_op = ...
def map_block(block: QuantumCircuit) -> QuantumCircuit:
new_block = block.copy_empty_like()
# ... do something to `new_block` ...
return new_block
new_op = existing_op.replace_blocks(
map_block(block) for block in existing_op.blocks
)を構築するように、マッピングされたブロックが統一された回路リソースのセット上で定義されていることを確認するのは、呼び出し側の責任である。 ControlFlowOp をデフォルトのコンストラクタを使って構築するのと同じです。
パラメーター
blocks (Iterable[QuantumCircuit]) – 新しいサブサーキット・ブロックを使用する。
戻り値
新品 ControlFlowOp ブロックを交換した。
戻りの型
reverse_ops
reverse_ops()
複合命令の場合は、サブ命令の順序を逆にする。
これは、すべてのサブ命令を再帰的に反転させることによって行われる。 ゲートを反転させることはない。
戻り値
を持つ新しい命令である。
サブ・インストラクションが逆。
戻りの型
soft_compare
soft_compare(other)
ゲート間のソフトな比較。 それらの名前、量子ビット数、古典的なビット番号は一致していなければならない。 パラメータの数は一致しなければならない。 各パラメーターが比較される。 ParameterExpression、それは考慮されない。
パラメーター
other (instruction) – その他の指導
戻り値
はパラメータ式まで自己と他者が等しい。
戻りの型
to_mutable
to_mutable()
このゲートの変更可能なコピーを返す。
このメソッドは、このゲート・インスタンスの新しい変更可能なコピーを返す。 シングルトンインスタンスが使用されている場合、これは新しいユニークなインスタンスとなり、変異させることができる。 インスタンスがすでにミュータブルであれば、そのインスタンスのディープコピーとなる。