netket.operator.AbstractOperator¶
-
class
netket.operator.
AbstractOperator
(hilbert)[source]¶ Bases:
abc.ABC
Abstract class for quantum Operators. This class prototypes the methods needed by a class satisfying the Operator concept. Users interested in implementing new quantum Operators should derive they own class from this class
-
__init__
(hilbert)[source]¶ Initialize self. See help(type(self)) for accurate signature.
- Parameters
hilbert (netket.hilbert.abstract_hilbert.AbstractHilbert) –
- Attributes
-
H
¶ Returns the Conjugate-Transposed operator
- Return type
AbstractOperator
-
T
¶ Returns the transposed operator
- Return type
AbstractOperator
-
hilbert
¶ The hilbert space associated to this operator.
- Return type
AbstractHilbert
-
- Methods
-
__call__
(v)[source]¶ Call self as a function.
- Return type
- Parameters
v (numpy.ndarray) –
-
apply
(v)[source]¶ - Return type
- Parameters
v (numpy.ndarray) –
-
collect
()[source]¶ Returns a guranteed concrete instancce of an operator.
As some operations on operators return lazy wrapperes (such as transpose, hermitian conjugate…), this is used to obtain a guaranteed non-lazy operator.
- Return type
AbstractOperator
-
conjugate
(*, concrete=False)[source]¶ Returns the complex-conjugate of this operator.
- Parameters
concrete – if True returns a concrete operator and not a lazy wrapper
- Return type
AbstractOperator
- Returns
if concrete is not True, self or a lazy wrapper; the complex-conjugated operator otherwise
-
get_conn
(x)[source]¶ Finds the connected elements of the Operator. Starting from a given quantum number x, it finds all other quantum numbers x’ such that the matrix element \(O(x,x')\) is different from zero. In general there will be several different connected states x’ satisfying this condition, and they are denoted here \(x'(k)\), for \(k=0,1...N_{\mathrm{connected}}\).
- Parameters
x (array) – An array of shape (hilbert.size) containing the quantum numbers x.
- Returns
The connected states x’ of shape (N_connected,hilbert.size) array: An array containing the matrix elements \(O(x,x')\) associated to each x’.
- Return type
matrix
-
abstract
get_conn_flattened
(x, sections)[source]¶ Finds the connected elements of the Operator. Starting from a given quantum number x, it finds all other quantum numbers x’ such that the matrix element \(O(x,x')\) is different from zero. In general there will be several different connected states x’ satisfying this condition, and they are denoted here \(x'(k)\), for \(k=0,1...N_{\mathrm{connected}}\).
This is a batched version, where x is a matrix of shape (batch_size,hilbert.size).
- Parameters
x (matrix) – A matrix of shape (batch_size,hilbert.size) containing the batch of quantum numbers x.
sections (array) – An array of sections for the flattened x’. See numpy.split for the meaning of sections.
- Returns
The connected states x’, flattened together in a single matrix. array: An array containing the matrix elements \(O(x,x')\) associated to each x’.
- Return type
matrix
-
get_conn_padded
(x)[source]¶ Finds the connected elements of the Operator. Starting from a batch of quantum numbers x={x_1, … x_n} of size B x M where B size of the batch and M size of the hilbert space, finds all states y_i^1, …, y_i^K connected to every x_i. Returns a matrix of size B x Kmax x M where Kmax is the maximum number of connections for every y_i.
- Parameters
x (matrix) – A matrix of shape (batch_size,hilbert.size) containing the batch of quantum numbers x.
- Returns
The connected states x’, in a 3D tensor. array: A matrix containing the matrix elements \(O(x,x')\) associated to each x’ for every batch.
- Return type
matrix
-
n_conn
(x, out=None)[source]¶ Return the number of states connected to x.
- Parameters
x (matrix) – A matrix of shape (batch_size,hilbert.size) containing the batch of quantum numbers x.
out (array) – If None an output array is allocated.
- Returns
The number of connected states x’ for each x[i].
- Return type
array
-
to_dense
()[source]¶ Returns the dense matrix representation of the operator. Note that, in general, the size of the matrix is exponential in the number of quantum numbers, and this operation should thus only be performed for low-dimensional Hilbert spaces or sufficiently sparse operators.
This method requires an indexable Hilbert space.
- Return type
- Returns
The dense matrix representation of the operator as a Numpy array.
-
to_sparse
()[source]¶ Returns the sparse matrix representation of the operator. Note that, in general, the size of the matrix is exponential in the number of quantum numbers, and this operation should thus only be performed for low-dimensional Hilbert spaces or sufficiently sparse operators.
This method requires an indexable Hilbert space.
- Return type
csr_matrix
- Returns
The sparse matrix representation of the operator.
-
-