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 数はすべて明示的にキャプチャされるはずです。 結果として得られる命令に必要なクビットおよびCLビットの数は、たとえそれらがアイドル状態であっても、回路内の数から推測されます。
  • 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

bodyQuantumCircuit 操作の

の唯一のエントリーとして返されるオブジェクトと同じである。 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で行ってください。