cirq.ops.Gateset

Gatesets represent a collection of cirq.GateFamily objects.

Gatesets are useful for a) Describing the set of allowed gates in a human readable format b) Validating a given gate / optree against the set of allowed gates

Gatesets rely on the underlying cirq.GateFamily for both description and validation purposes.

*gates A list of cirq.Gate subclasses / cirq.Gate instances / cirq.GateFamily instances to initialize the Gateset.
name (Optional) Name for the Gateset. Useful for description.
unroll_circuit_op If True, cirq.CircuitOperation is recursively validated by validating the underlying cirq.Circuit.
accept_global_phase_op If True, cirq.GlobalPhaseOperation is accepted.

gates

name

Methods

validate

View source

Validates gates forming circuit_or_optree should be contained in Gateset.

Args
circuit_or_optree The cirq.Circuit or cirq.OP_TREE to validate.

with_params

View source

Returns a copy of this Gateset with identical gates and new values for named arguments.

If a named argument is None then corresponding value of this Gateset is used instead.

Args
name New name for the Gateset.
unroll_circuit_op If True, new Gateset will recursively validate cirq.CircuitOperation by validating the underlying cirq.Circuit.
accept_global_phase_op If True, new Gateset will accept cirq.GlobalPhaseOperation.

Returns
self if all new values are None or identical to the values of current Gateset. else a new Gateset with identical gates and new values for named arguments.

__contains__

View source

Check for containment of a given Gate/Operation in this Gateset.

Containment checks are handled as follows: a) For Gates or Operations that have an underlying gate (i.e. op.gate is not None):

    - Forwards the containment check to the underlying <a href="../../cirq/ops/GateFamily"><code>cirq.GateFamily</code></a> objects.
    - Examples of such operations include `cirq.GateOperations` and their controlled
        and tagged variants (i.e. instances of <a href="../../cirq/ops/TaggedOperation"><code>cirq.TaggedOperation</code></a>,
        <a href="../../cirq/ops/ControlledOperation"><code>cirq.ControlledOperation</code></a> where `op.gate` is not None) etc.

b) For Operations that do not have an underlying gate:

    - Forwards the containment check to `self._validate_operation(item)`.
    - Examples of such operations include `cirq.CircuitOperations` and their controlled
        and tagged variants (i.e. instances of <a href="../../cirq/ops/TaggedOperation"><code>cirq.TaggedOperation</code></a>,
        <a href="../../cirq/ops/ControlledOperation"><code>cirq.ControlledOperation</code></a> where `op.gate` is None) etc.

The complexity of the method is: a) O(1) when any default cirq.GateFamily instance accepts the given item, except for an Instance GateFamily trying to match an item with a different global phase. b) O(n) for all other cases: matching against custom gate families, matching across global phase for the default Instance GateFamily, no match against any underlying gate family.

Args
item The cirq.Gate or cirq.Operation instance to check containment for.

__eq__

View source

__ne__

View source