AQCSynthesisPlugin#
- class qiskit.transpiler.synthesis.aqc.AQCSynthesisPlugin[código fonte]#
Bases:
UnitarySynthesisPlugin
An AQC-based Qiskit unitary synthesis plugin.
This plugin is invoked by
transpile()
when theunitary_synthesis_method
parameter is set to"aqc"
.This plugin supports customization and additional parameters can be passed to the plugin by passing a dictionary as the
unitary_synthesis_plugin_config
parameter of thetranspile()
function.Supported parameters in the dictionary:
- network_layout (str)
Type of network geometry, one of {
"sequ"
,"spin"
,"cart"
,"cyclic_spin"
,"cyclic_line"
}. Default value is"spin"
.- connectivity_type (str)
type of inter-qubit connectivity, {
"full"
,"line"
,"star"
}. Default value is"full"
.- depth (int)
depth of the CNOT-network, i.e. the number of layers, where each layer consists of a single CNOT-block.
- optimizer (
Optimizer
) An instance of optimizer to be used in the optimization process.
- seed (int)
A random seed.
- initial_point (
ndarray
) Initial values of angles/parameters to start the optimization process from.
Attributes
- max_qubits#
Maximum number of supported qubits is
14
.
- min_qubits#
Minimum number of supported qubits is
3
.
- supported_bases#
The plugin does not support bases for synthesis.
- supports_basis_gates#
The plugin does not support basis gates and by default it synthesizes a circuit using
["rx", "ry", "rz", "cx"]
gate basis.
- supports_coupling_map#
The plugin does not support coupling maps.
- supports_gate_errors#
The plugin does not support 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 usesGate
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 deviceBackend
object and the exact meaning might be different depending on the backend.This defaults to False
- supports_gate_lengths#
The plugin does not support 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 usesGate
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#
The plugin does not support natural direction, it assumes bidirectional two qubit gates.
- supports_pulse_optimize#
The plugin does not support optimization of pulses.
- supports_target#
Whether the plugin supports taking
target
as an optiontarget
will be aTarget
object representing the target device for the output of the synthesis pass.By default this will be
False
since the plugin interface predates theTarget
class. If a plugin returnsTrue
for this attribute, it is expected that the plugin will use theTarget
instead of the values passed if any ofsupports_gate_lengths
,supports_gate_errors
,supports_coupling_map
, andsupports_basis_gates
are set (although ideally all those parameters should contain duplicate information).
Methods
- run(unitary, **options)[código fonte]#
Run synthesis for the given unitary matrix
- Parâmetros:
unitary (numpy.ndarray) – The unitary matrix to synthesize to a
DAGCircuit
objectoptions – The optional kwargs that are passed based on the output the
support_*
methods on the class. Refer to the documentation for these methods onUnitarySynthesisPlugin
to see what the keys and values are.
- Retorno:
The dag circuit representation of the unitary. Alternatively, you can return a tuple of the form
(dag, wires)
wheredag
is the dag circuit representation of the circuit representation of the unitary andwires
is the mapping wires to use forqiskit.dagcircuit.DAGCircuit.substitute_node_with_dag()
. If you return a tuple andwires
isNone
this will behave just as if only aDAGCircuit
was returned. Additionally if this returnsNone
no substitution will be made.- Tipo de retorno: