CliffordUnitarySynthesis
class qiskit.transpiler.passes.synthesis.clifford_unitary_synth_plugin.CliffordUnitarySynthesis
Bases: UnitarySynthesisPlugin
Um plug-in de síntese unitária de Clifford.
O plug-in é chamado pela passagem UnitarySynthesis transpiler pass quando o parâmetro method é definido como "clifford".
O plug-in verifica se a unidade fornecida pode ser representada por um Clifford e, nesse caso, retorna um circuito que implementa essa unidade e consiste apenas em portas Clifford.
Além disso, o parâmetro plugin_config de UnitarySynthesis pode ser usado para passar os seguintes parâmetros específicos do plug-in:
- min_qubits: o número mínimo de qubits a ser considerado (o valor padrão é 1).
- max_qubits: o número máximo de qubits a ser considerado (o valor padrão é 3).
Atributos
max_qubits
min_qubits
supported_bases
supports_basis_gates
supports_coupling_map
supports_gate_errors
supports_gate_errors_by_qubit
Retorna se o plug-in é compatível com o uso de gate_errors_by_qubit
Isso difere de supports_gate_errors/gate_errors por usar uma visão diferente dos mesmos dados. Em vez de ser codificado pelo nome da porta, ele é codificado por qubit e usa Gate para representar as portas (em vez dos nomes das portas).
gate_errors_by_qubit será um dicionário na forma de {(qubits,): [Gate, error]}. Por exemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Observe que esse dicionário pode não estar completo ou pode estar vazio, pois depende de o backend de destino relatar erros de porta em cada porta para cada qubit. As taxas de erro de porta informadas em gate_errors são fornecidas pelo objeto Backend do dispositivo de destino e o significado exato pode ser diferente dependendo do backend.
O padrão é False
supports_gate_lengths
supports_gate_lengths_by_qubit
Retorna se o plug-in é compatível com o uso de gate_lengths_by_qubit
Isso difere de supports_gate_lengths/gate_lengths por usar uma visão diferente dos mesmos dados. Em vez de ser codificado pelo nome da porta, ele é codificado por qubit e usa Gate para representar as portas (em vez dos nomes das portas)
gate_lengths_by_qubit será um dicionário na forma de {(qubits,): [Gate, length]}. Por exemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}em que o valor length está em unidades de segundos.
Observe que esse dicionário pode não estar completo ou pode estar vazio, pois depende de o backend de destino informar os comprimentos de porta em cada porta para cada qubit.
O padrão é False
supports_natural_direction
supports_pulse_optimize
supports_target
Se o plug-in é compatível com target como uma opção
target será um objeto Target representando o dispositivo de destino para a saída da passagem de síntese.
Por padrão, isso será False , pois a interface do plug-in é anterior à classe Target classe. Se um plug-in retornar True para esse atributo, espera-se que o plug-in use o parâmetro Target em vez dos valores passados se algum dos parâmetros supports_gate_lengths, supports_gate_errors, supports_coupling_map e supports_basis_gates estiver definido (embora o ideal seja que todos esses parâmetros contenham informações duplicadas).