We use Message Passing Neural Networks (MPNNs) for most machine learning tasks described in this work. As formalized by Gilmer et al., MPNNs are a general class of architectures for learning properties of graphs and there exists significant degrees of freedom within MPNN design. The general architecture of MPNNs includes "message" layers that produce a signal for each node (or, in some architectures, each edge 29 ) given its neighboring edges and nodes and a function then updates the features of each node based on its message. The combined "message-then-update" cycle can be repeated many times before the final, "readout" function that produces a single feature vector for the entire graph. The features for the graph are then passed as inputs to another model (e.g., a fully-connected neural network) that maps the graph features to a property of the graph. As with all neural networks, the weights of an MPNN are learned by adjusting them to minimize the error between prediction and true values through gradient descent.