SINGROUP/dscribe

Radial decay for SOAP

Closed this issue · 1 comments

As mentioned in [1] and [2], radial scaling of the SOAP features can be beneficial especially when using machine learning methods that put equal weight to the different features (e.g. kernel methods). Inspired by this discussion, this feature should be added to our SOAP implementation.

The initial implementation would simply scale the atom centered gaussian with a radial decay function, as mentioned in [1]. This is not the same as weighting the total atomic density, but close enough as long as the gaussian width (sigma) is much smaller than changes in the decay function at that length scale.

As for the interface, maybe we could introduce a new weighting option similar to MBTR (the whole idea is very similar to weighting in MBTR). This could be a dictionary that specifies the weighting function and it's parameters. This argument could also support completely custom weighting for each atom (you give a list of weights for each atom), and possibly the concept of using a custom weight for the central atom, as provided by quippy. This would easily allow us to introduce different cutoff function definitions and pass them to the C-extension. The weighting is also logically connected to cut: if the weighting goes to zero before rcut is reached, the effective rcut should be reduced. Another option is to completely replace rcut with this weighting option.

Any comments on this are greatly appreciated!

[1] Michael J. Willatt, Felix Musil an Michele Ceriotti, Feature optimization for atomistic machine learning yields a data-driven construction of the periodic table of the elements, Phys. Chem. Chem. Phys., (2018), 20, 29661--29668
[2] Miguel Caro, Optimizing many-body atomic descriptors for enhanced computational performance of machine learning based interatomic potentials, Phys. Rev. B (2019) 100, 024112

Now implemented in 1.1.0.