Metatensor#

Metatensor is a specialized data storage format for all your atomistic machine learning needs, and more. Think numpy ndarray or pytorch Tensor equipped with extra metadata for atomic — and other particles — systems. The core of this library is written in Rust and we provide API for C, C++, and Python.

The main class of metatensor is the metatensor.TensorMap data structure, illustrated below. This class defines a block-sparse data format, where each block is stored using coordinate sparse storage. The schematic below represents a TensorMap made of multiple TensorBlocks, and the overall data format is explained further in the getting started section of this documentation. If you are using metatensor from Python, we additionally provide a collection of mathematical, logical and other utility operations to make working with TensorMaps more convenient.

_images/TensorMap.svg

Why metatensor#

With the creation of metatensor, we want to achieve three goals:

  1. provide an interchange format for the atomistic machine learning ecosystem, making different players in this ecosystem more interoperable with one another;

  2. make it easier and faster to prototype new machine learning representations, models and algorithms applied to atomistic modeling;

  3. run large scale simulations using machine learning interatomic potentials, with fully customizable potentials, directly defined by the researchers running the simulations.

For more information on these goals and how we are trying to fulfill them, please read the corresponding documentation page. Metatensor is still in the alpha phase of software development, so expect some rough corners and sharp edges.

Development team#

Metatensor is developed in the COSMO laboratory at EPFL, and made available to everyone under the BSD 3-clauses license. We welcome contributions from anyone, and we provide some developer documentation for newcomers.