# netket.hilbert.DoubledHilbert¶

class netket.hilbert.DoubledHilbert(hilb)[source]

Bases: netket.hilbert.abstract_hilbert.AbstractHilbert

Superoperatorial hilbert space for states living in the tensorised state Hotimes H, encoded according to Choi’s isomorphism.

__init__(hilb)[source]
Superoperatorial hilbert space for states living in the

tensorised state Hotimes H, encoded according to Choi’s isomorphism.

Parameters

hilb – the hilbrt space H.

Examples

Simple superoperatorial hilbert space for few spins.

>>> from netket.hilbert import Spin, DoubledHilbert
>>> g = Hypercube(length=5,n_dim=2,pbc=True)
>>> hi = Spin(N=3, s=0.5)
>>> hi2 = DoubledHilbert(hi)
>>> print(hi2.size)
50

Attributes
is_discrete
is_finite
is_indexable

“Whever the space can be indexed with an integer

Return type

bool

local_size
local_states
n_states
shape
size
size_physical
Methods
all_states(out=None)

Returns all valid states of the Hilbert space.

Throws an exception if the space is not indexable.

Parameters

out (Optional[ndarray]) – an optional pre-allocated output array

Return type

ndarray

Returns

A (n_states x size) batch of statess. this corresponds to the pre-allocated array if it was passed.

numbers_to_states(numbers, out=None)

Returns the quantum numbers corresponding to the n-th basis state for input n. n is an array of integer indices such that numbers[k]=Index(states[k]). Throws an exception iff the space is not indexable.

Parameters
Return type

ndarray

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=<netket.hilbert.abstract_hilbert.NoneType object>, size=<netket.hilbert.abstract_hilbert.NoneType object>, dtype=<class 'numpy.float32'>, out=None, rgen=None)

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.

• out (Optional[ndarray]) – Deprecated. Will be removed in v3.1

• rgen – Deprecated. Will be removed in v3.1

Return type

ndarray

Returns

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

Example

>>> hi = netket.hilbert.Qubit(N=2)
>>> hi.random_state(jax.random.PRNGKey(0))
array([0., 1.])
>>> hi.random_state(size=2)
array([[0., 0.], [1., 0.]])

size_at_index(i)[source]

Size of the local degrees of freedom at the site i.

Parameters

i (int) – The index of the desired site

Return type

int

Returns

The number of degrees of freedom at that site

states()

Returns an iterator over all valid configurations of the Hilbert space. Throws an exception iff the space is not indexable. Iterating over all states with this method is typically inefficient, and all_states should be prefered.

Return type
states_at_index(i)[source]

A list of discrete local quantum numbers at the site i. If the local states are infinitely many, None is returned.

Return type
Parameters

i (int) –

states_to_numbers(states, out=None)

Returns the basis state number corresponding to given quantum states. The states are given in a batch, such that states[k] has shape (hilbert.size). Throws an exception iff the space is not indexable.

Parameters
Returns

Array of integers corresponding to out.

Return type

numpy.darray