# PyTorch-based Libcint Interface
<table>
<tr>
<td>Compatibility:</td>
<td>
<img src="https://img.shields.io/badge/Python-3.8%20|%203.9%20|%203.10%20|%203.11%20|%203.12-blue.svg" alt="Python Versions"/>
<img src="https://img.shields.io/badge/PyTorch-%3E=1.11.0-blue.svg" alt="PyTorch Versions"/>
<img src="https://img.shields.io/badge/OS-Linux-blue.svg" alt="Operating Systems">
</td>
</tr>
<tr>
<td>Availability:</td>
<td>
<a href="https://github.com/tad-mctc/tad-libcint/releases/latest">
<img src="https://img.shields.io/github/v/release/tad-mctc/tad-libcint?color=orange" alt="Release"/>
</a>
<a href="https://pypi.org/project/tad-libcint/">
<img src="https://img.shields.io/pypi/v/tad-libcint?color=orange" alt="PyPI"/>
</a>
<a href="http://www.apache.org/licenses/LICENSE-2.0">
<img src="https://img.shields.io/badge/License-Apache%202.0-orange.svg" alt="Apache-2.0"/>
</a>
</td>
</tr>
<tr>
<td>Status:</td>
<td>
<a href="https://github.com/tad-mctc/tad-libcint/actions/workflows/ubuntu.yaml">
<img src="https://github.com/tad-mctc/tad-libcint/actions/workflows/ubuntu.yaml/badge.svg" alt="Tests Ubuntu"/>
</a>
<a href="https://github.com/tad-mctc/tad-libcint/actions/workflows/release.yaml">
<img src="https://github.com/tad-mctc/tad-libcint/actions/workflows/release.yaml/badge.svg" alt="Build Status"/>
</a>
<a href="https://tad-libcint.readthedocs.io">
<img src="https://readthedocs.org/projects/tad-libcint/badge/?version=latest" alt="Documentation Status"/>
</a>
<a href="https://results.pre-commit.ci/latest/github/tad-mctc/tad-libcint/main">
<img src="https://results.pre-commit.ci/badge/github/tad-mctc/tad-libcint/main.svg" alt="pre-commit.ci Status"/>
</a>
<a href="https://codecov.io/gh/tad-mctc/tad-libcint">
<img src="https://codecov.io/gh/tad-mctc/tad-libcint/branch/main/graph/badge.svg?token=9faLOhisRx" alt="Coverage"/>
</a>
</td>
</tr>
</table>
## Content
This package contains a PyTorch-based interface to the *[libcint](https://github.com/sunqm/libcint)* high-performance integral library (check version [here](https://github.com/tad-mctc/libcint/blob/dxtb/README.rst)).
The interface facilitates automatic differentiation with custom backward functions that call *libcint*'s C backend for derivative calculation.
It is based on [PySCF's lib directory](https://github.com/pyscf/pyscf/tree/master/pyscf/lib). Modifications include
- removal of unnecessary code
- minor adaptation of build instructions (CMakeLists.txt)
The project was heavily inspired by *[diffqc/dqc](https://github.com/diffqc/dqc)* and *[diffqc/dqclibs](https://github.com/diffqc/dqclibs)*.
This interface was mainly written for the calculation of integrals within *[grimme-lab/dxtb](https://github.com/grimme-lab/dxtb)*.
## Installation
### pip
The `tad-libcint` package can be obtained from pip.
```console
pip install tad-libcint
```
### Build from source
You can also build the Python wheels from source.
1. Get the repository (including libcint submodule).
```console
git clone --recursive git@github.com:tad-mctc/tad-libcint.git
cd tad-libcint
```
The [libcint fork](https://github.com/tad-mctc/libcint/tree/dxtb) contains additional integrals required for `dxtb` and removes unneccessary ones.
Therefore, downloading from our fork is recommended.
If you already have the repository, you can update the submodule with
```console
git submodule update --remote
```
2. Create an environment (`conda`) for building the wheels. The example here uses Python 3.10, but we support 3.8-3.11.
```console
mamba create -n wheel-310 --yes python=3.10 auditwheel c-compiler cxx-compiler fortran-compiler cffi cmake git make meson ninja numpy patchelf pkgconfig pip python-build unzip wheel
mamba activate wheel-310
```
3. Build the wheel on your system.
```console
python -m build --wheel
```
4. Repair the wheels for cross-distribution packaging.
```console
auditwheel repair -w wheels --plat manylinux_2_12_x86_64 dist/*-cp310-cp310-linux_x86_64.whl
```
5. Or only install this project with `pip` in the environment.
```console
pip install .
```
## Development
For development, additionally install the following tools in your environment.
```console
mamba install black covdefaults coverage mypy pre-commit pylint tox
```
With pip, add the option `-e` for installing in development mode, and add `[dev]` for the development dependencies
```console
pip install -e .[dev]
```
The pre-commit hooks are initialized by running the following command in the root of the repository.
```console
pre-commit install
```
For testing all Python environments, simply run `tox`.
```console
tox
```
Note that this randomizes the order of tests but skips "large" tests. To modify this behavior, `tox` has to skip the optional *posargs*.
```console
tox -- test
```
Raw data
{
"_id": null,
"home_page": "https://github.com/tad-mctc/tad-libcint/",
"name": "tad-libcint",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.8",
"maintainer_email": null,
"keywords": "tight-binding, quantum-chemistry, integrals, library",
"author": "\"Marvin Friede\"",
"author_email": "friede@thch.uni-bonn.de",
"download_url": "https://files.pythonhosted.org/packages/89/78/59b78817138519295be46a1ea2b642a67dd94a528a7225bcd3b185778bf7/tad_libcint-0.1.1.tar.gz",
"platform": null,
"description": "# PyTorch-based Libcint Interface\n\n<table>\n <tr>\n <td>Compatibility:</td>\n <td>\n <img src=\"https://img.shields.io/badge/Python-3.8%20|%203.9%20|%203.10%20|%203.11%20|%203.12-blue.svg\" alt=\"Python Versions\"/>\n <img src=\"https://img.shields.io/badge/PyTorch-%3E=1.11.0-blue.svg\" alt=\"PyTorch Versions\"/>\n <img src=\"https://img.shields.io/badge/OS-Linux-blue.svg\" alt=\"Operating Systems\">\n </td>\n </tr>\n <tr>\n <td>Availability:</td>\n <td>\n <a href=\"https://github.com/tad-mctc/tad-libcint/releases/latest\">\n <img src=\"https://img.shields.io/github/v/release/tad-mctc/tad-libcint?color=orange\" alt=\"Release\"/>\n </a>\n <a href=\"https://pypi.org/project/tad-libcint/\">\n <img src=\"https://img.shields.io/pypi/v/tad-libcint?color=orange\" alt=\"PyPI\"/>\n </a>\n <a href=\"http://www.apache.org/licenses/LICENSE-2.0\">\n <img src=\"https://img.shields.io/badge/License-Apache%202.0-orange.svg\" alt=\"Apache-2.0\"/>\n </a>\n </td>\n </tr>\n <tr>\n <td>Status:</td>\n <td>\n <a href=\"https://github.com/tad-mctc/tad-libcint/actions/workflows/ubuntu.yaml\">\n <img src=\"https://github.com/tad-mctc/tad-libcint/actions/workflows/ubuntu.yaml/badge.svg\" alt=\"Tests Ubuntu\"/>\n </a>\n <a href=\"https://github.com/tad-mctc/tad-libcint/actions/workflows/release.yaml\">\n <img src=\"https://github.com/tad-mctc/tad-libcint/actions/workflows/release.yaml/badge.svg\" alt=\"Build Status\"/>\n </a>\n <a href=\"https://tad-libcint.readthedocs.io\">\n <img src=\"https://readthedocs.org/projects/tad-libcint/badge/?version=latest\" alt=\"Documentation Status\"/>\n </a>\n <a href=\"https://results.pre-commit.ci/latest/github/tad-mctc/tad-libcint/main\">\n <img src=\"https://results.pre-commit.ci/badge/github/tad-mctc/tad-libcint/main.svg\" alt=\"pre-commit.ci Status\"/>\n </a>\n <a href=\"https://codecov.io/gh/tad-mctc/tad-libcint\">\n <img src=\"https://codecov.io/gh/tad-mctc/tad-libcint/branch/main/graph/badge.svg?token=9faLOhisRx\" alt=\"Coverage\"/>\n </a>\n </td>\n </tr>\n</table>\n\n\n## Content\n\nThis package contains a PyTorch-based interface to the *[libcint](https://github.com/sunqm/libcint)* high-performance integral library (check version [here](https://github.com/tad-mctc/libcint/blob/dxtb/README.rst)).\nThe interface facilitates automatic differentiation with custom backward functions that call *libcint*'s C backend for derivative calculation.\n\nIt is based on [PySCF's lib directory](https://github.com/pyscf/pyscf/tree/master/pyscf/lib). Modifications include\n\n- removal of unnecessary code\n- minor adaptation of build instructions (CMakeLists.txt)\n\nThe project was heavily inspired by *[diffqc/dqc](https://github.com/diffqc/dqc)* and *[diffqc/dqclibs](https://github.com/diffqc/dqclibs)*.\n\nThis interface was mainly written for the calculation of integrals within *[grimme-lab/dxtb](https://github.com/grimme-lab/dxtb)*.\n\n\n## Installation\n\n### pip\n\nThe `tad-libcint` package can be obtained from pip.\n\n```console\npip install tad-libcint\n```\n\n### Build from source\n\nYou can also build the Python wheels from source.\n\n1. Get the repository (including libcint submodule).\n\n```console\ngit clone --recursive git@github.com:tad-mctc/tad-libcint.git\ncd tad-libcint\n```\n\nThe [libcint fork](https://github.com/tad-mctc/libcint/tree/dxtb) contains additional integrals required for `dxtb` and removes unneccessary ones.\nTherefore, downloading from our fork is recommended.\n\nIf you already have the repository, you can update the submodule with\n\n```console\ngit submodule update --remote\n```\n\n2. Create an environment (`conda`) for building the wheels. The example here uses Python 3.10, but we support 3.8-3.11.\n\n```console\nmamba create -n wheel-310 --yes python=3.10 auditwheel c-compiler cxx-compiler fortran-compiler cffi cmake git make meson ninja numpy patchelf pkgconfig pip python-build unzip wheel\nmamba activate wheel-310\n```\n\n3. Build the wheel on your system.\n\n```console\npython -m build --wheel\n```\n\n4. Repair the wheels for cross-distribution packaging.\n\n```console\nauditwheel repair -w wheels --plat manylinux_2_12_x86_64 dist/*-cp310-cp310-linux_x86_64.whl\n```\n\n5. Or only install this project with `pip` in the environment.\n\n```console\npip install .\n```\n\n\n## Development\n\nFor development, additionally install the following tools in your environment.\n\n```console\nmamba install black covdefaults coverage mypy pre-commit pylint tox\n```\n\nWith pip, add the option `-e` for installing in development mode, and add `[dev]` for the development dependencies\n\n```console\npip install -e .[dev]\n```\n\nThe pre-commit hooks are initialized by running the following command in the root of the repository.\n\n```console\npre-commit install\n```\n\nFor testing all Python environments, simply run `tox`.\n\n```console\ntox\n```\n\nNote that this randomizes the order of tests but skips \"large\" tests. To modify this behavior, `tox` has to skip the optional *posargs*.\n\n```console\ntox -- test\n```\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "\"Torch Autodiff Libcint Interface\"",
"version": "0.1.1",
"project_urls": {
"Documentation": "https://github.com/tad-mctc/tad-libcint",
"Homepage": "https://github.com/tad-mctc/tad-libcint/",
"Source Code": "https://github.com/tad-mctc/tad-libcint",
"Tracker": "https://github.com/tad-mctc/tad-libcint/issues"
},
"split_keywords": [
"tight-binding",
" quantum-chemistry",
" integrals",
" library"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "62f6654d67759321cfe4b8a7011140991b46bcfc8d02ee50cee4bd01a5648a4a",
"md5": "de38240b39530381ba589aa177ad747c",
"sha256": "c148a750426aad19ec95f2be9e89360ac9e6d93fcb1ab3b970db15543e76019d"
},
"downloads": -1,
"filename": "tad_libcint-0.1.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "de38240b39530381ba589aa177ad747c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.8",
"size": 20658432,
"upload_time": "2025-01-25T18:46:10",
"upload_time_iso_8601": "2025-01-25T18:46:10.317447Z",
"url": "https://files.pythonhosted.org/packages/62/f6/654d67759321cfe4b8a7011140991b46bcfc8d02ee50cee4bd01a5648a4a/tad_libcint-0.1.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4ce8b4d6eb1142952e8bd2047ec9b70f1de81c73d397c46b628bbcf14d83aca5",
"md5": "118216b6a4bb3aa8cdf902115edd8c35",
"sha256": "7f7e8a8be2a7bcfc58e14615d5dea4225180eff859201b4a2239c192b70bddfc"
},
"downloads": -1,
"filename": "tad_libcint-0.1.1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "118216b6a4bb3aa8cdf902115edd8c35",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.8",
"size": 20658429,
"upload_time": "2025-01-25T18:46:24",
"upload_time_iso_8601": "2025-01-25T18:46:24.022160Z",
"url": "https://files.pythonhosted.org/packages/4c/e8/b4d6eb1142952e8bd2047ec9b70f1de81c73d397c46b628bbcf14d83aca5/tad_libcint-0.1.1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dc13365ffe553028f6a55006324999602d0020a303866e456229bc95a58b6c67",
"md5": "75d0c545850b6e3450f6f071e5241a9b",
"sha256": "425ba96956d055d5038627e3263c3693c0413ddec95e44df06871334da0f83e7"
},
"downloads": -1,
"filename": "tad_libcint-0.1.1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "75d0c545850b6e3450f6f071e5241a9b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.8",
"size": 20658431,
"upload_time": "2025-01-25T18:45:58",
"upload_time_iso_8601": "2025-01-25T18:45:58.134420Z",
"url": "https://files.pythonhosted.org/packages/dc/13/365ffe553028f6a55006324999602d0020a303866e456229bc95a58b6c67/tad_libcint-0.1.1-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "98e3e43243f62587698dcadda3188d7d07105da7426d4cae2c12c5bf047bb5ab",
"md5": "8cb0ac107198bbcbbcba1bf919c27174",
"sha256": "843b591e463efda572843332921a428d803fbcf19e4ee81ddd222e239f5dca93"
},
"downloads": -1,
"filename": "tad_libcint-0.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "8cb0ac107198bbcbbcba1bf919c27174",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<3.13,>=3.8",
"size": 20658435,
"upload_time": "2025-01-25T18:46:36",
"upload_time_iso_8601": "2025-01-25T18:46:36.255823Z",
"url": "https://files.pythonhosted.org/packages/98/e3/e43243f62587698dcadda3188d7d07105da7426d4cae2c12c5bf047bb5ab/tad_libcint-0.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e5ccdd1570ffdcaec5009493adb4658ebbe48053bcad3c232e4a40760e61ac66",
"md5": "9b2b8d4407cd07a065bb570d311123a7",
"sha256": "0555364a77cf979b6b03d4d49d29a0df3547e0c6fabd1ca1a9144a01b783403d"
},
"downloads": -1,
"filename": "tad_libcint-0.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "9b2b8d4407cd07a065bb570d311123a7",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.8",
"size": 20658432,
"upload_time": "2025-01-25T18:45:43",
"upload_time_iso_8601": "2025-01-25T18:45:43.089897Z",
"url": "https://files.pythonhosted.org/packages/e5/cc/dd1570ffdcaec5009493adb4658ebbe48053bcad3c232e4a40760e61ac66/tad_libcint-0.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "897859b78817138519295be46a1ea2b642a67dd94a528a7225bcd3b185778bf7",
"md5": "f4928783b6d6ac1979a074ecfcd0cc45",
"sha256": "1a385d98f2ac1dbca5a142dd99468cc24873dd41d8363cded3dd4a3448c39d61"
},
"downloads": -1,
"filename": "tad_libcint-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "f4928783b6d6ac1979a074ecfcd0cc45",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.8",
"size": 51575943,
"upload_time": "2025-01-25T18:45:11",
"upload_time_iso_8601": "2025-01-25T18:45:11.414963Z",
"url": "https://files.pythonhosted.org/packages/89/78/59b78817138519295be46a1ea2b642a67dd94a528a7225bcd3b185778bf7/tad_libcint-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-25 18:45:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tad-mctc",
"github_project": "tad-libcint",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "tad-libcint"
}