UnitarySynthesisPlugin
class qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin
ベース: ABC
抽象ユニタリー合成プラグインクラス
この抽象クラスは、ユニタリー合成プラグインのインターフェースを定義する。
属性
max_qubits
ユニタリー合成プラグインがサポートする最大量子ビット数を返します。
合成されるユニタリーのサイズがこの値を超える場合、 default プラグインが使用されます。 上限がない場合は、 None を返し、すべてのユニタリー(>= min_qubits が定義されている場合)は、このプラグインが有効になったときに渡されます。
min_qubits
ユニタリー合成プラグインがサポートする最小の量子ビット数を返します。
合成されるユニタリーのサイズがこの値以下の場合、 default プラグインが使用される。 下限がない場合は None を返し、このプラグインが有効になると、すべてのユニタリー(<= max_qubits が定義されている場合)がこのプラグインに渡される。
supported_bases
合成にサポートされている塩基の辞書を返す
これは、キーが文字列のbasisで、値がbasisが動作するゲート名のリストである辞書を返すことが期待される。 合成法が複数の塩基をサポートしていない場合、これは None を返すはずである。 例:
{
"XZX": ["rz", "rx"],
"XYX": ["rx", "ry"],
}このメソッドによって辞書が返される場合、実行kwargsは、移行のために設定されたターゲット基底ゲートにマッチする基底文字列(すなわち、辞書のキー)のリストを含むパラメータ matched_basis 。 ディクショナリ内にターゲット基底ゲートセットにマッチするエントリがない場合、 matched_basis kwargは空リストに設定され、プラグインは、プラグインの能力にマッチしないターゲット基底ゲートセットに対処する方法を選択できる。
supports_basis_gates
プラグインが basis_gates
これが True を返した場合、プラグインの run() メソッドに basis_gates kwarg が渡され、対象となるバックエンドがサポートしているゲート名のリストが渡されます。 例えば、['sx', 'x', 'cx', 'id', 'rz']です。
supports_coupling_map
プラグインが coupling_map
これが True を返すと、プラグインの run() メソッドは1つのクワーグ coupling_map を受け取る。 coupling_map kwargはタプルに設定される。 CouplingMap タプルに設定され、最初の要素はターゲットバックエンドのqubit接続を表すオブジェクトで、2番目の要素はunitaryが乗っているカップリングマップのqubitインデックスを表す整数のリストになります。 ターゲット・バックエンドにカップリング・マップが設定されていない場合、 coupling_map kwargの値は (None, qubit_indices) になることに注意。
supports_gate_errors
プラグインが gate_errors
gate_errors は、 {gate_name: {(qubit_1, qubit_2): error}} の形式の辞書となる。 例:
{
'sx': {(0,): 0.0006149355812506126, (1,): 0.0006149355812506126},
'cx': {(0, 1): 0.012012477900732316, (1, 0): 5.191111111111111e-07}
}このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲートエラーを報告するかどうかに依存するため、完全でなかったり、空だったりする可能性があることに注意してください。 gate_errors で報告されるゲート・エラー・レートは、ターゲット・デバイス Backend オブジェクトによって提供されるものであり、正確な意味はバックエンドによって異なる可能性がある。
supports_gate_errors_by_qubit
プラグインが gate_errors_by_qubit
これは、 supports_gate_errors/gate_errors 、同じデータの異なるビューを使用することによって異なります。 ゲート名でキー設定される代わりに、これは量子ビットでキー設定され、(ゲート名の代わりに)ゲートを表すインスタンスを使用する。 Gate インスタンスを使ってゲートを表します(ゲート名の代わりに)。
gate_errors_by_qubit は、 {(qubits,): [Gate, error]} の形式の辞書となる。 例:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲートエラーを報告するかどうかに依存するため、完全でなかったり、空だったりする可能性があることに注意してください。 gate_errors で報告されるゲート・エラー・レートは、ターゲット・デバイス Backend オブジェクトによって提供されるものであり、正確な意味はバックエンドによって異なる可能性がある。
デフォルトは False
supports_gate_lengths
プラグインが gate_lengths
gate_lengths は、 {gate_name: {(qubit_1, qubit_2): length}} の形式の辞書となる。 例:
{
'sx': {(0,): 0.0006149355812506126, (1,): 0.0006149355812506126},
'cx': {(0, 1): 0.012012477900732316, (1, 0): 5.191111111111111e-07}
}ここで、 length の値は秒単位である。
このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲート長を報告することに依存するため、完全でなかったり、空であったりする可能性があることに注意してください。
supports_gate_lengths_by_qubit
プラグインが gate_lengths_by_qubit
これは、 supports_gate_lengths/gate_lengths 、同じデータの異なるビューを使用することによって異なります。 ゲート名でキー設定される代わりに、これは量子ビットでキー設定され、(ゲート名の代わりに)ゲートを表すインスタンスを使う。 Gate インスタンスでゲートを表します
gate_lengths_by_qubit は、 {(qubits,): [Gate, length]} の形式の辞書となる。 例:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}ここで、 length の値は秒単位である。
このディクショナリは、ターゲットのバックエンドが各クォビットの各ゲートのゲート長を報告することに依存するため、完全でなかったり、空であったりする可能性があることに注意してください。
デフォルトは False
supports_natural_direction
2-qubit ゲートの方向性を natural_direction として考慮するためのトグルをプラグインがサポートしているかどうかを返す。
のドキュメントを参照のこと。 UnitarySynthesis のドキュメントを参照のこと。
supports_pulse_optimize
pulse_optimize として、プラグインが合成中のパルスを最適化するトグルをサポートしているかどうかを返します。
のドキュメントを参照のこと。 UnitarySynthesis のドキュメントを参照のこと。
supports_target
プラグインがオプションとして target
target は Target オブジェクトになります。
False デフォルトでは、プラグイン・インターフェイスが Target クラスより前のものだからです。 プラグインがこの属性に対して True を返す場合、プラグインは,,, のいずれかが設定されていれば、渡された値の代わりに Targetsupports_gate_lengths 、 supports_gate_errors、 supports_coupling_map、 supports_basis_gates のいずれかが設定されている場合、渡された値の代わりに使用されることが期待されます(理想的には、これらのパラメータはすべて重複した情報を含む必要がありますが)。
方法
run
abstractmethod run(unitary, **options)
与えられたユニタリー行列に対して合成を実行する
パラメーター
- unitary (numpy.ndarray) – に合成するユニタリー行列。
DAGCircuitオブジェクト - options - クラスの
support_*メソッドの出力に基づいて渡されるオプションの kwargs。 のこれらのメソッドのドキュメントを参照してください。UnitarySynthesisPluginのドキュメントを参照してください。
戻り値
ユニタリーのダグ回路表現。 あるいは、 (dag, wires) という形式のタプルを返すこともできる。 dag は、ユニタリーの回路表現のダグ回路表現で、 wires は、以下のマッピングに使用するマッピングワイヤである。 qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). タプルを返し、 wires が None の場合、これは DAGCircuit だけが返されたのと同じように振る舞います。 さらに、 None 、代替は行われない。
戻りの型