Releases: PeaBrane/peapods
Releases · PeaBrane/peapods
Release list
v0.2.0
What's new
Features
- Added cluster snapshot capture during sweeps and a new cluster snapshot plotter for visualization from saved
.npzresults - Persisted cluster snapshots in sweep
--save-dataoutputs
Fixes
- Fixed autocorrelation wraparound behavior
- Fixed CMR bond decomposition and cluster flip logic in the cluster algorithms
- Fixed CLI simulate argument handling to avoid duplicate kwargs
Tooling
- Added a CI smoke test for README examples
- Added Ruff formatting and pre-commit cleanup to the repo
Docs
- Updated README badges and cleaned up the CSD image section
v0.1.8
What's new
Features
- Split overlap cluster modes: monolithic
overlap_update→ separatehoudayer_step,jorg_step,cmr_stepwith clean dispatch - CMR grey cluster phase: full two-phase CMR algorithm (grey randomization + blue flip)
- Alternating overlap modes:
"cmr+houdayer"syntax round-robins each overlap update call, with per-mode cluster stats - Per-sample conditional sums: proper
[A_s(q)]_Jdisorder averaging for link overlap variance - Link overlap statistics: conditional variance
A(q) = Var(q_l | q)and per-temperature link overlap moments
Improvements
- Exact dot-product overlap histogram (replaces artificial binning)
- Houdayer-N isoenergetic balanced-site criterion (replaces CMR-N)
- Per-sample overlap histograms returned from Rust for
I(q)/X(q)metrics - Extracted
OverlapStats+OverlapAccumintostatistics/overlap.rs
Fixes
- Fixed duplicate
--collect-cluster-statsargparse flag in CLI
v0.1.7
What's new
- Overlap distribution P(q): collect and plot the full overlap histogram per temperature
- CMR-N generalization (experimental): overlap cluster updates with arbitrary group size N ≥ 2 — groups of N replicas are shuffled per temperature and flipped together. N ≥ 3 likely does not satisfy detailed balance; under active revision.
- Simplified overlap update: removed
OverlapUpdateModeenum (swap/free) — the update now always flips all replicas in the group, equivalent to swap on active sites
Cleanup
- CI test for P(q) symmetry in the paramagnetic phase
- Removed
overlap_update_modeparameter from Python API, CLI, and sweep runner
v0.1.6
What's new
Features
- Equilibration diagnostic Δ(t): Link-overlap energy identity (Zhu et al. 2015) tracks running averages of energy and q_l at power-of-2 checkpoints for thermalization monitoring. Available via
--equilibration-diagnosticCLI flag, TOML config, and Python API. - 3-replica CMR (cmr3): Overlap cluster updates with triply-satisfied bonds for 3+ replicas.
- Streaming autocorrelation: Integrated autocorrelation time τ_int(m²) and τ_int(q²) computed per realization, averaged across disorder.
--sequentialflag: Disable inner-loop parallelism so each disorder realization gets its own L1 cache.- TOML config files:
peapods sweep --config sweep_config.tomlfor reproducible parameter sweeps.
Codebase
- Restructured
SweepResultwithClusterStats+Diagnosticssubstructs. - Extracted
Realizationintosimulation/realization.rs, autocorrelation intostatistics/autocorrelation.rs. - Added
compute_link_overlapstospins/energy.rs. - Moved rayon parallelism over realizations from PyO3 into
spin-simcrate. - Profiling infrastructure: bench profile,
profilefeature,inline(never)attrs.
Fixes
- Ctrl+C now actually stops long simulations.
- Skip redundant energy recomputation during warmup.
v0.1.5
What's New
Features
- CLI:
peapods simulatecommand for running simulations from the terminal without writing Python scripts - Mean cluster size: site-weighted mean FK cluster size computed from CSD (
mean_cluster_sizeattribute)
Fixes
- Heat capacity: fixed missing factor of N in
heat_capacitycomputation (was off byn_spins)
Docs
- CLI-first quickstart examples in README
- MkDocs API docs and docstrings
- README badges, license, and crates.io link
Maintenance
- Consolidated and refactored test suite
v0.1.4
What's new
General Bravais lattice geometry
Latticenow supports arbitrary neighbor offsets viaLattice::with_offsets(shape, offsets), enabling triangular, FCC, and other Bravais lattices- Precomputed neighbor table replaces on-the-fly div/mod — faster lookups even for hypercubic
- New
geometry/module withhypercubic()andtriangular()offset factories - Python
Isingclass acceptsneighbor_offsetsparameter - Triangular Binder crossing test validates T_c = 4/ln(3)
Cluster algorithms
- CMR (Chayes-Machta-Redner) blue-bond overlap cluster mode
- Jörg stochastic overlap cluster move
- Configurable
overlap_cluster_mode(Wolff / SW) for all overlap updates - On-the-fly CSD histogramming (no raw cluster size storage)
- Generic
bfs_cluster+uf_bondshelpers with closure-based bond activation
Architecture
spin-simsplit intogeometry/,spins/,mcmc/,clusters/,statistics/submodules- Parallel overlap update across all (temp, pair) slots with per-pair RNGs
- Rayon parallelism over disorder realizations
v0.1.3
Changes
Algorithm
- Reorder MC steps: ICM before PT to match Houdayer/Zhu convention
Docs
- Add README to PyPI listing and spin-sim crate on crates.io
- Add doc comments to all public items in spin-sim for docs.rs
- Add project metadata (description, license, keywords) to pyproject.toml and spin-sim/Cargo.toml
v0.1.2
What's new
- Split into
spin-simcore crate + PyO3 wrapper: Pure Rustspin-simlibrary (zero Python deps) is now publishable to crates.io independently. The root crate is a thin PyO3 wrapper. - Progress callback API:
run_sweep_looptakes a genericon_sweepcallback instead ofindicatif::ProgressBar, keeping the core crate UI-agnostic. - Workspace layout: Cargo workspace with
spin-simas a member; release workflow publishes bothspin-simto crates.io andpeapodswheels to PyPI.
Other changes
- Parallel tempering over disorder realizations with rayon (
Vec<Realization>+n_disorderAPI) - Houdayer isoenergetic cluster move (ICM) + overlap observables
- CI fix for maturin venv targeting
v0.1.1
What's New
- Replica support — run multiple independent copies of the PT ladder (
n_replicasparameter, replaces old ensemble interface) - Overlap statistics — spin overlap q, q², q⁴ between replica pairs; spin glass Binder ratio
- Houdayer isoenergetic cluster move (ICM) — replica cluster move for spin glasses, exchanges clusters on the negative-overlap subgraph between replicas at the same temperature