class gpr::InverseDistanceDescriptor¶
Overview¶
Inverse distance descriptor for molecular configurations. More…
#include <InverseDistanceDescriptor.h>
class InverseDistanceDescriptor {
public:
// methods
static int featureDimension(const AtomsConfiguration& conf_info);
static std::vector<int> featurePairtypes(const AtomsConfiguration& conf_info);
static void compute(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi);
static void computeWithJacobian(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi, EigenMatrix& J_phi);
};
Detailed Documentation¶
Inverse distance descriptor for molecular configurations.
Maps Cartesian coordinates to the inverse-distance feature space used by the SexpatCF kernel. The feature vector phi(x) contains 1/r_ij for all atom pairs, in the same ordering as Distance::dist_at().
Pair ordering:
Moving-moving pairs: j=0..N_mov-2, i=j+1..N_mov-1
Moving-frozen pairs: j=0..N_mov-1, i=0..N_fro-1
This is a single-configuration descriptor. For pairwise distance matrices between configuration sets, use Distance::dist_at() which has optimized batched evaluation.
See also:
Distance::dist_at() for the kernel distance that operates on these features.
RFFModel for the primary consumer of these features.
Methods¶
static int featureDimension(const AtomsConfiguration& conf_info)
Number of features = n_mov*(n_mov-1)/2 + n_mov*n_fro.
Parameters:
conf_info |
Atom configuration with moving/frozen counts. |
Returns:
Feature dimension.
static std::vector<int> featurePairtypes(const AtomsConfiguration& conf_info)
Pairtype index for each feature.
Returns vector of length featureDimension, where entry f is the pairtype index for feature f. Used for per-pairtype ARD lengthscale lookup in RFF frequency sampling.
Parameters:
conf_info |
Atom configuration. |
Returns:
Vector of pairtype indices.
static void compute(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi)
Compute phi(x) for a single configuration.
Parameters:
x |
(1 x 3*N_mov) row vector of moving atom coordinates. |
conf_info |
Atom types, pairtypes, frozen positions. |
phi |
(d_feat,) vector of inverse distances. |
static void computeWithJacobian(const Coord& x, const AtomsConfiguration& conf_info, Eigen::VectorXd& phi, EigenMatrix& J_phi)
Compute phi(x) and its Jacobian d(phi)/d(x).
The Jacobian for feature f from pair (a,b) with distance r_ab: J(f, 3*a+d) = +(x_a - x_b)[d] / r_ab^3 J(f, 3*b+d) = -(x_a - x_b)[d] / r_ab^3 For moving-frozen pairs, only the moving atom column is nonzero.
Parameters:
x |
(1 x 3*N_mov) coordinates. |
conf_info |
Atom configuration. |
phi |
(d_feat,) features. |
J_phi |
(d_feat x 3*N_mov) Jacobian. |