Skip to main content
IBM Quantum Platform

BoxOp

class qiskit.circuit.BoxOp(body, duration=None, unit=None, label=None, annotations=())

GitHub

ベース: ControlFlowOp

より大きなコンテキストの中でアトミックに扱われる、回路上の操作のスコープ付き「ボックス」。

ボックス」とは、無条件に入力される制御フローの構成要素である。 箱の中身は、箱の始点と終点が障壁であるかのような振る舞いをするが、箱の中を "ずっと "通過することは許される。 ボックスは、変数、ストレッチ、コンパイラー・パスのための明示的なスコープでもある。

ボックスには、任意のユーザー定義カスタム・オブジェクトを "注釈 "することができる。 Annotation オブジェクトを "注釈 "することができる。 順序が重要な場合は、リストの最初の注釈を最初に適用し、次に2番目の注釈を適用する、というように解釈すべきである。 可能な限り、注釈は順序に依存しないことが一般的に推奨されている。

QuantumCircuit.box()通常、これは. のビルダーインターフェース形式を使用して作成します。

のデフォルトコンストラクタです。 BoxOp.

パラメーター

  • body (QuantumCircuit) – 箱の本体として使用する回路。 これにより、外側の回路から引き継がれる必要がある変数はすべて expr.Var 、明示的に閉じ込められるはずです。 結果として得られる命令に必要な量子ビット(qubit)およびクラビット(clbit)の数は、たとえそれらがアイドル状態であっても、回路内の数から推定されます。
  • duration (None) – 箱全体に対する任意の持続時間。
  • unit (Literal['dt', 's', 'ms', 'us', 'ns', 'ps', 'expr'] | None) – の単位は duration
  • label (str | None) – 命令のオプションの文字列ラベル。
  • annotations (Iterable[Annotation]) – いずれか Annotationをボックスに適用する。 順序が重要な場合、アノテーションは反復可能ファイルに現れるのと同じ順序で解釈される。

属性

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

body

この body 操作 QuantumCircuit の。

の唯一のエントリーとして返されるオブジェクトと同じである。 params() そして blocks().

decompositions

SessionEquivalenceLibrary から命令の分解を取得する。

definition

他の基本ゲートの観点から定義を返す。

label

返品指示ラベル

mutable

このインスタンスはミュータブルなユニークインスタンスかどうか。

この属性が False である場合、ゲートのインスタンスは共有シングルトンであり、ミュータブルではありません。

name

名前を返す。

num_clbits

clbits の数を返す。

num_qubits

量子ビットの数を返す。

params


方法

add_decomposition

add_decomposition(decomposition)

GitHub

SessionEquivalenceLibrary に命令の分解を追加する。

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

引数の検証。

パラメーター

  • qargs (List) – 量子ビット引数のリスト。
  • cargs (List) – 古典的なビット引数のリスト。

生成数

Tuple(List, List) - 単一の引数を持つタプル。

レイズ

CircuitError – 入力が無効な場合。 たとえば、引数の数がゲートの期待値と一致していません。

copy

copy(name=None)

GitHub

インストラクションのコピー

パラメーター

name (str) – コピーされた回路に与えられる名前。 None の場合、名前はそのまま。

戻り値

現在の命令のコピーで、名前が与えられていればそれを更新する

戻りの型

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

GitHub

この指示を反転させる。

注釈付きが偽の場合、逆命令は、再帰的に反転された定義を持つ新しい命令として実装される。

アノテーションが True の場合、逆命令は次のように実装されます。 AnnotatedOperationとして実装され、"inverse modifier "でアノテーションされた命令に対応します。

インストラクションを継承する特殊な命令は、それ自身の逆数を実装できる(例:TとTdg、バリアなど) 特に、引数 annotated をどのように扱うかを選択することができる。これには、無視することや、逆ゲートが標準ゲートとして定義されている場合は常に具象ゲートクラスを返すことなどが含まれる。

パラメーター

annotated (bool) – として返される。 AnnotatedOperation.

戻り値

逆の操作。

レイズ

CircuitError – その命令が複合命令ではなく、かつその逆命令が実装されていない場合。

is_parameterized

is_parameterized()

GitHub

Instruction コンパイル時パラメータが含まれているかどうかを返す。

iter_captured_stretches

iter_captured_stretches()

GitHub

このコンストラクトのすべてのブロックで、一意にキャプチャされたストレッチ変数に対するイテレータを取得します。

戻りの型

Iterable [ expr.Stretch ]

iter_captured_vars

iter_captured_vars()

GitHub

このコンストラクトのすべてのブロックで、一意にキャプチャされた変数に対するイテレータを取得します。

戻りの型

Iterable [ expr.Var ]

repeat

repeat(n)

GitHub

nnself を回繰り返す命令を作成します。

パラメーター

n (int) – 命令を繰り返す回数

戻り値

定義を含む。

戻りの型

qiskit.circuit.Instruction

レイズ

CircuitError – n < 1 の場合。

replace_blocks

replace_blocks(blocks)

GitHub

このコントロールフロー操作の新しいバージョンを返す。 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 - 使用する新しいサブサーキット・ブロック。

戻り値

新品 ControlFlowOp ブロックを交換した。

reverse_ops

reverse_ops()

GitHub

複合命令の場合は、サブ命令の順序を逆にする。

これは、すべてのサブ命令を再帰的に反転させることによって行われる。 ゲートを反転させることはない。

戻り値

を持つ新しい命令である。

サブ・インストラクションが逆。

戻りの型

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

ゲート間のソフトな比較。 それらの名前、量子ビット数、古典的なビット番号は一致していなければならない。 パラメータの数は一致しなければならない。 各パラメーターが比較される。 ParameterExpression、それは考慮されない。

パラメーター

other (instruction) – その他の指導

戻り値

はパラメータ式まで自己と他者が等しい。

戻りの型

bool

to_mutable

to_mutable()

GitHub

このゲートの変更可能なコピーを返す。

このメソッドは、このゲート・インスタンスの新しい変更可能なコピーを返す。 シングルトンインスタンスが使用されている場合、これは新しいユニークなインスタンスとなり、変異させることができる。 インスタンスがすでにミュータブルであれば、そのインスタンスのディープコピーとなる。

validate_parameter

validate_parameter(parameter)

GitHub

インストラクション・パラメータには、検証や正規化はありません。

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