CustomSampler
Custom Sampler, where transition operators are specified by the user. For the moment, this functionality is limited to transition operators which are sums of local operators:
where the move operators act on an (arbitrary) subset of sites.
The operators are specified giving their matrix elements, and a list of sites on which they act. Each operator must be real, symmetric, positive definite and stochastic (i.e. sum of each column and line is 1).
The transition probability associated to a custom sampler can be decomposed into two steps:

One of the move operators is chosen with a weight given by the user (or uniform probability by default). If the weights are provided, they do not need to sum to unity.

Starting from state , the probability to transition to state is given by .
Class Constructor
Constructs a new CustomSampler
given a machine and a list of local
stochastic move (transition) operators.
Argument  Type  Description 

machine  netket._C_netket.machine.Machine  A machine used for the sampling. The probability distribution being sampled from is , where the function , is arbitrary, by default . 
move_operators  netket._C_netket.operator.LocalOperator  The stochastic LocalOperator used for transitions. 
move_weights  List[float]=[]  For each , the probability to pick one of the move operators (must sum to one). 
Examples
Sampling from a RBM machine in a 1D lattice of spin 1/2
>>> import netket as nk
>>>
>>> g=nk.graph.Hypercube(length=10,n_dim=2,pbc=True)
>>> hi=nk.hilbert.Spin(s=0.5,graph=g)
>>>
>>> # RBM Spin Machine
>>> ma = nk.machine.RbmSpin(alpha=1, hilbert=hi)
>>>
>>> # Construct a Custom Sampler
>>> # Using random local spin flips (Pauli X operator)
>>> X = [[0, 1],[1, 0]]
>>> move_op = nk.operator.LocalOperator(hilbert=hi,operators=[X] * g.n_sites,acting_on=[[i] for i in range(g.n_sites)])
>>> sa = nk.sampler.CustomSampler(machine=ma, move_operators=move_op)
Class Methods
reset
Resets the state of the sampler, including the acceptance rate statistics and optionally initializing at random the visible units being sampled.
Argument  Type  Description 

init_random  bool=False  If True the quantum numbers (visible units) 
seed
Seeds the random number generator used by the Sampler
.
Argument  Type  Description 

base_seed  int  The base seed for the random number generator 
sweep
Performs a sampling sweep. Typically a single sweep consists of an extensive number of local moves.
Properties
Property  Type  Description 

acceptance  numpy.array  The measured acceptance rate for the sampling. In the case of rejectionfree sampling this is always equal to 1. 
hilbert  netket.hilbert  The Hilbert space used for the sampling. 
machine  netket.machine  The machine used for the sampling. 
machine_func  function(complex)  The function to be used for sampling. by default is sampled, however in general 
visible  numpy.array  The quantum numbers being sampled, and distributed according to 
 Previous
 Next