FermionicGate
class FermionicGate(name, num_modes, /, params=None, *, label=None)
ベース: Gate
すべてのフェルミオンゲートの基底クラス。
一貫性を確保するため、このゲートクラスのサブクラスのみがインスタンスに追加できます FermionicCircuit。 したがって、このクラスは(現時点では)主に型としての役割を果たしています。
これは○○のサブクラスであるため、そのメソッドに関するドキュメント Gate では「量子ビット」という用語が使用されている場合があります。 これらの言及は、このサブクラスのインスタンスという文脈において、フェルミオンを指すものとして解釈されるべきである。
また、この再解釈によって、継承されたメソッドの一部が必ずしも妥当とは限らないという状況も生じ得る。 あらかじめ警告しておいた。
パラメーター
- name (str) – 門の名前。
- num_qubits – ゲートが作用する量子ビットの数。
- params (list | None) – パラメータの一覧。
- label (str | None) – ゲート用のオプションのラベル。
- num_modes (int)
属性
num_modes
このゲートが作用するフェルミオンモードの数。
継承された属性
base_class
この命令の基底クラスを取得します。 これは、の継承ツリーに含まれていることが保証されています self。
命令の「基底クラス」とは、そのオブジェクトが、あらゆる回路用途において完全に互換性があるとみなされるべき、継承ツリー内の最下位のクラスを指します。 これは通常、サブクラスが基底クラスに比べてプログラマーにとって何らかの利便性を提供することのみを目的として定義されており、行動の観点からは基底クラスこそが「真の」クラスであることを意味します。 特に、代替の測定戦略や、完全なパラメータ化ゲート Target と区別するために特定のパラメータセットを持つパラメータ化ゲートのバージョンなど、ハードウェアによって異なる方法で実装される命令のカスタムバージョンを定義する場合は base_class 、オーバーライドを行わないでください。
これは、標準ライブラリの命令のシングルトンインスタンスの場合を除き type(obj)、多くの場合、これとまったく同等です。 これらのシングルトンインスタンスは、その基底クラスの特別なサブクラスであり、このプロパティはその基底クラスを返します。 例:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True一般的に、命令の正確なクラスに依存すべきではありません。特定の回路内においては、ほとんどの場合、の方がより適切な判別基準とな Instruction.name ることが期待されます。
decompositions
SessionEquivalenceLibrary から、その命令の分解情報を取得します。
definition
他の基本ゲートを用いて定義を導出せよ。
label
リターン命令ラベル
mutable
このインスタンスは、変更可能な一意のインスタンスですか、それともそうではありませんか。
この属性が の場合、ゲートインスタンス False は共有シングルトンであり、変更不可能です。
name
その名前を返す。
num_clbits
clbits の数を返します。
num_qubits
量子ビットの数を返す。
params
このパラメータは Instruction…… 理想的には、これらはゲート角となるはずです。
プロトコルの手法
_apply_unitary_
_apply_unitary_(vec, norb, nelec, copy)
このゲートをffsimの状態ベクトルに適用し、ffsimのプロトコルを実装します。
これは、ffsimのプロトコル ffsim.SupportsApplyUnitary におけるアイデンティティ配置のエントリポイント(ローカルでは としてミラーリングされている SupportsApplyUnitary)です。ここでは、ゲートが状態ベクト 0..num_modes ルのモード に対して作用すると仮定し、配置を意識した ( _apply_unitary_placed_() 参照 SupportsApplyUnitaryPlaced)に処理を委譲します。この処理は、すべての具体的なフェルミオンゲートによって実装されています。 ( vec ベクトル None が受け入れられるかどうかを含め)、 norb``nelec、およびのセマンティクスについては、そのメソッドを参照してください copy。
昇給
NotImplementedError – このゲートが _apply_unitary_placed_ (型マーカーとしてのみ使用 FermionicGate される裸の )を実装しておらず、したがって状態ベクトルに適用できない場合。
パラメーター
戻りの型
np.ndarray
継承されるメソッド
add_decomposition
add_decomposition(decomposition)
SessionEquivalenceLibrary に、その命令の分解情報を追加してください。
broadcast_arguments
broadcast_arguments(qargs, cargs)
引数の検証と処理、およびそれらの関係について。
たとえば、 は を意味 cx([q[0],q[1]], q[2]) します cx(q[0], q[2]); cx(q[1], q[2])。 この方法では、引数が正しいグループ分けで返されます。 与えられた例では:
in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
[q[1], q[2]], []放送に関する一般的な規則は以下の通りです:
もし len(qargs) == 1 なら:
[q[0], q[1]] -> [q[0]],[q[1]]もし len(qargs) == 2 なら:
[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]] [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]] [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]もし len(qargs) ≧ 3 なら:
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
パラメーター
戻り値
引数が1つのタプル。
昇給
CircuitError – 入力が無効な場合。 たとえば、引数の数がゲートの期待値と一致しません。
戻りの型
control
control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)
そのオブジェクトの制御されたバージョンを返します。
制御ゲートは、が annotated の ControlledGate ときはとして False、が annotated の AnnotatedOperation ときはとして実装される True。
qiskit.circuit.gate.Gate.control()の引数は、Qiskit 2.3 以降、非推奨となっています annotated 。 Qiskit 3.0 では削除される予定です。 Gate.control () メソッドは、annoted=None を指定できなくなりました。 新しいデフォルト値は annotated=True であり、これにより制御ゲートは AnnotatedOperation として表現されます(専用の制御ゲートクラスがすでに存在する場合を除く)。 以前の動作を維持するには、annotated=False を明示的に設定してください。 ただし、annotated=True を指定することをお勧めします。これにより、制御回路の構築がトランスパイラ側へ委ねられるほか、制御ゲートに関するさらなる最適化が可能になり(通常、これにより高品質な回路が得られる)、
パラメーター
- num_ctrl_qubits (int) – 追加する対照群の数。 デフォルトは
1です。 - label (str | None) – ゲートラベル(任意)。 デフォルトは
Noneです。 制御ゲートが注釈付き操作として実装されている場合は、この設定は無視されます。 - ctrl_state (int |str | None) – ゲートの制御状態。整数またはビット列(例:
"110")で指定されます。 の場合None、デフォルトでは「すべて1」の状態になります2**num_ctrl_qubits - 1。 - annotated (bool | None) – 制御ゲートを、制御ゲートとして実装するか、注釈付き演算子として実装するかを指定します。 もし
None、とみなすならばFalse。
戻り値
このゲートの制御されたバージョン。
昇給
QiskitError – 無効 num_ctrl_qubits または ctrl_state。
copy
copy(name=None)
説明書の写し。
パラメーター
name (str) – コピーした回路に付ける名前。もし の場合 None 、名前はそのままになります。
戻り値
現在の指示書の写し(名前が指定されていた場合は、その名前を更新したもの)
戻りの型
inverse
inverse(annotated=False)
この指示を逆にしてください。
annotated が False の場合、逆の命令は、再帰的に反転された定義を持つ新しい命令として実装されます。
annotated が True の場合、逆命令は として実装され AnnotatedOperation、指定された命令に「逆修飾子」が付けられたものに対応します。
Instruction から継承する特殊な命令は、独自の逆関数を実装することができます(例:T や Tdg、Barrier など) 特に、引数の扱い方を自由に選択することができ、その annotated 中には、逆関数が標準ゲートとして定義されている場合は、その引数を無視して常に具体的なゲートクラスを返すという処理も含めることができます。
パラメーター
annotated (bool) – True に設定すると、出力の反転ゲートが として返されます AnnotatedOperation。
戻り値
逆演算。
昇給
CircuitError – その命令が複合命令ではなく、かつその逆命令が実装されていない場合。
is_parameterized
is_parameterized()
にコンパイル時パラメータが含ま Instruction れているかどうかを返す。
power
power(exponent, annotated=False)
このゲートを の累乗に上げなさい exponent。
単一ゲートとして実装される(参照: UnitaryGate) あるいは、注釈付き操作として(参照 AnnotatedOperation)。 やなどのいくつかの標準ゲートの場合、あるゲートの電力が RXGate、直接返される別の標準ゲートを用いて表現できるとき。
パラメーター
- exponent (float) – ゲートを開ける力
- annotated (bool) – パワーゲートが注釈付き演算として実装可能かどうかを示します。 やなどのいくつかの標準ゲートの場合、あるゲートの電力が別の標準ゲートを用いて表現できるときは
RXGate、この引数は無視されます。
戻り値
以下を実装する操作 gate^exponent
昇給
CircuitError – ゲートがユニタリでない場合
repeat
repeat(n)
を self 回繰り返す命令を作成します。
パラメーター
n (int) – 指示を繰り返す回数
戻り値
定義が含まれています。
戻りの型
昇給
CircuitError – n < 1 の場合。
reverse_ops
reverse_ops()
複合命令の場合は、構成命令の順序を逆にしてください。
これは、すべての子命令を再帰的に逆順にすることで行われます。 どのゲートも反転させません。
戻り値
新しい命令で
サブ命令の順序が逆になっています。
戻りの型
soft_compare
soft_compare(other)
ゲート間のソフトな比較。 それらの名前、量子ビット数、および古典ビット数は一致していなければなりません。 パラメータの数は一致している必要があります。 各パラメータが比較されます。 ParameterExpression である場合は、考慮されません。
パラメーター
other (instruction) – その他の指示。
戻り値
パラメータ式に至るまでは、自己と他者は等しい。
戻りの型
to_matrix
to_matrix()
ゲートのユニタリ行列を表す Numpy.array を返します。
戻り値
Gateのサブクラスに行列の定義がある場合。
戻りの型
np.ndarray
昇給
CircuitError – ゲートのサブクラスがこのメソッドを実装していない場合、この基底クラスのメソッドが呼び出されると例外が発生します。
to_mutable
to_mutable()
このゲートの変更可能なコピーを返します。
このメソッドは、このゲートインスタンスの新しい変更可能なコピーを返します。 シングルトンインスタンスが使用されている場合、これは変更可能な新しい一意のインスタンスとなります。 インスタンスがすでに変更可能な状態である場合、そのインスタンスのディープコピーが作成されます。
validate_parameter
validate_parameter(parameter)
ゲートパラメータは、int、float、または ParameterExpression のいずれかでなければなりません