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
- __init__(N, *, geometry)[source]#
Constructs new
Particles
given specifications of the continuous space they are defined in.
- 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.
- 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:
- 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]]