Claude Code Plugins

Community-maintained marketplace

Feedback

dqmc-analyze

@edwnh/dqmc
16
0

Extract physical observables with error estimates from completed DQMC simulations. Use when computing density, double occupancy, spin correlations, structure factors, or any measured quantity from simulation data.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name dqmc-analyze
description Extract physical observables with error estimates from completed DQMC simulations. Use when computing density, double occupancy, spin correlations, structure factors, or any measured quantity from simulation data.

Analyze Results

Inputs

  • Directory containing bin_*.h5 files (completed simulations)
  • Observable names (see table below)

Outputs

  • Dictionary with parameters and (mean, stderr) tuples for each observable

Procedure

Basic analysis:

from dqmc_util import analyze_hub

data = analyze_hub.get("data/run/", "sign", "den", "zzr")

print(f"sign = {data['sign'][0]:.4f} +/- {data['sign'][1]:.4f}")
print(f"density = {data['den'][0]:.4f} +/- {data['den'][1]:.4f}")

Available observables:

Name Description Requires
sign Fermion sign -
den Density -
docc Double occupancy -
gr, gk Green's function (real/k-space) -
nnr, nnq Density correlator / structure factor -
zzr, zzq Spin-z correlator / structure factor -
xxr Spin-x correlator -
swq0 S-wave pair structure factor -
nnrw0, zzrw0 Zero-freq susceptibilities period_uneqlt > 0
dwq0t D-wave pair susceptibility period_uneqlt > 0

Collect from multiple directories:

import os

def collect_results(base_dir, observables):
    results = []
    for subdir in sorted(os.listdir(base_dir)):
        path = os.path.join(base_dir, subdir)
        if os.path.isdir(path):
            try:
                results.append(analyze_hub.get(path + "/", *observables))
            except Exception as e:
                print(f"Skipping {path}: {e}")
    return results

Compute derived quantities:

# Magnetic moment squared from spin correlator
path = "data/run/"
data = analyze_hub.get(path, "zzr")
mz2 = 4 * data["zzr"][0][0, 0]       # [0] = mean, shape (Ny, Nx)
mz2_err = 4 * data["zzr"][1][0, 0]   # [1] = stderr

Validation

  • Errorbar on sign is significantly less than mean. Otherwise, sign problem is too severe.
  • Errorbars on observable are reasonable (not >> mean)

Failure Modes

Symptom Cause Recovery
KeyError for observable Observable not computed Check period_uneqlt setting
"No files found" Wrong path or no bin_*.h5 Verify directory structure
Large error bars Insufficient statistics Run more sweeps or bins