Skip to main content

Fast calculation of spherical harmonics

Project description

sphericart

Test

This is sphericart, a multi-language library for the efficient calculation of real spherical harmonics and their derivatives in Cartesian coordinates.

For instructions and examples on the usage of the library, please refer to our documentation.

A plot of the +-1 isosurfaces of the Y^0\_3 solid harmonic, including also gradients.

If you are using sphericart for your academic work, you can cite it as

@article{sphericart,
    title={Fast evaluation of spherical harmonics with sphericart},
    author={Bigi, Filippo and Fraux, Guillaume and Browning, Nicholas J. and Ceriotti, Michele},
    journal={J. Chem. Phys.},
    year={2023},
    number={159},
    pages={064802},
}

This library is dual-licensed under the Apache License 2.0 and the MIT license. You can use to use it under either of the two licenses.

Installation

Python

Pre-built (https://pypi.org/project/sphericart/).

pip install sphericart             # numpy interface, CPU only
pip install sphericart[torch]      # Torch (and TorchScript) interface, CPU and GPU
pip install sphericart[jax]        # JAX interface, CPU and GPU

Note that the pre-built packages are compiled for a generic CPU, and might be less performant than they could be on a specific processor. To generate libraries that are optimized for the target system, you can build from source:

git clone https://github.com/lab-cosmo/sphericart
pip install .

# if you also want the torch bindings (CPU and GPU)
pip install .[torch]

# torch bindings, CPU-only version
pip install --extra-index-url https://download.pytorch.org/whl/cpu .[torch]

If you want to enable the CUDA version of the code when builing from source, you'll need to set the CUDA_HOME environement variable. You can build a CUDA enabled sphericart, but the calculations though numpy will only run on CPU.

Julia

A native Julia implementation of sphericart is provided, called SpheriCart. Install the package by opening a REPL, switch to the package manager by typing ] and then add SpheriCart. See julia/README.md for usage.

C and C++

From source

git clone https://github.com/lab-cosmo/sphericart
cd sphericart

mkdir build && cd build

cmake .. <cmake configuration options>
cmake --build . --target install

The following cmake configuration options are available:

  • -DSPHERICART_BUILD_TORCH=ON/OFF: build the torch bindings in addition to the main library
  • -DSPHERICART_BUILD_TESTS=ON/OFF: build C++ unit tests
  • -DSPHERICART_BUILD_EXAMPLES=ON/OFF: build C++ examples and benchmarks
  • -DSPHERICART_OPENMP=ON/OFF: enable OpenMP parallelism
  • -DCMAKE_INSTALL_PREFIX=<where/you/want/to/install> set the root path for installation

GPU Support

The support for GPU offload could be controled with the following CMake variables at configuration:

  • -DSPHERICART_ENABLE_CUDA=ON/OFF: build with CUDA support also set CUDA_HOME environement variable.
  • -DSPHERICART_ENABLE_SYCL=ON/OFF: build with SYCL support, configure tool will search for sycl/sycl.h header.
  • -DSPHERICART_SYCL_DEVICE=all/cpu/gpu: target architecute for SYCL support, check which devices are available with sycl-ls, for all (default) is possible to control at execution with export ONEAPI_DEVICE_SELECTOR=opencl:gpu or export ONEAPI_DEVICE_SELECTOR=opencl:cpu.

The following flags have been tested with Intel OneAPI 2025.3 for enabling SYCL support:

  • -DCMAKE_CXX_COMPILER=icpx
  • -DCMAKE_C_COMPILER=icx
  • -DCMAKE_CXX_FLAGS=" -qopenmp --intel -fsycl -fsycl-targets=spir64 -Wno-deprecated-declarations -Wno-macro-redefined -Wno-unused-parameter -w"

Note: Only tested in C++, python/JAX/Torch support is in progress.

Running tests and documentation

Tests and the local build of the documentation can be run with tox. The default tests, which are also run on the CI, can be executed by simply running

tox

in the main folder of the repository.

To run tests in a CPU-only environment you can set the environment variable PIP_EXTRA_INDEX_URL before calling tox, e.g.

PIP_EXTRA_INDEX_URL=https://download.pytorch.org/whl/cpu tox -e docs

will build the documentation in a CPU-only environment.

Other flavors of spherical harmonics

Although sphericart natively calculates real solid and spherical harmonics from Cartesian positions, it is easy to manipulate its output it to calculate complex spherical harmonics and/or to accept spherical coordinates as inputs. You can see examples here.

Maintainers

This project is maintained by @frostedoyster and @Luthaf. The maintainers will reply to issues and pull requests opened on this repository as soon as possible. You can mention them directly if you have not received an answer after a couple of days.

Project details


Download files

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

Source Distribution

sphericart-2.0.0.tar.gz (67.4 kB view details)

Uploaded Source

Built Distributions

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

sphericart-2.0.0-py3-none-win_amd64.whl (233.6 kB view details)

Uploaded Python 3Windows x86-64

sphericart-2.0.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (428.8 kB view details)

Uploaded Python 3manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

sphericart-2.0.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (412.3 kB view details)

Uploaded Python 3manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

sphericart-2.0.0-py3-none-macosx_11_0_x86_64.whl (283.2 kB view details)

Uploaded Python 3macOS 11.0+ x86-64

sphericart-2.0.0-py3-none-macosx_11_0_arm64.whl (157.9 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file sphericart-2.0.0.tar.gz.

File metadata

  • Download URL: sphericart-2.0.0.tar.gz
  • Upload date:
  • Size: 67.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for sphericart-2.0.0.tar.gz
Algorithm Hash digest
SHA256 1fb3b722a010877b7005e0fae61c52a718d509dfd7846f85b94f080efb3df061
MD5 e1239ab891f7f2786a61d4dcc759ac69
BLAKE2b-256 81184c89e9e28f4667ed0d53829ae3caf2bfa6c76600090ec44580633c2a87ab

See more details on using hashes here.

File details

Details for the file sphericart-2.0.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: sphericart-2.0.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 233.6 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for sphericart-2.0.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2aa1872fa3b27a6a90232f164c533f9464f2ce33971b8d6e31947e56c11bc10e
MD5 516223395c6ee95a0f5bcc5785d61dff
BLAKE2b-256 9308a31a2934fb0e55a6300b264f27a480c8c97a824fc8e26fbce6a9873778dc

See more details on using hashes here.

File details

Details for the file sphericart-2.0.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for sphericart-2.0.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 101f9279738262a34faa190fa6255a06399dd4908c9739a7318746468dd4fc17
MD5 357a0964bf6da15b52f79cfe50ab80d3
BLAKE2b-256 24f7e15fdec18406f0d1ac060d394e6685511f76f501a82a486e211a9caae1d5

See more details on using hashes here.

File details

Details for the file sphericart-2.0.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sphericart-2.0.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a28baeea3f3f7c258fd2ce73b8b99dcce027c5fb20135f9774dd55562c206c73
MD5 960f9a49a7cba500baf7fb9b59ad9ca1
BLAKE2b-256 09032efabff2ed548f7f074b0fd5943765e737471c66cd517ab5b8c67ed31eee

See more details on using hashes here.

File details

Details for the file sphericart-2.0.0-py3-none-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for sphericart-2.0.0-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 6ac9eb5a4ef9a35bde0f312f613b40038dd16e0f908cb1e052e4681dbcf3505e
MD5 eac1951eb139e1409ab3deaf2d7ff1fe
BLAKE2b-256 485d265a0413f77fa35d72ef01cc90e70bdd4cc714c556b25df58703aa59bef9

See more details on using hashes here.

File details

Details for the file sphericart-2.0.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sphericart-2.0.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 96d188e58df5f16bd269f6716c5fe27fb6e805e60e7ca31b4ab35b1d2828dbca
MD5 6a6166a8d3996d7f4a9285f537088b6e
BLAKE2b-256 65d06a1d3bdff3ef7772d4195a247583b6b29a07fc91296bea46f9a8385c50c4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page