View source on GitHub
  
 | 
Gatesets represent a collection of cirq.GateFamily objects.
cirq.Gateset(
    *gates, name: (str | None) = None, unroll_circuit_op: bool = True
) -> None
Used in the notebooks
| Used in the tutorials | 
|---|
Gatesets are useful for
- Describing the set of allowed gates in a human-readable format.
 - Validating a given gate / 
cirq.OP_TREEagainst the set of allowed gates. 
Gatesets rely on the underlying cirq.GateFamily for both description and
validation purposes.
Args | |
|---|---|
*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.
 | 
Attributes | |
|---|---|
gates
 | 
|
name
 | 
|
Methods
validate
validate(
    circuit_or_optree: (cirq.AbstractCircuit | op_tree.OP_TREE)
) -> bool
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
with_params(
    *, name: (str | None) = None, unroll_circuit_op: (bool | None) = None
) -> Gateset
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.
 | 
| 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__
__contains__(
    item: (raw_types.Gate | raw_types.Operation)
) -> bool
Check for containment of a given Gate/Operation in this Gateset.
Containment checks are handled as follows:
- For Gates or Operations that have an underlying gate (i.e. op.gate is not None):
- Forwards the containment check to the underlying 
cirq.GateFamilyobjects. - Examples of such operations include 
cirq.GateOperations and their controlled and tagged variants (i.e. instances ofcirq.TaggedOperation,cirq.ControlledOperationwhereop.gateis not None) etc. 
 - Forwards the containment check to the underlying 
 - 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 ofcirq.TaggedOperation,cirq.ControlledOperationwhereop.gateis None) etc. 
 - Forwards the containment check to 
 
The complexity of the method in terms of the number of gates, n, is
- O(1) when any default 
cirq.GateFamilyinstance accepts the given item, except for an Instance GateFamily trying to match an item with a different global phase. - 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__
__eq__(
    other: _SupportsValueEquality
) -> bool
__ne__
__ne__(
    other: _SupportsValueEquality
) -> bool
    View source on GitHub