Skip to main content
IBM Quantum Platform

CliffordUnitarySynthesis

class qiskit.transpiler.passes.synthesis.clifford_unitary_synth_plugin.CliffordUnitarySynthesis

GitHub

Bases: UnitarySynthesisPlugin

A Clifford unitary synthesis plugin.

The plugin is invoked by the UnitarySynthesis transpiler pass when the parameter method is set to "clifford".

The plugin checks if the given unitary can be represented by a Clifford, in which case it returns a circuit implementing this unitary and consisting only of Clifford gates.

In addition, the parameter plugin_config of UnitarySynthesis can be used to pass the following plugin-specific parameters:

  • min_qubits: the minumum number of qubits to consider (the default value is 1).
  • max_qubits: the maximum number of qubits to consider (the default value is 3).

Attributes

max_qubits

min_qubits

supported_bases

supports_basis_gates

supports_coupling_map

supports_gate_errors

supports_gate_errors_by_qubit

Return whether the plugin supports taking gate_errors_by_qubit

This differs from supports_gate_errors/gate_errors by using a different view of the same data. Instead of being keyed by gate name this is keyed by qubit and uses Gate instances to represent gates (instead of gate names).

gate_errors_by_qubit will be a dictionary in the form of {(qubits,): [Gate, error]}. For example:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

Do note that this dictionary might not be complete or could be empty as it depends on the target backend reporting gate errors on every gate for each qubit. The gate error rates reported in gate_errors are provided by the target device Backend object and the exact meaning might be different depending on the backend.

This defaults to False

supports_gate_lengths

supports_gate_lengths_by_qubit

Return whether the plugin supports taking gate_lengths_by_qubit

This differs from supports_gate_lengths/gate_lengths by using a different view of the same data. Instead of being keyed by gate name this is keyed by qubit and uses Gate instances to represent gates (instead of gate names)

gate_lengths_by_qubit will be a dictionary in the form of {(qubits,): [Gate, length]}. For example:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

where the length value is in units of seconds.

Do note that this dictionary might not be complete or could be empty as it depends on the target backend reporting gate lengths on every gate for each qubit.

This defaults to False

supports_natural_direction

supports_pulse_optimize

supports_target

Whether the plugin supports taking target as an option

target will be a Target object representing the target device for the output of the synthesis pass.

By default this will be False since the plugin interface predates the Target class. If a plugin returns True for this attribute, it is expected that the plugin will use the Target instead of the values passed if any of supports_gate_lengths, supports_gate_errors, supports_coupling_map, and supports_basis_gates are set (although ideally all those parameters should contain duplicate information).


Methods

run

run(unitary, **options)

GitHub

Run the CliffordUnitarySynthesis plugin on the given unitary.

Was this page helpful?
Report a bug or request content on GitHub.