coniii.experimental package
Warning
These modules are work in progress and are not imported by
import coniii. Their classes currently raise
NotImplementedError on construction.
Experimental / work-in-progress samplers.
This module collects three samplers whose implementations have not
been validated end-to-end. Constructing any of them currently raises
NotImplementedError:
SWIsing— Swendsen-Wang cluster sampler for the Ising model (+/-1 basis).HamiltonianMC— Hamiltonian Monte Carlo sampler whose default leapfrog helper is hardcoded for Heisenberg energies.Heisenberg3DSampler— Heisenberg-3D MCMC sampler with spherical-vector moves.
Module-level helpers (calc_e, grad_e, grad_e_theta,
cross, cross_, jit_sample, jit_sample_nearby_vector,
pairwise_prod, sample_bonds, iter_cluster,
spec_cluster, check_e_logp) are kept here because they are
only consumed by the experimental classes above.
- coniii.experimental.samplers.calc_e(theta, x)[source]
Heisenberg model energy.
- Parameters:
theta (ndarray) – List of couplings Jij.
x (ndarray) – List of angles (theta_0, phi_0, theta_1, phi_1, …).
- class coniii.experimental.samplers.SWIsing(n, theta, calc_e, nCpus=None, rng=None)[source]
Bases:
Sampler- generate_sample_parallel(n_samples, n_iters, initial_state=None, n_cpus=None)[source]
- Parameters:
n_samples
n_iters
initial_state (ndarray,None)
- coniii.experimental.samplers.sample_bonds(p, r, state, J)[source]
- Parameters:
p (ndarray) – Probability of bond formation.
r (ndarray) – Random numbers.
state
J
- coniii.experimental.samplers.spec_cluster(L, exact=True)[source]
- Parameters:
L (ndarray) – Graph Laplacian
- class coniii.experimental.samplers.HamiltonianMC(n, theta, calc_e, random_sample, grad_e=None, dt=0.01, leapfrogN=20, nCpus=0)[source]
Bases:
Sampler
- coniii.experimental.samplers.jit_sample(theta, x0, nBurn, dt, leapfrogN, randNormal, randUnif)[source]
Get a single sample by MC sampling from this Hamiltonian.
- Parameters:
theta (ndarray) – Parameters
x0 (ndarray) – Sample
nBurn (int)
dt (float)
leapfrogN (int)
randNormal (ndarray) – nBurn x ndim
randUnif (ndarray) – nBurn
- class coniii.experimental.samplers.Heisenberg3DSampler(J, calc_e, random_sample)[source]
Bases:
SamplerSimple MC Sampling from Heisenberg model with a lot of helpful functions.
- sample_metropolis(oldState, E0)[source]
- Parameters:
s (ndarray) – State to perturb randomly.
energy (float) – Energy of configuration.
- sample_nearby_vector(v, nSamples=1, otheta=None, ophi=None, sigma=0.1)[source]
Sample random vector that is nearby. It is important how you choose the width sigma. NOTE: code might be simplified by using arctan2 instead of arctan
- Parameters:
v (ndarray) – xyz vector about which to sample random vectors
nSamples (int,1) – number of random samples
otheta (float,None) – polar angle for v
ophi (float,None) – azimuthal angle for v
sigma (float,.1) – width of Gaussian about v
- sample_nearby_sample(X, **kwargs)[source]
Randomly move given state around for new metropolis sample.
- grad_E(X)[source]
Gradient wrt theta and phi.
- Parameters:
X (ndarray) – with dims (nSpins,2) with angles theta and phi
- coniii.experimental.samplers.cross_(vec1, vec2, result)[source]
Cross product of two 3D vectors (in-place).
- coniii.experimental.samplers.jit_sample_nearby_vector(rseed, v, nSamples, otheta, ophi, sigma)[source]
- coniii.experimental.samplers.check_e_logp(sample, calc_e)[source]
Boltzmann-type model with discrete state space should have E proportional to -logP. Calculate these for comparison.
Entropy-related utilities.
UNDER DEVELOPMENT — this module is a placeholder. cross_entropy()
is a stub that returns None.