EDDP

class graph_pes.models.EDDP(
elements,
cutoff=5.0,
features=8,
max_power=8,
mlp_width=16,
mlp_layers=1,
activation='CELU',
three_body_cutoff=None,
three_body_features=None,
three_body_max_power=None,
learnable_powers=False,
)[source]

Bases: GraphPESModel

The Ephemeral Data Derived Potential (EDDP) architecture, from Ephemeral data derived potentials for random structure search. Phys. Rev. B 106, 014102.

This model makes local energy predictions by featurising the local atomic environment and passing the result through an MLP:

\[\varepsilon_i = \text{MLP}(\mathbf{F}_i)\]

where \(\mathbf{F}_i\) is a a concatenation of one-, two- and three-body features:

\[\mathbf{F}_i = \mathbf{F}_i^{(1)} \oplus \mathbf{F}_i^{(2)} \oplus \mathbf{F}_i^{(3)}\]

as per Eq. 14. The m’th component of the two-body feature is given by:

\[\mathbf{F}_i^{(2)}[m] = \sum_{j \in \mathcal{N}(i)} f(r_{ij})^{p_m}\]

where \(r_{ij}\) is the distance between atoms \(i\) and \(j\), \(\mathcal{N}(i)\) is the set of neighbours of atom \(i\), \(p_m \geq 2\) is some power, and \(f(r_{ij})\) is defined as:

\[\begin{split}f(r_{ij}) = \begin{cases} 2 (1 - r_{ij} / r_{\text{cutoff}}) & \text{if } r_{ij} \leq r_{\text{cutoff}} \\ 0 & \text{otherwise} \end{cases}\end{split}\]

as per Eq. 7. Finally, the \((m, o)\)’th component of the three-body feature is given by:

\[\mathbf{F}_i^{(3)}[m, o] = \sum_{j \in \mathcal{N}(i)} \sum_{k > j \in \mathcal{N}(i)} f(r_{ij})^{p_m} f(r_{ik})^{p_m} f(r_{jk})^{p_o}\]

If you use this model, please cite the original paper:

@article{Pickard-22-07,
    title = {
        Ephemeral Data Derived Potentials for Random Structure Search
    },
    author = {Pickard, Chris J.},
    year = {2022},
    journal = {Physical Review B},
    volume = {106},
    number = {1},
    pages = {014102},
    doi = {10.1103/PhysRevB.106.014102},
}
Parameters:
  • elements (list[str]) – The elements the model will be applied to (e.g. ["C", "H"]).

  • cutoff (float) – The maximum distance between pairs of atoms to consider their interaction.

  • features (int) – The number of features used to describe the two body interactions.

  • max_power (float) – The maximum power of the interaction expansion for two body terms.

  • mlp_width (int) – The width of the MLP (i.e. number of neurons in each hidden layer).

  • mlp_layers (int) – The number of hidden layers in the MLP.

  • activation (str) – The activation function to use in the MLP.

  • three_body_cutoff (float | None) – The radial cutoff for three body interactions. If None, the same as cutoff.

  • three_body_features (int | None) – The number of features used to describe the three body interactions. If None, the same as for the two body terms.

  • three_body_max_power (float | None) – The maximum power of the interaction expansion for three body terms. If None, the same as for the two body terms.

  • learnable_powers (bool) – If True, the powers of the interaction expansion are learnable. If False, the powers are fixed to the values given by max_power.