# netket.hilbert.AbstractHilbert¶

class netket.hilbert.AbstractHilbert[source]

Bases: abc.ABC

Abstract class for NetKet hilbert objects.

This class definese the common interface that can be used to interact with hilbert spaces.

Hilbert Spaces are immutable.

Attributes
is_indexable

Whever the space can be indexed with an integer

Return type

bool

size

The number number of degrees of freedom in the basis of this Hilbert space.

Return type

int

Methods
ptrace(sites)[source]

Returns the hilbert space without the selected sites.

Not all hilbert spaces support this operation.

Parameters

sites (Union[int, Iterable]) – a site or list of sites to trace away

Return type

AbstractHilbert

Returns

The partially-traced hilbert space. The type of the resulting hilbert space might be different from the starting one.

random_state(key=None, size=None, dtype=<class 'numpy.float32'>)[source]

Generates either a single or a batch of uniformly distributed random states. Runs as random_state(self, key, size=None, dtype=np.float32) by default.

Parameters
• key – rng state from a jax-style functional generator.

• size (Optional[int]) – If provided, returns a batch of configurations of the form (size, N) if size is an integer or (*size, N) if it is a tuple and where $$N$$ is the Hilbert space size. By default, a single random configuration with shape (#,) is returned.

• dtype – DType of the resulting vector.

Return type

ndarray

Returns

A state or batch of states sampled from the uniform distribution on the hilbert space.

Example

>>> import netket, jax
>>> hi = netket.hilbert.Qubit(N=2)
>>> k1, k2 = jax.random.split(jax.random.PRNGKey(1))
>>> print(hi.random_state(key=k1))
[1. 0.]
>>> print(hi.random_state(key=k2, size=2))
[[0. 0.]
[0. 1.]]