Open-source tools for imaginary-time Green's functions in quantum many-body physics: compact representations (intermediate representation, discrete Lehmann representation, minimal pole representations), sparse sampling, and analytic continuation.
Website: spm-lab.github.io, the entry point to everything below.
Start at the sparse-ir documentation: an overview, the history and comparison of IR, DLR and MiniPole, the shared notation, and a guide to the libraries.
| You use | Library | Docs |
|---|---|---|
| Python | sparse-ir (pip install sparse-ir) |
sparse-ir.readthedocs.io |
| Julia | SparseIR.jl (] add SparseIR) |
docs |
| Rust, C, Fortran | sparse-ir-rs (sparse-ir, sparse-ir-capi on crates.io) |
Rust guide |
- Tutorial (Python and Julia notebooks): sparse-ir-tutorial
sparse-ir-rs is the shared backend: its C API is what sparse-ir (via
pylibsparseir) and SparseIR.jl (via libsparseir_jll) call, and it ships
the Fortran bindings. New features, such as MiniPole/ESPRIT and the DLR built
without an IR basis, land there first.
- MiniPole (recommended) — minimal pole representation, in sparse-ir-rs
- SpM — sparse modeling analytic continuation (C++)
- pySpMAC — sparse modeling analytic continuation (Python)
- admmsolver — a general ADMM solver (Python)
- Nevanlinna.jl — Nevanlinna analytic continuation (Julia); not recommended, as it is very sensitive to noise in the input data. Use MiniPole instead.
These are superseded and kept for reference:
| Repository | Use instead |
|---|---|
| irbasis, irlib | sparse-ir, SparseIR.jl |
| SparseIR_deprecated.jl | SparseIR.jl |
| libsparseir, pysparseir, LibSparseIR.jl | sparse-ir-rs |
| sparse-ir-fortran | fortran/ in sparse-ir-rs |
| sparse-ir-tutorial-v1 (archived) | sparse-ir-tutorial |
Open them in SpM-lab/.github. Issues about a single library belong in that library's repository.