Welcome to Summit’s documentation!¶
Summit is a set of tools for optimising chemical processes. We’ve started by targeting reactions.
What is Summit?¶
Currently, reaction optimisation in the fine chemicals industry is done by intuition or design of experiments. Both scale poorly with the complexity of the problem.
Summit uses recent advances in machine learning to make the process of reaction optimisation faster. Essentially, it applies algorithms that learn which conditions (e.g., temperature, stoichiometry, etc.) are important to maximising one or more objectives (e.g., yield, enantiomeric excess). This is achieved through an iterative cycle.
Summit has two key features:
Strategies: Optimisation algorithms designed to find the best conditions with the least number of iterations. Summit has eight strategies implemented.
Benchmarks: Simulations of chemical reactions that can be used to test strategies. We have both mechanistic and data-driven benchmarks.
Below is a quick start that demonstrates the functionality of Summit:
# Import summit from summit.benchmarks import SnarBenchmark from summit.strategies import NelderMead, MultitoSingleObjective from summit.run import Runner # Instantiate the benchmark exp = SnarBenchmark() # Since the Snar benchmark has two objectives and Nelder-Mead is single objective, we need a multi-to-single objective transform transform = MultitoSingleObjective( exp.domain, expression="-sty/1e4+e_factor/100", maximize=False ) # Set up the strategy, passing in the optimisation domain and transform nm = NelderMead(exp.domain, transform=transform) # Use the runner to run closed loop experiments r = Runner( strategy=nm, experiment=exp,max_iterations=50 ) r.run()
- Experiments / Benchmarks