A broad array of functionality is available to define an objective, as outlined in Table . Details on each method can be found in the Supplementary Information. In summary, the suite of scoring functions includes physicochemical descriptors, 2D and 3D molecular similarity to reference molecules, substructure matching, use of Scikit-Learn prediction models including trained bioactivity models on approximately 2,300 on ChEMBL31 targets with PIDGINv5 , interfacing with five docking software coupled with four available ligand preparation protocols, and finally three synthetic accessibility measures. Most scoring functions are parallelisable using Python's built-in multiprocessing module, while longer running scoring functions such as docking and ligand preparation can be parallelised using Dask to allow parallelisation over a compute cluster.