|View source on GitHub|
Attempts to convert non-native gates into SycamoreGates.
cirq_google.optimizers.ConvertToSycamoreGates( tabulation: Optional[
cirq_google.optimizers.GateTabulation] = None, ignore_failures=False ) -> None
First, checks if the given operation is already a native sycamore operation.
Second, checks if the operation has a known unitary. If so, and the gate is a 1-qubit or 2-qubit gate, then performs circuit synthesis of the operation.
Third, attempts to
cirq.decompose to the operation.
Fourth, if ignore_failures is set, gives up and returns the gate unchanged. Otherwise raises a TypeError.
||If set, a tabulation for the Sycamore gate to use for decomposing Matrix gates. If unset, an analytic calculation is used for Matrix gates. To get a GateTabulation, call the gate_product_tabulation method with a base gate (in this case, usually cirq_google.SYC) and a maximum infidelity.|
||If set, gates that fail to convert are forwarded unchanged. If not set, conversion failures raise a TypeError.|
convert( op: cirq.Operation ) -> List[cirq.Operation]
optimization_at( circuit: cirq.Circuit, index: int, op: cirq.Operation ) -> Optional[cirq.PointOptimizationSummary]
Describes how to change operations near the given location.
For example, this method could realize that the given operation is an X gate and that in the very next moment there is a Z gate. It would indicate that they should be combined into a Y gate by returning PointOptimizationSummary(clear_span=2, clear_qubits=op.qubits, new_operations=cirq.Y(op.qubits))
||The circuit to improve.|
||The index of the moment with the operation to focus on.|
||The operation to focus improvements upon.|
|A description of the optimization to perform, or else None if no change should be made.|
optimize_circuit( circuit: Circuit )
__call__( circuit: Circuit )
Call self as a function.