The network architecture is illustrated in Figure . The network can take two inputs: a graph that contains simple atom descriptors extracted with RDKit, and a vector that contains atomic properties calculated with SQM. A more detailed description of the input used for each model can be found in SI. The RDKit data can optionally be parsed through a fully connected layer (red layer in Figure ) to reduce the RDKit feature input dimensionality before it is concatenated with the QM data. After concatenating the RDKit and QM data, the size of the atom embedding has to match the dimensions of the convolutional layer. Thus, the atom embedding is expanded in another fully connected layer with a ReLU activation to match the convolutional operator. Next, the graph is parsed through three layers of graph convolutions and turned into a single vector representation by a global max-pooling layer. Hereafter, the vector is passed to a dense neural network with an architecture identical to the one used by Thakkar et al . Training of the networks was allowed to continue for a maximum of 200 epochs. Training is stopped early if the validation loss do not improve for ten epochs. During training, the validation loss is monitored, and if the loss hit a plateau for five epochs (defined as no improvement greater than 10 -6 ) the learning rate is halved. The implementation of the graph neural networks is all done in PyTorch Geometric . The training was carried out using PyTorch Lightning using an Adam optimizer with an initial learning rate of 0.001. The loss was computed with the categorical crossentropy loss.