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.1.tar.gz (67.3 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.1-py3-none-win_amd64.whl (233.6 kB view details)

Uploaded Python 3Windows x86-64

sphericart-2.0.1-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.1-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.1-py3-none-macosx_11_0_x86_64.whl (283.2 kB view details)

Uploaded Python 3macOS 11.0+ x86-64

sphericart-2.0.1-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.1.tar.gz.

File metadata

  • Download URL: sphericart-2.0.1.tar.gz
  • Upload date:
  • Size: 67.3 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.1.tar.gz
Algorithm Hash digest
SHA256 d2f17396b8a552c97a0b54e1d66f241494d6a840a0d2b5f73cdc8d8b0b397655
MD5 ac87b68d0375e43e397af341e7803826
BLAKE2b-256 3cf05a1ce2764b61755dd7cd92f100b2f947992b4743da79289d7676814cfcaa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sphericart-2.0.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2faa46431e8ce61102c934ec98b6be5c89a06d5a4f6b2d92dfe7384420fab5eb
MD5 071ccec0f74b53ad921b2f366462c1e1
BLAKE2b-256 caff78f8b9fd904401e742d6297d7e1ae9b944638249007c7d93456dff5c01d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sphericart-2.0.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6455232216fad42553b41c39c5a8fd24325c4aa6ad275ebc9574d27d60d773a6
MD5 dbd7f2974ba53d373dd20d9cd65dc57b
BLAKE2b-256 0174ba523fb9acee862d180d31e901b9811d61dd8b2a357b562be375e33b77b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sphericart-2.0.1-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fdd479f23fdb9126ff95e27f5c898c4eb5f4afe08b37a0db5e36888e4335c345
MD5 d7c07a2257c0569fa67166d633e78381
BLAKE2b-256 7bb20406cf898df9df92afd5a7c593f781accf04c296c7b3f3f44bf6c44c5f86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sphericart-2.0.1-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 737416d27b796d55c167284424ca04351ca43d5ea8550bd01b9bbe81b1390cde
MD5 bc9b039d1180e2e9d6d8d60d93817ae7
BLAKE2b-256 aa184d180d734b07b54eae7cc83eb68c4809c8f986fd901ceca2a7c5735297ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sphericart-2.0.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0056e5873a2d22be037b27165f8a4e35389af89c102b094fe063cb9a1bf2d03a
MD5 5e44b827e7c4f35b736f32ee4974e56a
BLAKE2b-256 7c715751ba72d0b401b00c43732e0819a2585659e316f0137d3287bd0a97dbfa

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