Skip to main content

HORTON-PART

Python 3.10 Python 3.11 Python 3.12 Python 3.13

HORTON-PART is a computational chemistry package that supports different partition schemes. It is based on the sub-module part of HORTON2, which is written and maintained by Toon Verstraelen (2). In HORTON3, all sub-modules have been rewritten using the pure Python programming language to support Python 3+. See more details on this website. It should be noted that HORTON2 also supports Python 3+ now. The part module has also been rewritten and is now called the denspart module. However, the algorithm implemented in denspart only uses one-step optimization, which can be computationally expensive for large systems. Additionally, denspart only supports the MBIS partitioning scheme. Another part module has been rewritten in pure Python by Farnaz Heidar-Zadeh (2). However, the integration grid implemented in this module still uses the old 'grid' from Horton2. HORTON-PART with version 0.0.X is based on this module. Starting from version 1.X.X, HORTON-PART only supports the new integration qc-grid. The molecular density can be prepared using IOData and GBasis packages.

This version contains contributions from: YingXing Cheng (1), Toon Verstraelen (2), Pawel Tecmer (3), Farnaz Heidar-Zadeh (3), Cristina E. González-Espinoza (3), Matthew Chan (3), Taewon D. Kim (3), Katharina Boguslawski (3), Stijn Fias (4), Steven Vandenbrande (2), Diego Berrocal (3), and Paul W. Ayers (3).

  • (1) Numerical Mathematics for High Performance Computing (NMH), University of Stuttgart, Stuttgart, Germany.
  • (2) Center for Molecular Modeling (CMM), Ghent University, Ghent, Belgium.
  • (3) The Ayers Group, McMaster University, Hamilton, Ontario, Canada.
  • (4) General Chemistry (ALGC), Free University of Brussels, Brussels, Belgium.

The Horton-Part source code is hosted on GitHub and is released under the GNU General Public License v3.0 or later. Please report any issues you encounter while using the Horton-Part library on GitHub Issues. For further information and inquiries, please contact us at yxcheng2buaa@gmail.com.

About

arXiv: 2405.08455 JCP: 10.1063/5.0245287 JCP: 10.1063/5.0076630

This package implements partitioning schemes described in three papers: a mathematical perspective, a numerical perspective and Approximations of the Iterative Stockholder Analysis scheme using exponential basis functions, including:

  • Becke method
  • Mulliken method
  • Hirshfeld partitioning scheme
  • Iterative Hirshfeld (Hirshfeld-I) partitioning scheme
  • Iterative stockholder approach (ISA)
  • Gaussian iterative stockholder approach (GISA)
  • Minimal Basis Iterative Stockholder (MBIS)
  • Alternating Linear approximation of the ISA (aLISA) method
  • Global version of Linear approximation of the ISA (gLISA) method
  • Generalized Minimal Basis Iterative Stockholder (GMBIS)
  • Non-linear approximation of the ISA (NLIS) method

Periodic real-space grids

The periodic API provides a shared qc-grid engine for Hirshfeld, Hirshfeld-I, MBIS, LISA, and AVH-A/B/M. It accumulates translated local grid images and can return both atomic charges and full AIM weights. Fixed LISA, Hirshfeld, and AVH basis functions and active Hirshfeld-I charge states are cached only on their local grids. Periodic MBIS similarly reuses shell-local grids, expanding a grid only when its optimized shell becomes more diffuse. All-electron DensPart-style NPZ files, including uniform and PAW augmentation grid blocks, can be used directly:

part-from-gpaw calculation.gpw density.npz  # run in a legacy GPAW environment
part-periodic density.npz mbis.npz --method mbis
part-periodic density.npz mbis-sc.npz --method mbis --solver sc
part-periodic density.npz hi.npz --method hirshfeld-i \
  --basis pbe-6311pgdp-sapporo-dkh3tzp-dkh2.json

GPAW remains optional and is not installed with HORTON-Part. The converter runs serially and preserves the all-electron PAW augmentation blocks required for the article calculations.

Periodic LISA, AVH, and MBIS provide both the default SciPy optimizer and a finite-system-style self-consistent route selected with --solver sc. The result archive records the solver used; performance should be benchmarked for each system.

Hirshfeld, Hirshfeld-I, and AVH use a shared aim-proatom-spline-v1 library; finite and periodic LISA both accept aim-lisa-basis-v1 in addition to the bundled basis. See the periodic guide for the input schema, Python API, output fields, and method-specific basis requirements. Executable examples are provided in the periodic quick start and five-method comparison notebooks.

License

GPLv3 License

horton-part is distributed under the GNU General Public License version 3 or later. Third-party source-code acknowledgements are listed in NOTICE.

Dependencies

The following dependencies will be necessary for horton-part to build properly,

Installation

To install the latest version of horton-part:

pip install horton-part

To install horton-part with version 0.0.x:

pip install horton-part==0.0.x

To install latest horton-part:

git clone https://github.com/LISA-partitioning-method/horton-part.git
cd horton-part
pip install .

To run test, one needs to add tests dependencies for tests:

pip install .[tests]

For developers, one could need all dependencies:

pip install -e .[dev,tests]

Citations

Please use the following citations in any publication using horton-part library:

[1] Cheng, Y. and Stamm, B. Approximations of the Iterative Stockholder Analysis scheme using exponential basis functions. arXiv: 2412.05079

[2] Cheng, Y.; Cancès, E.; Ehrlacher, V.; Misquitta, A. J.; Stamm, B. Multi-center decomposition of molecular densities: A numerical perspective. J. Chem. Phys. 2025, 162, 074101, JCP: 10.1063/5.0245287

[3] Benda, R.; Cancès, E.; Ehrlacher, V.; Stamm, B. Multi-center decomposition of molecular densities: A mathematical perspective. J. Chem. Phys. 2022, 156, 164107. JCP: 10.1063/5.0076630

[4] Chan, M.; Verstraelen, T.; Tehrani, A.; Richer, M.; Yang, X. D.; Kim, T. D.; Vöhringer-Martinez, E.; Heidar-Zadeh, F.; Ayers, P. W. The tale of HORTON: Lessons learned in a decade of scientific software development. J. Chem. Phys. 2024, 160, 162501. JCP: 10.1063/5.0196638

[5] Tehrani, A.; Yang, X. D.; Martínez-González, M.; Pujal, L.; Hernández-Esparza, R.; Chan, M.; Vöhringer-Martinez, E.; Verstraelen, T.; Ayers, P. W.; Heidar-Zadeh, F. Grid: A Python library for molecular integration, interpolation, differentiation, and more. J. Chem. Phys. 2024, 160, 172503. JCP: 10.1063/5.0202240

[6] Kim, T. D.; Pujal, L.; Richer, M.; van Zyl, M.; Martínez-González, M.; Tehrani, A.; Chuiko, V.; Sánchez-Díaz, G.; Sanchez, W.; Adams, W.; Huang, X.; Kelly, B. D.; Vöhringer-Martinez, E.; Verstraelen, T.; Heidar-Zadeh, F.; Ayers, P. W. GBasis: A Python library for evaluating functions, functionals, and integrals expressed with Gaussian basis functions. J. Chem. Phys. 2024, 161, 042503. JCP: 10.1063/5.0216776

[7] Verstraelen, T.; Adams, W.; Pujal, L.; Tehrani, A.; Kelly, B. D.; Macaya, L.; Meng, F.; Richer, M.; Hernández-Esparza, R.; Yang, X. D.; Chan, M.; Kim, T. D.; Cools-Ceuppens, M.; Chuiko, V.; Vöhringer-Martinez, E.; Ayers, P. W.; Heidar-Zadeh, F. IOData: A python library for reading, writing, and converting computational chemistry file formats and generating input files. J. Comput. Chem. 2021, 42, 458–464. JCC: 10.1002/jcc.26468

Metadata

Release files for horton-part 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for horton-part 1.2.0
File Size Uploaded
horton_part-1.2.0.tar.gz 2.9 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for horton-part 1.2.0
File Interpreter ABI Platform
horton_part-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.0 MB

Release files / horton_part-1.2.0.tar.gz

Download URL horton_part-1.2.0.tar.gz
Size 2.9 MB
Tags Source
SHA-256 checksum
How to use checksums
4c6c6161605e1f28ef870b2ca343383f310af0984c083b6757e9f16724b55263
BLAKE2b-256 checksum
How to use checksums
d4119b70e0b6a67bc647d99396af17264112fe84d6b2f9e30c868ed041f825d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / horton_part-1.2.0-py3-none-any.whl

Download URL horton_part-1.2.0-py3-none-any.whl
Size 150.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0ada606a0c0b5d170834fdd0f9803fdf34724c72b7822103c96e9737f01840cd
BLAKE2b-256 checksum
How to use checksums
0b70eab6b6dbbbcfbf53fcfbf6e1c0849ff5640cd0fea946dbc9d32b447e117d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

0.0.2

2 release 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