netket.experimental.hilbert.Particle#

class netket.experimental.hilbert.Particle[source]#

Bases: ContinuousHilbert

Hilbert space derived from ContinuousHilbert defining N particles in continuous space with or without periodic boundary conditions.

Inheritance
Inheritance diagram of netket.experimental.hilbert.Particle
__init__(N, *, geometry)[source]#

Constructs new Particles given specifications of the continuous space they are defined in.

Parameters:
  • N (int | tuple[int, ...]) – Number of particles. If int all have the same spin. If Tuple the entry indicates how many particles there are with a certain spin-projection.

  • geometry (Cell) – Instance of Cell defining the geometry.

Return type:

None

Attributes
domain#

Domain of the continuous variable, specified for each dimension

geometry#

Geometry of the continuous space.

is_indexable#

Whether the space can be indexed with an integer

n_particles#

The number of particles

n_per_spin#

Gives the number of particles in a specific spin projection.

The length of this tuple indicates the total spin whereas the position in the tuple indicates the spin projection.

Example: (10,5,3) describes 18 particles of total spin 1 where 10 of those have spin-projection -1, 5 have spin-projection 0 and 3 have spin-projection 1.

size#
Methods
ptrace(sites)[source]#

Returns the hilbert space without the selected sites.

Not all hilbert spaces support this operation.

Parameters:

sites (int | Sequence[int]) – a site or list of sites to trace away

Return type:

Optional[Self]

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=None)[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 (Any) – rng state from a jax-style functional generator.

  • size (int | None) – 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:

Array

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))
[0 0]
>>> print(hi.random_state(key=k2, size=2))
[[0 0]
 [0 0]]