Sampling As previously mentioned, the efficacy of BO depends on the ability to quickly and cheaply sample the search space and optimize the acquisition function. Since the search space is not continuous (i.e. amino acids are discrete elements) and gradients are not accessible, we used GA to find peptide sequences that optimize the acquisition function. In this work, we created a SequenceGA method to generate sequences, either minimizing or maximizing the acquisition function. The python library pymoo was used for the inner loop BO , allowing both SOO or MOO. The standard GA implementation was used for SOO, while the S-Metric (or hypervolume) Selection -Evolutionary Multi-objective Optimisation Algorithms (SMS-EMOA) was used for MOO. For both SOO and MOO, we used a maximum number of 1000 iterations with a population set to 500. A two-point crossover operator with a mutation rate of 0.1 was used to generate new children. The minimum and maximum numbers of random mutations introduced was set from 1 to length of the peptide. The total number of attempts was set to 50, meaning if no improvement is seen for the best peptide sequence after 50 iterations, the optimization is stopped. For MOO, the peptide sequences composing the Pareto fronts are used to check the convergence of the optimization, and stop it if no change was observed also after 50 iterations.