To ensure the optimisation, each objective is coupled with a modifier function that transforms it into a maximisation task and scales all raw scores between 0 and 1. Custom modifiers are easily implemented with the API, but DrugEx offers a variety of predefined modifiers for both monotonic (eg. ClippedScore) and non-monotonic objectives (eg. Gaussian). Some of these modifiers do not normalise or do not transform the objectives to maximisation tasks in all cases, and should be used with caution, especially when using an aggregation-based multi-objective optimisation scheme. All modifiers are summarised in section S3. Each objective-modifier couple is associated with a desirability threshold set between 0 and 1 to determine if a compound fulfils the desirability criteria on that objective or not. A compound is considered desired if for all objectives its modifier scores are above their corresponding thresholds.