|  View source on GitHub | 
State and context for an operation acting on a state tensor.
Inherits From: SimulationStateBase
cirq.SimulationState(
    *,
    state: TState,
    prng: (np.random.RandomState | None) = None,
    qubits: (Sequence[cirq.Qid] | None) = None,
    classical_data: (cirq.ClassicalDataStore | None) = None
)
Methods
add_qubits
add_qubits(
    qubits: Sequence[cirq.Qid]
) -> Self
Add qubits in the |0> state to a new state space and take the kron product.
| Args | |
|---|---|
| qubits | Sequence of qubits to be added. | 
| Returns | |
|---|---|
| NotImplemented | If the subclass does not implement this method. | 
| Self | A cirq.SimulationStatewith qubits added orselfif there are no qubits to
add. | 
apply_operation
apply_operation(
    op: cirq.Operation
)
copy
copy(
    deep_copy_buffers: bool = True
) -> Self
Creates a copy of the object.
| Args | |
|---|---|
| deep_copy_buffers | If True, buffers will also be deep-copied. Otherwise the copy will share a reference to the original object's buffers. | 
| Returns | |
|---|---|
| A copied instance. | 
create_merged_state
create_merged_state() -> Self
Creates a final merged state.
factor
factor(
    qubits: Sequence[cirq.Qid], *, validate=True, atol=1e-07, inplace=False
) -> tuple[Self, Self]
Splits two state spaces after a measurement or reset.
get_axes
get_axes(
    qubits: Sequence[cirq.Qid]
) -> list[int]
kronecker_product
kronecker_product(
    other: Self, *, inplace=False
) -> Self
Joins two state spaces together.
measure
measure(
    qubits: Sequence[cirq.Qid],
    key: str,
    invert_mask: Sequence[bool],
    confusion_map: dict[tuple[int, ...], np.ndarray]
)
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. | 
| confusion_map | The confusion matrices for the measurement. | 
| Raises | |
|---|---|
| ValueError | If a measurement key has already been logged to a key. | 
remove_qubits
remove_qubits(
    qubits: Sequence[cirq.Qid]
) -> Self
Remove qubits from the state space.
The qubits to be removed should be untangled from rest of the system and in the |0> state.
| Args | |
|---|---|
| qubits | Sequence of qubits to be removed. | 
| Returns | |
|---|---|
| NotImplemented | If the subclass does not implement this method. | 
| Self | A cirq.SimulationStatewith qubits removed orselfif there are no qubits to
remove. | 
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
) -> Self
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. | 
__getitem__
__getitem__(
    item: (cirq.Qid | None)
) -> Self
Gets the item associated with the qubit.
__iter__
__iter__() -> Iterator[cirq.Qid | None]
Iterates the keys of the mapping.
__len__
__len__() -> int
Gets the number of items in the mapping.