# Example for creating campaigns from configs This example shows how to load a configuration file and use it to create a campaign. In such a configuration file, the objects used to create a campaign are represented by strings. We use the following configuration dictionaries, representing a valid campaign. Note that the json format is required for the config file. You can create such a config by providing a dictionary with `"type":"name of the class"`. ## Necessary imports ```python from baybe import Campaign ``` ## The configuration dictionary as a string Note that the following explicit call `str()` is not strictly necessary. It is included since our method of converting this example to a markdown file does not interpret this part of the code as `python` code if we do not include this call. ```python CONFIG = str( """ { "searchspace": { "constructor": "from_product", "parameters": [ { "type": "CategoricalParameter", "name": "Granularity", "values": [ "coarse", "fine", "ultra-fine" ], "encoding": "OHE" }, { "type": "NumericalDiscreteParameter", "name": "Pressure[bar]", "values": [ 1, 5, 10 ], "tolerance": 0.2 }, { "type": "SubstanceParameter", "name": "Solvent", "data": { "Solvent A": "COC", "Solvent B": "CCCCC", "Solvent C": "COCOC", "Solvent D": "CCOCCOCCN" }, "decorrelate": true, "encoding": "MORDRED" } ], "constraints": [] }, "objective": { "type": "SingleTargetObjective", "target": { "type": "NumericalTarget", "name": "Yield", "mode": "MAX" } }, "recommender": { "type": "TwoPhaseMetaRecommender", "initial_recommender": { "type": "FPSRecommender" }, "recommender": { "type": "BotorchRecommender", "surrogate_model": { "type": "GaussianProcessSurrogate" }, "acquisition_function": "qEI", "allow_repeated_recommendations": false, "allow_recommending_already_measured": false }, "switch_after": 1 } } """ ) ``` ## Creating a campaign from the configuration file Although we know in this case that the config represents a valid configuration for a campaign. If the config is invalid an exception will be thrown. ```python campaign = Campaign.from_config(CONFIG) ``` ________________________________________________________________________________ [Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features... _smiles_to_mordred_features('CCCCC') _______________________________________smiles_to_mordred_features - 0.1s, 0.0min ________________________________________________________________________________ [Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features... _smiles_to_mordred_features('COCOC') _______________________________________smiles_to_mordred_features - 0.0s, 0.0min ________________________________________________________________________________ [Memory] Calling baybe.utils.chemistry._smiles_to_mordred_features... _smiles_to_mordred_features('CCOCCOCCN') _______________________________________smiles_to_mordred_features - 0.1s, 0.0min We now perform a recommendation as usual and print it. ```python recommendation = campaign.recommend(batch_size=3) print(recommendation) ``` Granularity Pressure[bar] Solvent 0 coarse 1.0 Solvent A 16 fine 10.0 Solvent B 32 ultra-fine 5.0 Solvent D