cirq.StateVectorMixin

A mixin that provide methods for objects that have a state vector.

qubit_map A map from the Qubits in the Circuit to the index of this qubit for a canonical ordering. This canonical ordering is used to define the state (see the state_vector() method).
*args Passed on to the class that this is mixed in with.
**kwargs Passed on to the class that this is mixed in with.

qubit_map

Methods

bloch_vector_of

View source

Returns the bloch vector of a qubit in the state.

Calculates the bloch vector of the given qubit in the state given by self.state_vector(), given that self.state_vector() follows the standard Kronecker convention of numpy.kron.

Args
qubit qubit who's bloch vector we want to find.

Returns
A length 3 numpy array representing the qubit's bloch vector.

Raises
ValueError if the size of the state represents more than 25 qubits.
IndexError if index is out of range for the number of qubits corresponding to the state.

density_matrix_of

View source

Returns the density matrix of the state.

Calculate the density matrix for the system on the qubits provided. Any qubits not in the list that are present in self.state_vector() will be traced out. If qubits is None, the full density matrix for self.state_vector() is returned, given self.state_vector() follows standard Kronecker convention of numpy.kron.

For example, if self.state_vector() returns np.array([1/np.sqrt(2), 1/np.sqrt(2)], dtype=np.complex64), then density_matrix_of(qubits = None) gives us

\[ \rho = \begin{bmatrix} 0.5 & 0.5 \\ 0.5 & 0.5 \end{bmatrix} \]

Args
qubits list containing qubit IDs that you would like to include in the density matrix (i.e.) qubits that WON'T be traced out.

Returns
A numpy array representing the density matrix.

Raises
ValueError if the size of the state represents more than 25 qubits.
IndexError if the indices are out of range for the number of qubits corresponding to the state.

dirac_notation

View source

Returns the state vector as a string in Dirac notation.

Args
decimals How many decimals to include in the pretty print.

Returns
A pretty string consisting of a sum of computational basis kets and non-zero floats of the specified accuracy.

state_vector

View source

Return the state vector (wave function).

The vector is returned in the computational basis with these basis states defined by the qubit_map. In particular the value in the qubit_map is the index of the qubit, and these are translated into binary vectors where the last qubit is the 1s bit of the index, the second-to-last is the 2s bit of the index, and so forth (i.e. big endian ordering).

Example
qubit_map {QubitA: 0, QubitB: 1, QubitC: 2} Then the returned vector will have indices mapped to qubit basis states like the following table

| | QubitA | QubitB | QubitC | | :-: | :----: | :----: | :----: | | 0 | 0 | 0 | 0 | | 1 | 0 | 0 | 1 | | 2 | 0 | 1 | 0 | | 3 | 0 | 1 | 1 | | 4 | 1 | 0 | 0 | | 5 | 1 | 0 | 1 | | 6 | 1 | 1 | 0 | | 7 | 1 | 1 | 1 |

Args
copy If True, the returned state vector will be a copy of that stored by the object. This is potentially expensive for large state vectors, but prevents mutation of the object state, e.g. for operating on intermediate states of a circuit. Defaults to False.