Intensive gap

Does minimum and maximum pooling to get a gap-like intensive property.

Intensive properties like the band gap can’t be computed as a sum of local contributions due to the simple fact that they do not scale with the size of the system. This hook implements a simple but powerful idea that was used in this work [1] to predict gaps from local contributions:

\[E_{gap} = \min_i c_i - \max_i v_i\]

i.e. it defines the gap as the difference between the maximum and minimum of two different local contributions \(c_i\) and \(v_i\). The minimum and maximum can be interpreted as the conduction and valence band edges or LUMO and HOMO energies, respectively.

The hook takes care of a global scalar output by requesting two separate local scalar quantities as inputs and performing the min/max pooling.

Installation

To install this hook along with the metatrain package, run:

pip install metatrain[hook-intensive_gap]

where the square brackets indicate that you want to install the optional dependencies required for the intensive_gap hook.

Hook hyperparameters

The default hyperparameters for this hook are:

intensive_gap:
  pooling:
    type: smoothmax
    alpha_bottom: 20.0
    alpha_top: -20.0
  inputs: {}

and here is the documentation for each hyperparameter:

Hypers.pooling: PoolingHypers = {'alpha_bottom': 20.0, 'alpha_top': -20.0, 'type': 'smoothmax'}
Hypers.inputs: HookInputs | list[HookInputs] = {}

References