At present the AutoCatDesignSpace (and by extension AutoCatSequentialLearner) has a 1:1 correspondence between a single structure and corresponding label. So currently only the clean structures are featurized to learn the binding energies that are provided via labels.
Moving forward there are a few potential options that could generalize this:
- Extend how structures are provided and stored to include the adsorbed structures instead of as a list of just directly supplying the
ase.Atoms
e.g. [{'substrate': ase.Atoms, 'adsorbed': OUTPUT_DICT_FROM_GENERATE_RXN_STRUCTURES}, {…}]
or [{'substrate': ase.Atoms, 'adsorbed': ase.Atoms}, {…}]
- If the labels are going to be adsorption energies, then this is something that can be calculated internally given the
ase.Atoms objects for both the adsorbed and clean structures (as well as user specified reference states) rather than as a separately supplied np.ndarray. This could then be placed within a corresponding adsorbed dictionary to be pulled as needed
- The downside of the above point is that it is arguably at the sacrifice of generalizability if the label is going to be something other than adsorption energies, e.g. d-band centers. (unless there is a clean way to allow for both approaches to coexist...)
At present the
AutoCatDesignSpace(and by extensionAutoCatSequentialLearner) has a 1:1 correspondence between a single structure and corresponding label. So currently only the clean structures are featurized to learn the binding energies that are provided vialabels.Moving forward there are a few potential options that could generalize this:
ase.Atomse.g.
[{'substrate': ase.Atoms, 'adsorbed': OUTPUT_DICT_FROM_GENERATE_RXN_STRUCTURES}, {…}]or
[{'substrate': ase.Atoms, 'adsorbed': ase.Atoms}, {…}]ase.Atomsobjects for both the adsorbed and clean structures (as well as user specified reference states) rather than as a separately suppliednp.ndarray. This could then be placed within a correspondingadsorbeddictionary to be pulled as needed