QubitSpace

class qugradlab.hilbert_spaces.QubitSpace(qubits: int)[source]

Bases: QuditSpace

A computational Hilbert space.

Attributes

basis

An array of positive integers labeling the Hilbert space basis

dim

The Hilbert space dimension

inverse

An array satisfying the property self.inverse[self.basis[i]]=i

qubits

The number of qubits

Methods

__init__

Initialises a QubitSpace

basis_vector

Returns a column vector represnetation corresponding to the input basis state label.

computational_projector

Generates a boolean filter for the computation basis states in basis.

computational_subspace

Initialises a qugrad.HilbertSpace corresponding the computation subspace.

dialate_operator

Dialates an operator \(\hat O\) that acts on the computational subspace to an operator \(\hat O\oplus 0\) that acts on the whole Hilbert space.

get_subspace

Generates a new subspace by filtering the basis state labels.

labels

Generates a string (list of strings) that represent the state(s).

project_operator

Projects an operator that acts on the Hilbert space to an operator that acts only on the computational subspace.

__init__(qubits: int)[source]

Initialises a QubitSpace

Parameters:

qubits (int) – The number of qubits

basis_vector(basis_state_label: int) ndarray[complex128]

Returns a column vector represnetation corresponding to the input basis state label.

Parameters:

basis_state_label (int) – A positive integer denoting the label of the basis state to generate the basis vector for.

Returns:

The basis vector corresponding to the input basis state label.

Return type:

NDArray[Shape[dim], np.complex128]

computational_projector()[source]

Generates a boolean filter for the computation basis states in basis.

Returns:

A boolean filter for the computation basis states in basis.

Return type:

NDArray[Shape[dim], bool]

computational_subspace() HilbertSpace

Initialises a qugrad.HilbertSpace corresponding the computation subspace.

Returns:

The computational subspace

Return type:

qugrad.HilbertSpace

dialate_operator(operator: ndarray) ndarray

Dialates an operator \(\hat O\) that acts on the computational subspace to an operator \(\hat O\oplus 0\) that acts on the whole Hilbert space.

Parameters:

operator (NDArray[Shape[computational_subspace().dim, computational_subspace().dim] complex]) – The operator that acts on the computational subspace

Returns:

The dialated operator that acts on the whole Hilbert space

Return type:

NDArray[Shape[dim, dim] complex]

get_subspace(filter: ndarray[bool]) HilbertSpace

Generates a new subspace by filtering the basis state labels.

Parameters:

filter (NDArray[Shape[dim], bool]) – True entries are retained in the new subspace.

Returns:

The filtered subspace.

Return type:

HilbertSpace

labels(states: int | list[int] | None = None) str | list[str][source]

Generates a string (list of strings) that represent the state(s).

Parameters:

states (int | list[int], optional) – The state(s) to label. If None then the labels for all states in basis are returned. By default None.

Returns:

The label(s) for the specified states.

Return type:

str | list[str]

project_operator(operator: ndarray) ndarray

Projects an operator that acts on the Hilbert space to an operator that acts only on the computational subspace.

Parameters:

operator (NDArray[Shape[dim, dim] complex]) – The operator that acts on the whole Hilbert space

Returns:

The projected operator that acts on the computational subspace.

Return type:

NDArray[Shape[computational_subspace().dim, computational_subspace().dim] complex]

property basis: ndarray[int]

An array of positive integers labeling the Hilbert space basis

property dim

The Hilbert space dimension

property inverse: ndarray[int]

An array satisfying the property self.inverse[self.basis[i]]=i

property qubits: int

The number of qubits