where a, v are nodes (atoms), x i are atom representations, N i is the 1-hop neighbourhood of atom i, ⊕ is a node-level aggregation function such as sum or average, and ϕ, ψ are learnable functions such as multi-layer perceptrons (MLPs). It should be noted that there are many variations and extensions of Equation ( ), and this is only an example of a possible architecture. Importantly, once the message passing steps or equivalent updates are done, the atom-level representations are aggregated into a molecule-level representation h m = i∈V (h i ), where V is the collection of atoms in the molecule (note that this can be different from the one in Equation ( )). This operation is often called an aggregation, pooling, or readout function.