quantax.sampler.MixSampler#
- class quantax.sampler.MixSampler(samplers: Sequence[Metropolis], thermal_steps: int | None = None, sweep_steps: int | None = None, initial_spins: Array | None = None)#
Bases:
MetropolisA mixture of several metropolis samplers. New samples are proposed randomly by every sampler.
- __init__(samplers: Sequence[Metropolis], thermal_steps: int | None = None, sweep_steps: int | None = None, initial_spins: Array | None = None)#
- Parameters:
samplers – The component metropolis samplers to be mixed. In every sweep step, one of them is randomly chosen to propose new configurations, with probability proportional to its
nsamples. All component samplers must share the samestateandreweightfactor, otherwise aValueErroris raised. The number of samples generated per iteration is the sum of thensamplesof all component samplers.thermal_steps – The number of thermalization steps in the beginning of each Markov chain, default to be 20 * fock state length.
sweep_steps – The number of steps for generating new samples, default to be 2 * fock state length.
initial_spins – The initial spins for every Markov chain before the thermalization steps. By default, the first run inherits the already-thermalized spins of the component samplers; otherwise the spins are random.
- property particle_type: tuple[PARTICLE_TYPE, ...]#
The particle types of the systems that this sampler can be applied to.
- property update_mode: dict[str, Any]#
The update mode of local updates generated in the sampler.
- property use_ref: bool#
Whether to use reference implementation for local updates.
- reset(nsweeps: int | None = None, initial_spins: Array | None = None) None#
Reset all Markov chains and thermalize them.
- Parameters:
nsweeps – Number of sweeps for thermalizing the new samples, default to be
self._thermal_stepsinitial_spins – The initial spins for every Markov chain before the thermalization steps, default to be random.
- property Nmodes: int#
Number of modes (fock state length)
- property Nsites: int#
Number of sites
- property nsamples: int#
Number of samples generated per iteration
- propose(key: Key, old_spins: Array) Array | tuple[Array, Array]#
Propose new configurations.
- Returns:
Either a tuple of (new_spins, propose_ratio) or new_spins only, where new_spins is the proposed configurations, and propose_ratio is the ratio of proposal rate \(P(s|s') / P(s'|s)\). propose_ratio is set to 1 if not returned.
- property reweight: float#
The reweight factor n defining the sample probability \(|\psi|^n\)