netket.hilbert.Particle

class netket.hilbert.Particle(N, L, pbc)

Bases: netket.hilbert.ContinuousHilbert

Hilbert space derived from AbstractParticle for Fermions.

Inheritance
Inheritance diagram of netket.hilbert.Particle
__init__(N, L, pbc)[source]
Constructs new Particles given specifications

of the continuous space they are defined in.

Parameters
  • N (int) – Number of particles

  • L (Tuple[float, …]) – spatial extension in each spatial dimension

  • pbc (Union[bool, Tuple[bool, …]]) – Whether or not to use periodic boundary conditions for each spatial dimension. If bool, its value will be used for all spatial dimensions.

Attributes
extent

Spatial extension in each spatial dimension

Return type

Tuple[float, …]

is_indexable

Whever the space can be indexed with an integer

Return type

bool

n_particles

The number of particles

Return type

int

pbc

Whether or not to use periodic boundary conditions for each spatial dimension

Return type

Tuple[bool, …]

size
Return type

int

Methods
ptrace(sites)

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'>)

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.]]