xnn.dnn.featurizers.symmetry_functions.AngularSymmetryFunctions#
- class xnn.dnn.featurizers.symmetry_functions.AngularSymmetryFunctions(species, cutoff=4.0, etas=(0.5,), zetas=(8.0,), rs=(0.0, 1.5, 3.0), theta_s=(0.0, 1.5708, 3.1416, 4.7124), cos_factor=1.0)[source]#
Bases:
FeaturizerANI-style angular AEV term, resolved by unordered neighbour-species pair.
G^A_i = 2^(1-zeta) * sum_{j,k} (1 + cos(theta_ijk - theta_s))^zeta * exp(-eta ((r_ij + r_ik)/2 - Rs)^2) * fc(r_ij) fc(r_ik)summed over distinct neighbour pairs
(j, k)of centrei, with a grid over(eta, zeta, Rs, theta_s). Contributions are bucketed by the unordered pair of neighbour chemical species, giving an invariant per-atom descriptor. Equivalent totorchani’s2 * ((1+cos)/2)^zeta * ...form.- Parameters:
species (list[int]) – Atomic numbers the descriptor resolves; the angular term is bucketed by the unordered pairs of these species.
cutoff (float, optional) – Cutoff radius for the cosine cutoff, by default 4.0.
etas (sequence of float, optional) – Radial width parameters, by default
(0.5,).zetas (sequence of float, optional) – Angular resolution exponents, by default
(8.0,).rs (sequence of float, optional) – Radial shifts
Rs, by default(0.0, 1.5, 3.0).theta_s (sequence of float, optional) – Angular shifts (in radians), by default
(0.0, 1.5708, 3.1416, 4.7124).cos_factor (float, optional) – Value multiplying
cos(theta)beforeacos.1.0(Behler-Parrinello, default) or0.95(ANI / NeuroChem / torchani, which keepsacosaway from its infinite-gradient endpoints).
- Variables:
- property output_dim: int#
Descriptor length,
n_params * n_pairs(grid size over(eta, zeta, Rs, theta_s)per unordered species pair).- Type:
- forward(data)[source]#
Compute the angular symmetry-function descriptor.
- Parameters:
data (AtomicGraph) – Atomic graph providing atomic numbers, edge index and edge vectors.
- Returns:
Per-atom angular descriptor of shape
(N, output_dim). Returns all zeros when the graph contains no neighbour triplets.- Return type:
Tensor