CliffordUnitarySynthesis
class qiskit.transpiler.passes.synthesis.clifford_unitary_synth_plugin.CliffordUnitarySynthesis
Bases: UnitarySynthesisPlugin
Un plugin de síntesis unitaria Clifford.
El plugin es invocado por el UnitarySynthesis transpiler pass cuando el parámetro method se establece en "clifford".
El plugin comprueba si el unitario dado puede ser representado por un Clifford, en cuyo caso devuelve un circuito que implementa este unitario y que consiste sólo en puertas Clifford.
Además, el parámetro plugin_config de UnitarySynthesis se puede utilizar para pasar los siguientes parámetros específicos del plugin:
- min_qubits: el número mínimo de qubits a tener en cuenta (el valor predeterminado es 1).
- max_qubits: el número máximo de qubits a considerar (el valor por defecto es 3).
Atributos
max_qubits
min_qubits
supported_bases
supports_basis_gates
supports_coupling_map
supports_gate_errors
supports_gate_errors_by_qubit
Devuelve si el plugin permite tomar gate_errors_by_qubit
Se diferencia de supports_gate_errors/gate_errors en que utiliza una visión diferente de los mismos datos. En lugar de estar codificado por nombre de puerta, está codificado por qubit y utiliza instancias para representar puertas (en lugar de nombres de puerta) Gate para representar las puertas (en lugar de sus nombres).
gate_errors_by_qubit será un diccionario en forma de {(qubits,): [Gate, error]}. Por ejemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Tenga en cuenta que este diccionario podría no estar completo o estar vacío, ya que depende de que el backend de destino informe de los errores de puerta en cada puerta para cada qubit. Las tasas de error de puerta indicadas en gate_errors son proporcionadas por el objeto Backend del dispositivo de destino y el significado exacto puede ser diferente dependiendo del backend.
El valor por defecto es Falso
supports_gate_lengths
supports_gate_lengths_by_qubit
Devuelve si el plugin permite tomar gate_lengths_by_qubit
Se diferencia de supports_gate_lengths/gate_lengths en que utiliza una visión diferente de los mismos datos. En lugar de estar codificado por nombre de puerta, está codificado por qubit y utiliza Gate para representar las puertas (en lugar de los nombres de las puertas)
gate_lengths_by_qubit será un diccionario en forma de {(qubits,): [Gate, length]}. Por ejemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}donde el valor length está en unidades de segundos.
Tenga en cuenta que este diccionario puede no estar completo o estar vacío, ya que depende de que el backend de destino informe de las longitudes de puerta en cada puerta para cada qubit.
El valor por defecto es Falso
supports_natural_direction
supports_pulse_optimize
supports_target
Si el plugin permite tomar target como opción
target será un Target que representa el dispositivo de destino para la salida del pase de síntesis.
Por defecto será False ya que la interfaz del plugin es anterior a la clase Target de la clase Si un plugin devuelve True para este atributo, se espera que el plugin utilice el parámetro Target en lugar de los valores pasados si se establece alguno de supports_gate_lengths, supports_gate_errors, supports_coupling_map, y supports_basis_gates (aunque lo ideal sería que todos esos parámetros contuvieran información duplicada).