Skip to content

Releases: PeaBrane/peapods

v0.2.0

Choose a tag to compare

@PeaBrane PeaBrane released this 15 Mar 03:12
v0.2.0
58c5344

What's new

Features

  • Added cluster snapshot capture during sweeps and a new cluster snapshot plotter for visualization from saved .npz results
  • Persisted cluster snapshots in sweep --save-data outputs

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

Choose a tag to compare

@PeaBrane PeaBrane released this 02 Mar 18:51
a0c70d8

What's new

Features

  • Split overlap cluster modes: monolithic overlap_update → separate houdayer_step, jorg_step, cmr_step with 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)]_J disorder 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 + OverlapAccum into statistics/overlap.rs

Fixes

  • Fixed duplicate --collect-cluster-stats argparse flag in CLI

v0.1.7

Choose a tag to compare

@PeaBrane PeaBrane released this 01 Mar 03:47
075e032

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 OverlapUpdateMode enum (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_mode parameter from Python API, CLI, and sweep runner

v0.1.6

Choose a tag to compare

@PeaBrane PeaBrane released this 28 Feb 03:12
03d716a

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-diagnostic CLI 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.
  • --sequential flag: Disable inner-loop parallelism so each disorder realization gets its own L1 cache.
  • TOML config files: peapods sweep --config sweep_config.toml for reproducible parameter sweeps.

Codebase

  • Restructured SweepResult with ClusterStats + Diagnostics substructs.
  • Extracted Realization into simulation/realization.rs, autocorrelation into statistics/autocorrelation.rs.
  • Added compute_link_overlaps to spins/energy.rs.
  • Moved rayon parallelism over realizations from PyO3 into spin-sim crate.
  • Profiling infrastructure: bench profile, profile feature, inline(never) attrs.

Fixes

  • Ctrl+C now actually stops long simulations.
  • Skip redundant energy recomputation during warmup.

v0.1.5

Choose a tag to compare

@PeaBrane PeaBrane released this 26 Feb 02:56
5877186

What's New

Features

  • CLI: peapods simulate command for running simulations from the terminal without writing Python scripts
  • Mean cluster size: site-weighted mean FK cluster size computed from CSD (mean_cluster_size attribute)

Fixes

  • Heat capacity: fixed missing factor of N in heat_capacity computation (was off by n_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

Choose a tag to compare

@PeaBrane PeaBrane released this 25 Feb 23:05
02b3271

What's new

General Bravais lattice geometry

  • Lattice now supports arbitrary neighbor offsets via Lattice::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 with hypercubic() and triangular() offset factories
  • Python Ising class accepts neighbor_offsets parameter
  • 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_bonds helpers with closure-based bond activation

Architecture

  • spin-sim split into geometry/, 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

Choose a tag to compare

@PeaBrane PeaBrane released this 23 Feb 16:41
30e9b88

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

Choose a tag to compare

@PeaBrane PeaBrane released this 23 Feb 07:48
24c6434

What's new

  • Split into spin-sim core crate + PyO3 wrapper: Pure Rust spin-sim library (zero Python deps) is now publishable to crates.io independently. The root crate is a thin PyO3 wrapper.
  • Progress callback API: run_sweep_loop takes a generic on_sweep callback instead of indicatif::ProgressBar, keeping the core crate UI-agnostic.
  • Workspace layout: Cargo workspace with spin-sim as a member; release workflow publishes both spin-sim to crates.io and peapods wheels to PyPI.

Other changes

  • Parallel tempering over disorder realizations with rayon (Vec<Realization> + n_disorder API)
  • Houdayer isoenergetic cluster move (ICM) + overlap observables
  • CI fix for maturin venv targeting

v0.1.1

Choose a tag to compare

@PeaBrane PeaBrane released this 22 Feb 08:49
0b31a45

What's New

  • Replica support — run multiple independent copies of the PT ladder (n_replicas parameter, 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