|
occ
|
RINSE – Reciprocal-space INvariant Spectral Embedding. More...
#include <rinse.h>
Public Member Functions | |
| Rinse (const RinseParams ¶ms={}) | |
| const RinseParams & | parameters () const |
| Mat | power_spectrum (const ReflectionList &reflections) const |
| The power spectrum for a set of reflections, (n_max, num_l_levels). | |
| Mat | operator() (const crystal::Crystal &crystal) const |
| The power spectrum for a crystal, (n_max, num_l_levels). | |
| Vec | compute (const crystal::Crystal &crystal) const |
| The descriptor as a flat vector of length size(), row-major in (n, l): element n * num_l_levels + k is radial order n and angular level l_values()[k]. | |
Static Public Member Functions | |
| static Vec | flatten (Eigen::Ref< const Mat > power_spectrum) |
| Flatten a power spectrum matrix into the descriptor vector. | |
RINSE – Reciprocal-space INvariant Spectral Embedding.
A rotationally invariant descriptor of a crystal, built by projecting the intensity-weighted reciprocal lattice onto a radial and angular basis: SOAP, but in reciprocal space. For reflections G within the resolution cutoff,
\[ A_{nlm} = \sum_G I(G) R_n(|G|) Y_{lm}(\hat{G}) \]
and the invariant power spectrum is \( p_{nl} = \sum_m A_{nlm}^2 \).
The intensity field is centrosymmetric absent anomalous dispersion, so odd l cancel exactly and only even l are computed.
Constructing a Rinse precomputes the shell layout and the harmonic recurrences, so reuse one instance across a batch of structures. It holds no mutable state, so one instance can serve several threads at once.
This is a port of rinse-descriptor (Thomas Fellowes, https://github.com/DuMOCC-Group/rinse-descriptor), the reference implementation, and reproduces its descriptors and hashes (tested against the version in rinse_reference_version).
|
explicit |
| Vec occ::descriptors::Rinse::compute | ( | const crystal::Crystal & | crystal | ) | const |
The descriptor as a flat vector of length size(), row-major in (n, l): element n * num_l_levels + k is radial order n and angular level l_values()[k].
Flatten a power spectrum matrix into the descriptor vector.
| Mat occ::descriptors::Rinse::operator() | ( | const crystal::Crystal & | crystal | ) | const |
The power spectrum for a crystal, (n_max, num_l_levels).
|
inline |
| Mat occ::descriptors::Rinse::power_spectrum | ( | const ReflectionList & | reflections | ) | const |
The power spectrum for a set of reflections, (n_max, num_l_levels).