Fast compute engine for QIG geometry — analytical QFI, GPU contractions, observable governance
Project description
qig-compute
Fast compute engine for quantum geometry — analytical QFI, GPU tensor contractions, observable governance.
Replaces expensive iterative methods (26 DMRG solves → 0) with direct analytical computation. Built-in blindspot detection warns when your measurements might be unreliable.
Performance
| Method | L=6 (36 sites) | Time | Speedup |
|---|---|---|---|
| Finite-difference QFI (old) | 26 DMRG solves | >14,400s (timeout) | baseline |
| Analytical QFI (qig-compute) | 0 DMRG solves | 287s | 50× |
Validated: 0.00% difference vs exact diagonalisation at L=3. Identical overlaps to TeNPy at all sizes tested.
What it does
-
Analytical QFI — Compute Quantum Fisher Information from a single MPS ground state. No finite differences, no iterative DMRG loops. One-shot computation via MPS transfer matrix overlaps.
-
GPU contractions — CuPy-accelerated tensor network contractions. Custom transfer matrix code for when TeNPy's CPU overlaps are the bottleneck.
-
Screening pipeline — Push spatial pruning INSIDE the QFI computation. Only compute at sites that matter (from warp bubble). Unmeasured sites get Yukawa-predicted values from the decay profile.
-
Observable governance — 10 built-in blindspot detectors that warn when your measurements might be wrong. Amplitude collapse, regime blindness, resolution floor, chi limits, and more. Auto-fills cheap missing measurements when budget allows.
-
Prediction tracking — Every shortcut produces a prediction. Every prediction is logged. When you later measure the skipped site, compare predicted vs actual.
Install
pip install qig-compute # numpy only
pip install qig-compute[tenpy] # + TeNPy for MPS-QFI
pip install qig-compute[gpu] # + CuPy for GPU acceleration
pip install qig-compute[full] # everything
Usage
from qig_compute import qfi_analytical, screening_aware_qfi, GovernanceReport
# Analytical QFI from a single MPS (zero DMRG loops)
F = qfi_analytical(psi_mps, L=6, sites=pruned_sites)
# Screening-aware: pruning + Yukawa fill + prediction tracking
F_full, sites, metadata = screening_aware_qfi(
psi_mps, L=6, center=(3, 3), screening_length=0.618
)
# metadata["prediction_report"] shows measured vs predicted at every site
# Observable governance
from qig_compute import check_amplitude, check_regime_coverage
warning = check_amplitude(my_observable_values) # detects proxy failure
warning = check_regime_coverage([1.0], J=1.0) # flags single-regime blindspot
Observable governance warnings
| Warning | What it detects | Auto-fillable? |
|---|---|---|
| AMPLITUDE_COLLAPSE | Observable amplitude varies >10× (wrong channel) | No — switch observable |
| REGIME_SINGLE | Only tested in one regime | No — test more regimes |
| RESOLUTION_FLOOR | Frequency at FFT limit | No — increase observation time |
| CHI_LIMIT | DMRG bond dimension maxed | Partially — compare χ vs χ/2 |
| GAP_UNKNOWN | Energy gap never measured | Yes — one extra eigenvalue |
| NONLINEARITY_UNTESTED | Constitutive law at one δh only | Yes — run second δh |
| OBSERVABLE_PROXY | Magnetisation on inhomogeneous lattice | No — use energy channel |
Use cases
Any computation where perturbations have finite range. The screening pipeline skips sites beyond the decay length. The governance module catches when your measurement observable is unreliable.
Molecular simulation: QFI measures how distinguishable quantum states are. The screening length IS the interatomic potential range. Analytical QFI avoids recomputing ground states for each perturbation.
Materials science: Grain boundaries concentrate the physics at the interface. The screening pipeline measures the boundary densely and predicts the bulk from the decay profile.
Drug discovery: Binding site QFI measures how sensitive the energy landscape is to ligand perturbations. Analytical computation makes it feasible for large binding pockets.
Benchmarking
Use qig-bench to validate qig-compute against frozen physics results:
from qig_bench import run_suite
results = run_suite(backend="qig-compute")
# 5/5 benchmarks must pass before promoting any compute upgrade
Contact
Built by Braden Lang. For partnerships and research collaboration: braden.com.au
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qig_compute-0.2.1.tar.gz.
File metadata
- Download URL: qig_compute-0.2.1.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5bff64cd39a824d58e2a562eaa0c629b6cfb3f50f61c0504fa4d5f45e710126
|
|
| MD5 |
f4e6baf806317173b1a3e0eb1be26113
|
|
| BLAKE2b-256 |
2e38ee43e07f40e7bca5629c052785a7e7e69f40561822b06239256dc3f2e4f9
|
File details
Details for the file qig_compute-0.2.1-py3-none-any.whl.
File metadata
- Download URL: qig_compute-0.2.1-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
702896b78d64eba2d4fd06be38df8e8c52bbc13b7c3f268a847c6de05e507bc6
|
|
| MD5 |
f829bc0c27238de81378a9ec8682a416
|
|
| BLAKE2b-256 |
3ae0efd1741ff78b8aea523c0f774f5f83b4dbda8504e8418c49cb7b8e68fa9f
|