Already Implemented Benchmarks

SnAr Benchmark

class summit.benchmarks.SnarBenchmark(noise_level=0, **kwargs)[source]

Benchmark representing a nucleophilic aromatic substitution (SnAr) reaction

The SnAr reactions occurs in a plug flow reactor where residence time, stoichiometry and temperature can be adjusted. Maximizing Space time yield (STY) and minimising E-factor are the objectives.

Parameters

noise_level (float, optional) – The mean of the random noise added to the concentration measurements in terms of percent of the signal. Default is 0.

Examples

>>> b = SnarBenchmark()
>>> columns = [v.name for v in b.domain.variables]
>>> values = [v.bounds[0]+0.1*(v.bounds[1]-v.bounds[0]) for v in b.domain.variables]
>>> values = np.array(values)
>>> values = np.atleast_2d(values)
>>> conditions = DataSet(values, columns=columns)
>>> results = b.run_experiments(conditions)

Notes

This benchmark relies on the kinetics observerd by [Hone] et al. The mechanistic model is integrated using scipy to find outlet concentrations of all species. These concentrations are then used to calculate STY and E-factor.

References

Hone

C. A. Hone et al., React. Chem. Eng., 2017, 2, 103–108. DOI: 10.1039/C6RE00109B

property data

Datast of all experiments run

property domain

The domain for the experiment

pareto_plot(objectives=None, colorbar=False, ax=None)

Make a 2D pareto plot of the experiments thus far

Parameters
  • objectives (array-like, optional) – List of names of objectives to plot. By default picks the first two objectives

  • ax (matplotlib.pyplot.axes, optional) – An existing axis to apply the plot to

Returns

  • if ax is None returns a tuple with the first component

  • as the a new figure and the second component the axis

  • if ax is a matplotlib axis, returns only the axis

Raises

ValueError – If the number of objectives is not equal to two

reset()

Reset the experiment

This will clear all data.

run_experiments(conditions, computation_time=None, **kwargs)

Run the experiment(s) at the given conditions

Parameters
  • conditions (summit.utils.dataset.Dataset) – A dataset with columns matching the variables in the domain of a experiment(s) to run.

  • computation_time (float, optional) – The time used by the strategy in calculating the next experiments. By default, the time since the last call to run_experiment is used.

to_dict(**kwargs)[source]

Serialize the class to a dictionary

Subclasses can add a experiment_params dictionary key with custom parameters for the experiment

C-N Benchmark

class summit.benchmarks.ReizmanSuzukiEmulator(case=1, **kwargs)[source]

Reizman Suzuki Emulator

Virtual experiments representing the Suzuki-Miyaura Cross-Coupling reaction similar to Reizman et al. (2016). Experimental outcomes are based on an emulator that is trained on the experimental data published by Reizman et al.

Parameters

case (int, optional, default=1) – Reizman et al. (2016) reported experimental data for 4 different cases. The case number refers to the cases they reported. Please see their paper for more information on the cases.

Examples

>>> reizman_emulator = ReizmanSuzukiEmulator(case=1)

Notes

This benchmark is based on data from [Reizman] et al.

References

Reizman

B. J. Reizman et al., React. Chem. Eng., 2016, 1, 658–666. DOI: 10.1039/C6RE00153J.

property data

Datast of all experiments run

property domain

The domain for the experiment

pareto_plot(objectives=None, colorbar=False, ax=None)

Make a 2D pareto plot of the experiments thus far

Parameters
  • objectives (array-like, optional) – List of names of objectives to plot. By default picks the first two objectives

  • ax (matplotlib.pyplot.axes, optional) – An existing axis to apply the plot to

Returns

  • if ax is None returns a tuple with the first component

  • as the a new figure and the second component the axis

  • if ax is a matplotlib axis, returns only the axis

Raises

ValueError – If the number of objectives is not equal to two

reset()

Reset the experiment

This will clear all data.

run_experiments(conditions, computation_time=None, **kwargs)

Run the experiment(s) at the given conditions

Parameters
  • conditions (summit.utils.dataset.Dataset) – A dataset with columns matching the variables in the domain of a experiment(s) to run.

  • computation_time (float, optional) – The time used by the strategy in calculating the next experiments. By default, the time since the last call to run_experiment is used.

to_dict()[source]

Serialize the class to a dictionary

class summit.benchmarks.BaumgartnerCrossCouplingEmulator(**kwargs)[source]

Baumgartner Cross Coupling Emulator

Virtual experiments representing the Aniline Cross-Coupling reaction similar to Baumgartner et al. (2019). Experimental outcomes are based on an emulator that is trained on the experimental data published by Baumgartner et al.

This is a five dimensional optimisation of temperature, residence time, base equivalents, catalyst and base.

The categorical variables (catalyst and base) contain descriptors calculated using COSMO-RS. Specifically, the descriptors are the first two sigma moments.

Examples

>>> bemul = BaumgartnerCrossCouplingDescriptorEmulator()

Notes

This benchmark is based on data from [Baumgartner] et al.

References

Baumgartner

L. M. Baumgartner et al., Org. Process Res. Dev., 2019, 23, 1594–1601 DOI: 10.1021/acs.oprd.9b00236

property data

Datast of all experiments run

property domain

The domain for the experiment

pareto_plot(objectives=None, colorbar=False, ax=None)

Make a 2D pareto plot of the experiments thus far

Parameters
  • objectives (array-like, optional) – List of names of objectives to plot. By default picks the first two objectives

  • ax (matplotlib.pyplot.axes, optional) – An existing axis to apply the plot to

Returns

  • if ax is None returns a tuple with the first component

  • as the a new figure and the second component the axis

  • if ax is a matplotlib axis, returns only the axis

Raises

ValueError – If the number of objectives is not equal to two

reset()

Reset the experiment

This will clear all data.

run_experiments(conditions, computation_time=None, **kwargs)

Run the experiment(s) at the given conditions

Parameters
  • conditions (summit.utils.dataset.Dataset) – A dataset with columns matching the variables in the domain of a experiment(s) to run.

  • computation_time (float, optional) – The time used by the strategy in calculating the next experiments. By default, the time since the last call to run_experiment is used.

to_dict(**kwargs)

Serialize the class to a dictionary

Subclasses can add a experiment_params dictionary key with custom parameters for the experiment

class summit.benchmarks.BaumgartnerCrossCouplingDescriptorEmulator(**kwargs)[source]

Baumgartner Cross Coupling Emulator

Virtual experiments representing the Aniline Cross-Coupling reaction similar to Baumgartner et al. (2019). Experimental outcomes are based on an emulator that is trained on the experimental data published by Baumgartner et al.

The difference with this model is that it uses descriptors for the catalyst and base instead of one-hot encoding the options. The descriptors are the first two sigma moments from COSMO-RS.

Examples

>>> bemul = BaumgartnerCrossCouplingDescriptorEmulator()

Notes

This benchmark is based on data from [Baumgartner] et al.

References

Baumgartner

L. M. Baumgartner et al., Org. Process Res. Dev., 2019, 23, 1594–1601 DOI: 10.1021/acs.oprd.9b00236

property data

Datast of all experiments run

property domain

The domain for the experiment

pareto_plot(objectives=None, colorbar=False, ax=None)

Make a 2D pareto plot of the experiments thus far

Parameters
  • objectives (array-like, optional) – List of names of objectives to plot. By default picks the first two objectives

  • ax (matplotlib.pyplot.axes, optional) – An existing axis to apply the plot to

Returns

  • if ax is None returns a tuple with the first component

  • as the a new figure and the second component the axis

  • if ax is a matplotlib axis, returns only the axis

Raises

ValueError – If the number of objectives is not equal to two

reset()

Reset the experiment

This will clear all data.

run_experiments(conditions, computation_time=None, **kwargs)

Run the experiment(s) at the given conditions

Parameters
  • conditions (summit.utils.dataset.Dataset) – A dataset with columns matching the variables in the domain of a experiment(s) to run.

  • computation_time (float, optional) – The time used by the strategy in calculating the next experiments. By default, the time since the last call to run_experiment is used.

to_dict(**kwargs)

Serialize the class to a dictionary

Subclasses can add a experiment_params dictionary key with custom parameters for the experiment

class summit.benchmarks.BaumgartnerCrossCouplingEmulator_Yield_Cost(**kwargs)[source]

Baumgartner Cross Coupling Emulator

Virtual experiments representing the Aniline Cross-Coupling reaction similar to Baumgartner et al. (2019). Experimental outcomes are based on an emulator that is trained on the experimental data published by Baumgartner et al.

This is a multiobjective version for optimizing yield and cost simultaneously.

Examples

>>> bemul = BaumgartnerCrossCouplingDescriptorEmulator()

Notes

This benchmark is based on data from [Baumgartner] et al.

References

Baumgartner

L. M. Baumgartner et al., Org. Process Res. Dev., 2019, 23, 1594–1601 DOI: 10.1021/acs.oprd.9b00236

property data

Datast of all experiments run

property domain

The domain for the experiment

pareto_plot(objectives=None, colorbar=False, ax=None)

Make a 2D pareto plot of the experiments thus far

Parameters
  • objectives (array-like, optional) – List of names of objectives to plot. By default picks the first two objectives

  • ax (matplotlib.pyplot.axes, optional) – An existing axis to apply the plot to

Returns

  • if ax is None returns a tuple with the first component

  • as the a new figure and the second component the axis

  • if ax is a matplotlib axis, returns only the axis

Raises

ValueError – If the number of objectives is not equal to two

reset()

Reset the experiment

This will clear all data.

run_experiments(conditions, computation_time=None, **kwargs)

Run the experiment(s) at the given conditions

Parameters
  • conditions (summit.utils.dataset.Dataset) – A dataset with columns matching the variables in the domain of a experiment(s) to run.

  • computation_time (float, optional) – The time used by the strategy in calculating the next experiments. By default, the time since the last call to run_experiment is used.

to_dict(**kwargs)

Serialize the class to a dictionary

Subclasses can add a experiment_params dictionary key with custom parameters for the experiment