All stability score models were trained using a 10-fold cross-validation approach with a 90:10 train-validation split, ensuring each validation set was unique and disjoint. Training was conducted in PyTorch with a batch size of 128, using the Adam optimizer (learning rate: 0.001) to minimize the custom hinge loss function (Eq. 1). Models were trained for a maximum of 600 epochs, with early stopping based on a validation loss improvement patience of 300 epochs. The model architecture utilized 2048-length unsigned int8 Morgan fingerprints as input, followed by five fully connected hidden layers with 300 nodes each and the ReLU activation function, ending with a linear scalar output layer. The model with the lowest validation loss was selected in each case.