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.
- 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.
- 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.