Features

Features are numerical vectors representing a given structure or atom/atom-centered environment in an abstract n-dimensional space. They are also sometimes called descriptors, representations, embedding, etc.

Features can be computed with some analytical expression (for example SOAP power spectrum, atom-centered symmetry functions, …), or learned internally by a neural-network or a similar architecture.

In metatensor atomistic models, they are associated with the "features" key in the model outputs, and must adhere to the following metadata:

Metadata for features output

Metadata

Names

Description

keys

"_"

the features keys must have a single dimension named "_", with a single entry set to 0. The feature is always a metatensor.torch.TensorMap with a single block.

samples

["system", "atom"] or ["system"]

the samples should be named ["system", "atom"] for per-atom outputs; or ["system"] for global outputs.

The "system" index should always be 0, and the "atom" index should be the index of the atom (between 0 and the total number of atoms). If selected_atoms is provided, then only the selected atoms for each system should be part of the samples.

components

the features must not have any components.

properties

the features can have arbitrary properties.

Note

Features are typically handled without a unit, so the "unit" field of metatensor.torch.atomistic.ModelOutput() is mainly left empty.

The following simulation engines can use the "features" output:

Features gradients

As for the energy, features are typically used with automatic gradient differentiation. Explicit gradients could be allowed if you have a use case for them, but are currently not until they are fully specified.