Luthaf / rascaline

Computing representations for atomistic machine learning
https://luthaf.fr/rascaline/
BSD 3-Clause "New" or "Revised" License
44 stars 13 forks source link

Add a pair-by-pair SOAP spherical expansion calculator #147

Closed Luthaf closed 1 year ago

Luthaf commented 1 year ago

This is only the first step, but I'm opening this since I've already re-written this code 3 times, so let's try to merge it before I have to rewrite it a fourth time!

This is currently in a state where the base code is shared between pair-by-pair calculation and full spx calculation, and the pair-by-pair code can compute the values (no gradients) of the spherical expansion.


Still TBD:

github-actions[bot] commented 1 year ago

Here is a pre-built version of the code in this pull request: wheels.zip, you can install it locally by unzipping wheels.zip and using pip to install the file matching your system

github-actions[bot] commented 1 year ago

The documentation for this PR is (or will soon be) available on readthedocs: https://rascaline--147.org.readthedocs.build/en/147/

Luthaf commented 1 year ago

(first three commits are from #148, you can ignore them!)

Luthaf commented 1 year ago

SphericalExpansion logic has been slimmed-down by moving the computation of pair contributions from SphericalExpansion.compute_for_pair to a new struct SphericalExpansionByPair.compute_for_pair. Similarly, the samples function from FullNeighborList, has been splitted into samples and samples_for. It is just a shifting of logic, no new feature has been implemented. I guess it is important for some later feature, so the pair contribution calculator can be reused for the n-centers descriptor?

This is a very accurate understanding! The new SphericalExpansionByPair calculator is sharing code with FullNeighborList for sample generation (i.e. finding all pairs in a system), and other code with spherical expansion (to compute individual pair contributions)