Catalog PyPI
Back to packageRELEASE DETAILS

0.2.0

PyPI

adapol

Adaptive Pole Fitting for Quantum Many-Body Physics

bathdmftfittinghybridizationmatsubara
Published21 Sept 2026
Direct dependencies2
Transitive dependenciesNot calculated

README

Version 0.2.0 documentation

adapol: Adaptive Pole Fitting for Quantum Many-Body Physics

CI

adapol ("add-a-pole") is a Python package for constructing compact pole approximations of Matsubara functions,

$$ G(\mathrm{i}\nu_n) \approx \sum_{k=1}^{M} \frac{R_k}{\mathrm{i}\nu_n - p_k}, $$

with real poles $p_k$ and scalar or matrix-valued residues $R_k$, using the AAA rational approximation algorithm and nonlinear optimization. Given Matsubara data, or an existing pole expansion (for example, a discretized spectral density or a discrete Lehmann representation), adapol finds an accurate approximation with a specified maximum number of poles, or as few poles as possible. A typical application is hybridization fitting: constructing a compact bath representation of a given hybridization function.

Installation

pip install adapol

The only dependencies are numpy and scipy.

Usage

adapol provides three main functions:

  • approx_freq_aaa(F, Z, ...) fits frequency data F, sampled at (typically Matsubara) points Z, with a sum of simple poles, using the AAA algorithm. The number of poles is controlled by a pole budget max_n_poles and/or a AAA error tolerance aaa_tol.
  • approx_sop_fast(poles, residues, beta, ...) approximates a given sum of poles by a (hopefully) smaller one in a single AAA pass. The number of poles is again controlled by max_n_poles and/or aaa_tol, and an optional nonlinear_optimization step refines the pole locations.
  • approx_sop_tol(poles, residues, tol, beta, ...) finds the smallest sum of poles whose actual error (in $L^2(\tau)$ and $l^2(i \omega_n)$) is below the tolerance tol.

Examples

Three example notebooks demonstrate the usage of these functions in detail. We recommend reading them in the following order.

  • semicircle.ipynb — fitting data with a continuous spectrum (semicircular density): the stopping criteria, the nonlinear optimization option, and the error metric.
  • discrete.ipynb — fitting multi-orbital data with a discrete spectrum, including an experiment on how the required number of poles scales with the number of orbitals.
  • hubbarddimer.ipynb — analytic continuation benchmark for the Hubbard dimer.

Documentation

The reference documentation for the three functions also describes in detail how to use them, as well as information on the algorithms they implement. The same information is contained in the docstrings, e.g. help(adapol.approx_freq_aaa).

Citation

If you use this package in your research, please include a reference to this GitHub repository, and cite the following references:

  1. Huang, Zhen, Emanuel Gull, and Lin Lin. "Robust analytic continuation of Green's functions via projection, pole estimation, and semidefinite relaxation," Phys. Rev. B 107, 075151 (2023).
  2. Huang, Zhen, Denis Golež, Hugo U. R. Strand, and Jason Kaye. "Automated evaluation of imaginary time strong coupling diagrams by sum-of-exponentials hybridization fitting," SciPost Phys. 19 (5), 121 (2025).

License

adapol is distributed under the GNU General Public License v3.0 (see LICENSE).

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 2

Native requirements
2 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.7",
  "evaluation": "NOT_EVALUATED"
}
numpyruntime
scipy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.7",
  "evaluation": "NOT_EVALUATED"
}
scipyruntime

Distribution files

2 collected
adapol-0.2.0-py3-none-any.whl

bdist_wheel · 41.42 KB · Python py3

Source file
adapol-0.2.0.tar.gz

sdist · 39.49 KB · Python source

Source file

Repository

PENDING
flatironinstitute/adapol

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:04 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:f2aa3b94222f883fd91cac5e23b03de297cbf0278d4d43fa509891d4546729ba

Other collected versions

View all collected versions →