A FFNN is composed by different layers of computational neurons: an input layer, one or more hidden layers, and an output layer. Neurons in the input layer are associated to the features describing the data, each neuron in the hidden layer accepts the inputs of all neurons in the input layer and transform them to a weighted sum of the original inputs, then a nonlinear activation function is applied to this weighted sum and the result is passed to the neurons in the output layer, where the prediction is performed. The weights from the network are iteratively adjusted during the training stage on the basis of a cost function to minimize, typically cross entropy. For this algorithm, the solver for weight optimization was set as "lbgfs", the maximum number of iterations (how many times a training data point is passed to the network) was set to 1000, and the number of hidden layers was fixed to 1. The number of neurons in the hidden layer was optimized in a representation-dependent manner using candidate values of 0.1, 0.2, 0.3, 0.4, 0.5, 0.6 and 0.7 times the number of features in the fingerprint representation, and the activation function was selected from three different options, being logistic sigmoid function ("logistic"), hyperbolic tangent function ("tanh") and rectified linear unit function ("relu"). where TP means "true positives", TN "true negatives", FP "false positives", and FN "false negatives", with "positive" and "negative" refereeing to "active" and "inactive" compound labels, respectively.