Skip to main content

KPM Tools

PyPI Status Python Version License

Read the documentation at https://kpm-tools.readthedocs.io/ Tests Codecov

pre-commit Black

KPM Tools is an open-source Python package that extends the Kernel Polynomial Method (KPM) functionalities of Kwant, a popular software for quantum transport simulations in tight-binding models. Our package specifically enhances the KPM expansion capabilities within the realm of closed tight-binding systems.

Features

  • Advanced KPM expansion of typical spectral functions like Density of States, Green's Functions, Kubo Conductivity, and Chern Markers.
  • Extremely efficient time evolution operator expansion
  • Additional functionalities like KPM vector factories producing tiles, and velocity and distance operators adapted to periodic boundaries.

Requirements

  • Python >=3.11, <3.13
  • Kwant >= 1.4.4
  • NumPy <2.0 (required by Kwant, see the note below)

Installation

Installing KPM Tools

You can install KPM Tools via pip from PyPI:

$ pip install kpm-tools

Important Note on Kwant Dependency

While KPM Tools requires Kwant to function, direct installation of Kwant via pip can sometimes be problematic due to its specific build requirements. To ensure a smooth setup, we recommend the following installation approach:

  1. Try installing with pip (optional):

    You can attempt to install Kwant along with KPM Tools via pip:

    $ pip install kpm-tools[kwant]
    

    If this installation fails, proceed to the next step.

  2. Install Kwant using Conda or follow Kwant's installation guide:

    We recommend using Conda to install Kwant, which typically handles its build requirements more reliably:

    $ conda install -c conda-forge kwant
    

    Alternatively, refer to the Kwant installation page for detailed instructions on installing Kwant in different environments.

After installing Kwant, you can then install KPM Tools using pip as shown above.

Note on NumPy 2: Kwant is currently incompatible with NumPy 2.x — the C sources in its published release access a NumPy internal that became opaque in 2.0, so it fails to compile. KPM Tools therefore constrains numpy<2.0 (and scipy<1.14, which would otherwise pull NumPy 2 in). This constraint will be relaxed once Kwant publishes a NumPy 2 compatible release.

Python API

Please see the python api reference for details.

Contributing

Contributions, especially in documentation and the 'concatenator' function/module, are very welcome. For more information, see our Contributor Guide.

License

Distributed under the terms of the BSD 2-Clause license, KPM Tools is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Credits

Many of the ideas implemented in KPM Tools originate from the early work on KPM expansion on the paper

Computation of topological phase diagram of disordered PbSnTe using the kernel polynomial method.

Phys. Rev. Research 2, 013229 (2020) arXiv:1905:02215

Consider citing that work if you use this package on a publication.

Acknowledgments to Kwant

KPM Tools is built upon the robust and efficient foundation provided by Kwant. We extend our gratitude to the Kwant authors and contributors for their work in developing a versatile platform for quantum transport simulations. KPM Tools aims to complement Kwant's capabilities in KPM expansions, adhering to the high standards of quality and performance set by the Kwant project.

See the original KPM implementation in Kwant: https://kwant-project.org/doc/1/tutorial/kpm https://kwant-project.org/doc/1/reference/kwant.kpm

Project Template

This project was generated from @cjolowicz's Hypermodern Python Cookiecutter template.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kpm_tools-0.1.0.tar.gz (31.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kpm_tools-0.1.0-py3-none-any.whl (32.9 kB view details)

Uploaded Python 3

File details

Details for the file kpm_tools-0.1.0.tar.gz.

File metadata

  • Download URL: kpm_tools-0.1.0.tar.gz
  • Upload date:
  • Size: 31.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kpm_tools-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ddb3017318363eabcd2666f027b61508cfe380e6179f0a45b1741e116a3502a4
MD5 875874e1f18779d1b37be02aecc606cb
BLAKE2b-256 c3712560c6dfbc6bfd64ce63803a373dcce2fbf56898137054a506bd31d7da01

See more details on using hashes here.

File details

Details for the file kpm_tools-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kpm_tools-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 32.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kpm_tools-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4b71d23e4263d0789c8e1d105c009a3545b7454df63d41dbeb54f40def2df3e6
MD5 0a0d478e8f36df9c4ebf28c11ce62fea
BLAKE2b-256 1dc8cbcde14e7078d118e6e49927d0ee16df2da004191a7cf4b22e8bb3db2c32

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page