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.
| 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 |
- Tutorials (Python and Julia notebooks): sparse-ir-tutorial-v2
- Theory and notation across languages: sparse-ir-doc
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 land there first. Released versions (sparse-ir-rs 0.10, and
the Python and Julia libraries) build the DLR from an IR basis; a DLR built
without an IR basis and ESPRIT/MiniPole pole extraction are on the main
branch of sparse-ir-rs only for now.
- SpM — sparse modeling analytic continuation (C++)
- pySpMAC — sparse modeling analytic continuation (Python)
- admmsolver — a general ADMM solver (Python)
- Nevanlinna.jl — Nevanlinna analytic continuation (Julia)
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, sparse-ir-tutorial-v1 | sparse-ir-tutorial-v2 |
Open them in SpM-lab/.github. Issues about a single library belong in that library's repository.