{"id":18607446,"url":"https://github.com/dean0x7d/pybinding","last_synced_at":"2025-04-05T13:04:06.997Z","repository":{"id":27639075,"uuid":"31123736","full_name":"dean0x7d/pybinding","owner":"dean0x7d","description":"Scientific Python package for tight-binding calculations in solid state physics","archived":false,"fork":false,"pushed_at":"2023-10-15T19:47:37.000Z","size":1983,"stargazers_count":192,"open_issues_count":12,"forks_count":70,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-29T12:05:14.907Z","etag":null,"topics":["band-structure","condensed-matter","quantum-mechanics","scientific-computing","solid-state-physics","tight-binding"],"latest_commit_sha":null,"homepage":"https://pybinding.site","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dean0x7d.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-02-21T11:38:54.000Z","updated_at":"2025-03-13T16:01:00.000Z","dependencies_parsed_at":"2022-07-13T15:31:06.527Z","dependency_job_id":"91fb3f02-dfa8-4cf3-a583-a42bf1adb727","html_url":"https://github.com/dean0x7d/pybinding","commit_stats":{"total_commits":767,"total_committers":2,"mean_commits":383.5,"dds":"0.014341590612777066","last_synced_commit":"ec1128aaa84a1b43a74fb970479ce4544bd63179"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x7d%2Fpybinding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x7d%2Fpybinding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x7d%2Fpybinding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dean0x7d%2Fpybinding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dean0x7d","download_url":"https://codeload.github.com/dean0x7d/pybinding/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339149,"owners_count":20923014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["band-structure","condensed-matter","quantum-mechanics","scientific-computing","solid-state-physics","tight-binding"],"created_at":"2024-11-07T02:29:30.482Z","updated_at":"2025-04-05T13:04:06.976Z","avatar_url":"https://github.com/dean0x7d.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"/docs/pb.png?raw=true\" alt=\"pybinding\" width=220px/\u003e\n\n[![DOI](https://zenodo.org/badge/20541/dean0x7d/pybinding.svg)](https://zenodo.org/badge/latestdoi/20541/dean0x7d/pybinding)\n[![License](https://img.shields.io/badge/license-BSD-blue.svg?maxAge=2592000)](license.md)\n[![Gitter](https://img.shields.io/gitter/room/dean0x7d/pybinding.svg?maxAge=2592000)](https://gitter.im/dean0x7d/pybinding)\n[![Documentation Status](https://readthedocs.org/projects/pybinding/badge/?version=stable)](http://docs.pybinding.site/)\n[![Travis Build Status](https://travis-ci.org/dean0x7d/pybinding.svg?branch=master)](https://travis-ci.org/dean0x7d/pybinding)\n[![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/vd84e6gxixsu9l81/branch/master?svg=true)](https://ci.appveyor.com/project/dean0x7d/pybinding)\n\nPybinding is a Python package for numerical tight-binding calculations in solid state physics.\nThe main features include:\n\n* **Declarative model construction** - The user just needs to describe *what* the model should be,\n  but not *how* to build it. Pybinding will take care of the numerical details of building the\n  Hamiltonian matrix so users can concentrate on the physics, i.e. the quantum properties of the\n  model.\n\n* **Fast compute** - Pybinding's implementation of the kernel polynomial method allows for very\n  fast calculation of various physical properties of tight-binding systems. Exact diagonalization\n  is also available through the use of scipy's eigenvalue solvers. The framework is very flexible\n  and allows the addition of user-defined computation routines.\n\n* **Result analysis and visualization** - The package contains utility functions for post-processing\n  the raw result data. The included plotting functions are tailored for tight-binding problems to\n  help visualize the model structure and to make sense of the results.\n\nThe code interface is written in Python with the aim to be as user-friendly and flexible as\npossible. Under the hood, C++11 is used to accelerate demanding tasks to deliver high performance\nwith low memory usage.\n\nSee the [documentation] for more details.\n\n## Install\n\nPybinding can be installed on Windows, Linux or Mac, with the following prerequisites:\n\n* [Python] 3.6 or newer (Python 2.x is not supported)\n* The [SciPy] stack of scientific packages, with required versions:\n  * numpy \u003e= v1.12\n  * scipy \u003e= v0.19\n  * matplotlib \u003e= v2.0\n* If you're using Linux, you'll also need GCC \u003e= v5.0 (or clang \u003e= v3.5) and CMake \u003e= v3.1.\n\nDetailed [install instructions] are part of the documentation, but if you already have all the\nprerequisites, it's just a simple case of using `pip`, Python's usual package manager:\n\n    pip install pybinding\n\n\n## Features\n\nThe goal of the project is to develop a tight-binding code framework which is fast, flexible and\neasy to use. This is just a quick overview of some of the features. See the [documentation] for\nmore details and a guide to get started.\n\n* Construction of arbitrary tight-binding lattices and geometries: 1 to 3 dimensions\n  (including multilayer 2D systems), periodic or finite size (with fine control of edges)\n* Easy polygon shape definition for 2D systems and freeform shapes for n-dimensional systems\n* Geometric deformations and defects: defined via displacement and state functions\n* Fields and arbitrary effects: defined via hopping and onsite energy functions\n* Kernel polynomial method: a fast way to compute Green's function, spectral densities of\n  arbitrary operators, electrical conductivity, or various other user-defined KPM methods\n* Exact diagonalization: standard dense and sparse eigenvalues solvers (always available)\n  and the [FEAST] solver (only available when compiled with Intel's MKL)\n* Transport: scattering systems with semi-infinite leads can be constructed in pybinding and then\n  solved using the [Kwant compatibility] layer\n* Model and result objects have builtin plotting functions for easy visualization\n\n\n## Benchmarks\n\nOne of the main features of pybinding is an easy-to-use and fast model builder. This can be a\ndemanding task for large or complicated systems. Great care was taken to make this process fast.\n\nThe following figures compare the performance of pybinding with the [Kwant] package. They present\nthe time and memory required to build a Hamiltonian matrix which describes a tight-binding system.\nPybinding features good performance and a low memory footprint by using contiguous data structures\nand vectorized operations.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"/docs/benchmarks/system_build.png?raw=true\" alt=\"Tight-binding model build benchmark\"/\u003e\n\u003c/p\u003e\n\nSee the [benchmarks] section of the documentation for details on the testbed hardware and software,\nas well as the source code which can be used to reproduce the results.\n\n## Citing\n\nPybinding is free to use under the simple conditions of the [BSD open source license](license.md).\nIf you wish to use results produced with this package in a scientific publication, please just\nmention the package name in the text and cite the Zenodo DOI of this project:\n\n[![DOI](https://zenodo.org/badge/20541/dean0x7d/pybinding.svg)](https://zenodo.org/badge/latestdoi/20541/dean0x7d/pybinding)\n\nYou'll find a *\"Cite as\"* section in the bottom right of the Zenodo page. You can select a citation\nstyle from the dropdown menu or export the data in BibTeX and similar formats.\n\n\n## Questions?\n\nIf you have any questions, feel free to join the [chat room on Gitter].\nYou can also open an issue at the [tracker].\n\n\n[documentation]: http://docs.pybinding.site/\n[install instructions]: http://docs.pybinding.site/page/install/index.html\n[Python]: https://www.python.org/\n[SciPy]: http://www.scipy.org/\n[FEAST]: http://www.ecs.umass.edu/~polizzi/feast/index.htm\n[Kwant compatibility]: http://docs.pybinding.site/page/advanced/kwant.html\n[Kwant]: http://kwant-project.org/\n[benchmarks]: http://docs.pybinding.site/page/benchmarks/index.html\n[chat room on Gitter]: https://gitter.im/dean0x7d/pybinding\n[tracker]: https://github.com/dean0x7d/pybinding/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdean0x7d%2Fpybinding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdean0x7d%2Fpybinding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdean0x7d%2Fpybinding/lists"}