occ
Loading...
Searching...
No Matches
occ::descriptors::Rinse Class Reference

RINSE – Reciprocal-space INvariant Spectral Embedding. More...

#include <rinse.h>

Public Member Functions

 Rinse (const RinseParams &params={})
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.

Detailed Description

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).

Constructor & Destructor Documentation

◆ Rinse()

occ::descriptors::Rinse::Rinse ( const RinseParams & params = {})
explicit

Member Function Documentation

◆ compute()

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()

Vec occ::descriptors::Rinse::flatten ( Eigen::Ref< const Mat > power_spectrum)
static

Flatten a power spectrum matrix into the descriptor vector.

◆ operator()()

Mat occ::descriptors::Rinse::operator() ( const crystal::Crystal & crystal) const

The power spectrum for a crystal, (n_max, num_l_levels).

◆ parameters()

const RinseParams & occ::descriptors::Rinse::parameters ( ) const
inline

◆ power_spectrum()

Mat occ::descriptors::Rinse::power_spectrum ( const ReflectionList & reflections) const

The power spectrum for a set of reflections, (n_max, num_l_levels).


The documentation for this class was generated from the following file:
  • /home/runner/work/occ/occ/include/occ/descriptors/rinse.h