View source on GitHub 
Wrapper around a stabilizer state in CH form for the act_on protocol.
Inherits From: StabilizerSimulationState
, SimulationState
, SimulationStateBase
cirq.sim.StabilizerChFormSimulationState(
*,
prng: Optional[np.random.RandomState] = None,
qubits: Optional[Sequence['cirq.Qid']] = None,
initial_state: Union[int, 'cirq.StabilizerStateChForm'] = 0,
classical_data: Optional['cirq.ClassicalDataStore'] = None
)
Args  

qubits

Determines the canonical ordering of the qubits. This is often used in specifying the initial state, i.e. the ordering of the computational basis states. 
prng

The pseudo random number generator to use for probabilistic effects. 
initial_state

The initial state for the simulation. This can be a full CH form passed by reference which will be modified inplace, or a bigendian int in the computational basis. If the state is an integer, qubits must be provided in order to determine array sizes. 
classical_data

The shared classical data container for this simulation. 
Raises  

ValueError

If initial state is an integer but qubits are not provided. 
Attributes  

allows_factoring

Subclasses that allow factorization should override this. 
can_represent_mixed_states


classical_data


ignore_measurement_results

THIS FUNCTION IS DEPRECATED.
IT WILL BE REMOVED IN Remove this call, it always returns False. 
log_of_measurement_results

Gets the log of measurement results. 
prng


qubit_map


qubits


state

Methods
apply_operation
apply_operation(
op: 'cirq.Operation'
)
copy
copy(
deep_copy_buffers: bool = True
) > cirq.sim.simulation_state.TSelf
Creates a copy of the object.
Args  

deep_copy_buffers

If True, buffers will also be deepcopied. Otherwise the copy will share a reference to the original object's buffers. 
Returns  

A copied instance. 
create_merged_state
create_merged_state() > cirq.sim.simulation_state.TSelf
Creates a final merged state.
factor
factor(
qubits: Sequence['cirq.Qid'], *, validate=True, atol=1e07, inplace=False
) > Tuple[cirq.sim.simulation_state.TSelf
, cirq.sim.simulation_state.TSelf
]
Splits two state spaces after a measurement or reset.
get_axes
get_axes(
qubits: Sequence['cirq.Qid']
) > List[int]
kronecker_product
kronecker_product(
other: cirq.sim.simulation_state.TSelf
,
*,
inplace=False
) > cirq.sim.simulation_state.TSelf
Joins two state spaces together.
measure
measure(
qubits: Sequence['cirq.Qid'], key: str, invert_mask: Sequence[bool]
)
Measures the qubits and records to log_of_measurement_results
.
Any bitmasks will be applied to the measurement record.
Args  

qubits

The qubits to measure. 
key

The key the measurement result should be logged under. Note
that operations should only store results under keys they have
declared in a _measurement_key_names_ method.

invert_mask

The invert mask for the measurement. 
Raises  

ValueError

If a measurement key has already been logged to a key. 
rename
rename(
q1: 'cirq.Qid', q2: 'cirq.Qid', *, inplace=False
)
Renames q1
to q2
.
Args  

q1

The qubit to rename. 
q2

The new name. 
inplace

True to rename the qubit in the current object, False to create a copy with the qubit renamed. 
Returns  

The original object with the qubits renamed if inplace is requested, or a copy of the original object with the qubits renamed otherwise. 
Raises  

ValueError

If the qubits are of different dimensionality. 
sample
sample(
qubits: Sequence['cirq.Qid'],
repetitions: int = 1,
seed: 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None
) > np.ndarray
Samples the state value.
swap
swap(
q1: 'cirq.Qid', q2: 'cirq.Qid', *, inplace=False
)
Swaps two qubits.
This only affects the index, and does not modify the underlying state.
Args  

q1

The first qubit to swap. 
q2

The second qubit to swap. 
inplace

True to swap the qubits in the current object, False to create a copy with the qubits swapped. 
Returns  

The original object with the qubits swapped if inplace is requested, or a copy of the original object with the qubits swapped otherwise. 
Raises  

ValueError

If the qubits are of different dimensionality. 
transpose_to_qubit_order
transpose_to_qubit_order(
qubits: Sequence['cirq.Qid'], *, inplace=False
) > cirq.sim.simulation_state.TSelf
Physically reindexes the state by the new basis.
Args  

qubits

The desired qubit order. 
inplace

True to perform this operation inplace. 
Returns  

The state with qubit order transposed and underlying representation updated. 
Raises  

ValueError

If the provided qubits do not match the existing ones. 
with_qubits
with_qubits(
qubits
) > cirq.sim.simulation_state.TSelf
Extend current state space with added qubits.
The state of the added qubits is the default value set in the subclasses. A new state space is created as the Kronecker product of the original one and the added one.
Args  

qubits

The qubits to be added to the state space. 
Regurns:
A new subclass object containing the extended state space.
__getitem__
__getitem__(
item: Optional['cirq.Qid']
) > cirq.sim.simulation_state.TSelf
Gets the item associated with the qubit.
__iter__
__iter__() > Iterator[Optional['cirq.Qid']]
Iterates the keys of the mapping.
__len__
__len__() > int
Gets the number of items in the mapping.