Changelog¶
All notable changes to metatensor-torch are documented here, following the keep a changelog format. This project follows Semantic Versioning.
Unreleased¶
Version 0.8.1 - 2025-09-24¶
Fixed¶
The custom
metatensor_torch::Modulenow properly handles nested containers (list, dict, tuples) with empty containers inside (#978)
Version 0.8.0 - 2025-08-22¶
Removed¶
The
metatensor.torch.atomisticpython module now lives in themetatomic-torchpackage (https://github.com/metatensor/metatomic); as well as the corresponding C++ code (#include <metatensor/torch/atomistic.hpp>).
Added¶
Added support for PyTorch v2.8
A custom C++ class
metatensor_torch::Modulethat should be used instead oftorch::jit::Modulewhen the modules contains metatensor data (Labels, TensorBlock, TensorMap) as attributes. This class will properly handle moving this data to the correct dtype and device when callingmodule.to(). The corresponding Python class is defined inmetatensor-learn.There is now an
assume_uniqueflag in theLabelsconstructor. This allows bypassing a check when the user can ensure beforehand that all entries will be unique.
Changed¶
TensorMap.to,TensorBlock.to, andLabels.tonow accept anon_blockingargument, with the same meaning as intorch.Tensor.to.metatensor.torch.save,metatensor.torch.load,metatensor.torch.load_blockandmetatensor.torch.load_labelscan now takepathlib.Pathobjects as inputs, as well as pre-opened files. When using these functions from TorchScript, onlystrarguments are supported.
Version 0.7.6 - 2025-04-25¶
Added¶
Added support for PyTorch v2.7
Changed¶
The lowest supported version of PyTorch was increased from v1.12 to v2.1
Version 0.7.5 - 2025-04-10¶
Added¶
Labels.differenceandLabels.difference_and_mappingfor finding the set difference between twoLabelsenergy_uncertainty,non_conservative_forcesandnon_conservative_stressare now possible outputs for atomistic modelsThe ASE calculator can now use
non_conservative_forcesandnon_conservative_stressoutputs, which are selected with thenon_conservativeflag
Version 0.7.4 - 2025-03-28¶
Added¶
Added
MetatensorCalculator.compute_energy()to provide batched calculation of energies, forces and stresses (#880).
Changed¶
MetatensorCalculator.run_model()now supports batching across multiplease.Atomsobjects (#879).
Version 0.7.3 - 2025-02-19¶
Changed¶
The
MetatensorCalculatorfor ASE now only computes the stress if the system is periodic in all directions
Version 0.7.2 - 2025-02-18¶
Fixed¶
Fixed a bug with the custom TorchScript extensions when using
featomic-torch
Version 0.7.1 - 2025-02-17¶
Changed¶
The default extension for file serialization is now
.mtsinstead of.npz
Added¶
Support for Python 3.13 and PyTorch 2.6
Version 0.7.0 - 2025-01-22¶
Changed¶
Custom data stored in
Systemis now stored asTensorMapinstead ofTensorBlock. This allow for more kinds of data to be stored.metatensor_torch::TorchLabelsis nowmetatensor_torch::Labels; and similarly formetatensor_torch::TensorBlockand similarly formetatensor_torch::TensorMap. We temporarily provide type aliases for backward compatibilty.
Added¶
Systemcan now be serialized and saved to a file usingmetatensor.torch.atomistic.saveandmetatensor.torch.atomistic.load_system. For the initial implementation, these functions are only accessible from Python.
Version 0.6.3 - 2024-12-11¶
Fixed¶
Fixed an issue with Python wheels building, where the underlying C++ library would get a different version from the Python library and fail to load.
Version 0.6.2 - 2024-12-11¶
Fixed¶
Selecting from empty
Labelsno longer fails (#792)Models are exported with
requires_grad=Falsefor all parameters, which should make them faster when using autograd to compute forces and stress (#802)
Version 0.6.1 - 2024-11-7¶
Fixed¶
Added missing data to
NeighborListOptionsserialization (#784)
Changed¶
load_atomistic_modelnow returns aMetatensorAtomisticModeinstead of a raw TorchScript model. This allows to reload, modify and re-export a model (#783).
Version 0.6.0 - 2024-10-29¶
Added¶
a
is_atomistic_model(Python only) function to check if an loaded module is an metatensor atomistic model (#697, #766)
Changed¶
the
Systemclass now supports boundary conditions along some axes but not others. This is implemented via a newpbcattribute. Any non-periodic dimension in aSystemmust have the corresponding cell vector set to zero.NeighborListOptionscan now requeststrictor non-strict neighbor lists (#770)
Version 0.5.5 - 2024-09-03¶
Added¶
a
"features"standard output for atomistic models (#718)
Fixed¶
the Python wheels request the right versions of torch in their metadata (#724)
Version 0.5.4 - 2024-08-28¶
Added¶
read_model_metadatato load only theModelMetadatafrom an exported atomistic model without having to load the whole model.Users can now store arbitrary additional metadata in
ModelMetadata.extraAdded
Labels.selectfunction to sub-select entries in labelsAdded support for serialization of TensorBlock with
TensorBlock::load,TensorBlock::load_buffer,TensorBlock::save,TensorBlock::save_bufferand the corresponding functions inmetatensor.torch.
Version 0.5.3 - 2024-07-15¶
Changed¶
MetatensorAtomisticModel.save()always saves models on the CPU.We now require Python >= 3.9
Fixed¶
Fixed a memory leak in
register_autograd_neighbors(#684)
Version 0.5.2 - 2024-06-21¶
Added¶
MetatensorAtomisticModel.save()to save a wrapped model to a file.TensorBlock.__len__andTensorBlock.shape, which return the length and shape of the values in the block respectively (#640)metatensor.torch.atomistic.ase_calculator.MetatensorCalculatorcan now usevesinfor faster neighbor list calculations (#659)When running atomistic models in the PyTorch profiler, different sections of the code now have meaningful names
Deprecated¶
MetatensorAtomisticModel.export()is deprecated in favor ofMetatensorAtomisticModel.save()
Fixed¶
metatensor.torch.atomistic.ase_calculator.MetatensorCalculatoruses the right device when computing stress/virial (#660)
Version 0.5.1 - 2024-05-14¶
Added¶
preprocessor macros containing the version number of metatensor-torch:
METATENSOR_TORCH_VERSION,METATENSOR_TORCH_VERSION_MAJOR,METATENSOR_TORCH_VERSION_MINOR, andMETATENSOR_TORCH_VERSION_PATCH.
Version 0.5.0 - 2024-05-02¶
Changed¶
We renamed
neighbors_listtoneighbor_listin all functions (#587)
metatensor-torch Python¶
Changed¶
The neighbor lists calculation in
MetatensorCalculator(ASE calculator based on metatensor models) is now a lot faster (#586)Multiple small improvements related to custom TorchScript extensions (#584)
There are reference output for neighbor list calculations, which should help writing interfaces to metatensor models in new simulation engines (#588)
The wheels for
metatensor-torchon PyPI now declare which versions of torch they are compatible with (#592)
Version 0.4.0 - 2024-04-11¶
metatensor-torch C++¶
Added¶
ModelCapabilities::dtype, used by the model to communicate the dtype it wants to use for inputs and outputs.The
load_model_extensions()function to facilitate loading a model using TorchScript extensions.
Changed¶
System::add_datanow has anoverrideparameter to replace custom data with a new value.
metatensor-torch Python¶
Changed¶
We now release wheels compatible with multiple torch versions on PyPI, removing the need to compile C++ code when installing this package.
Added¶
ModelCapabilities.dtype, used by the model to communicate the dtype it wants to use for inputs and outputs.The
devicethat should be used by a model inside the ASE’sMetatensorCalculatorcan now be specified by the user.The
load_model_extensions()andload_atomistic_modelfunctions to facilitate loading a model using TorchScript extensions
Version 0.3.0 - 2024-03-01¶
metatensor-torch C++¶
Added¶
ModelMetadatato record metadata about a specific model such as it’s name, authors, etc.Added
interaction_rangeandsupported_devicestoModelCapabilities
Changed¶
System::specieshas been renamed toSystem::types.
metatensor-torch Python¶
Added¶
ModelMetadatato record metadata about a specific model such as it’s name, authors, etc.Added
interaction_rangeandsupported_devicestoModelCapabilities
Changed¶
System.specieshas been renamed toSystem.types.
Version 0.2.1 - 2024-01-26¶
metatensor-torch C++¶
Added¶
Offer serialization functionality as member functions (i.e.
TensorMap::load) in addition to the existing free standing functions (i.e.metatensor_torch::load) (#453)In-memory serialization with
TensorMap::save_buffer,TensorMap::load_buffer, and the respective free standing functions (#455)Serialization of Labels, with the same API as
TensorMap(#455)
metatensor-torch Python¶
Added¶
Offer serialization functionality as member functions (i.e.
TensorMap.load) in addition to the existing free standing functions (i.e.metatensor.torch.load) (#453)In-memory serialization with
TensorMap.save_buffer,TensorMap.load_buffer, and the respective free standing functions (#455)Serialization of Labels, with the same API as
TensorMap(#455)
Version 0.2.0 - 2024-01-08¶
metatensor-torch C++¶
Added¶
New classes specifically tailored for atomistic models (#405):
Systemdefines the input of a model;NeighborsListOptionsallow a model to request a specific neighbors list;ModelRunOptions,ModelOutputandModelCapabilitiesallow to statically describe capabilities of a model, and request specific outputs from it.
TensorBlock::to,TensorMap::to, andSystem::toto change the device or dtype of torch Tensor stored by metatensorLabels::device,TensorBlock::deviceandTensorMap::device; as well asTensorMap::scalar_type, andTensorBlock::scalar_typeto query the current device and scalar type/dtype used by the data.metatensor_torch::versionfunction, returning the version of the code as a string.
Fixed¶
We now check that all tensors in a
TensorBlock/TensorMaphave the same dtype and device (#414)keys_to_properties,keys_to_samplesandcomponents_to_propertiesnow keep the different Labels on the same device (#411)
metatensor-torch Python¶
Added¶
New classes specifically tailored for atomistic models (#405):
same classes as the C++ interfaces, in
metatensor.torch.atomisticMetatensorAtomisticModelas a way to wrap user-definedtorch.nn.Moduleand export them in a unified way, handling unit conversions and metadata checks.
ASE calculator based on
MetatensorAtomisticModelinmetatensor.torch.atomistic.ase_calculator. This allow using arbitrary user-defined models to run simulations with ASE.TensorBlock.to,TensorMap.toandSystem.toto change the device or dtype of torch Tensor stored by metatensorLabels.device,TensorBlock.deviceandTensorMap.device; as well asTensorMap.dtype, andTensorBlock.dtypeto query the current device and dtype used by the data.
Version 0.1.0 - 2023-10-11¶
metatensor-torch C++¶
Added¶
TorchScript bindings to all metatensor-core class:
Labels,LabelsEntry,TensorBlock, andTensorMap;Implementation of
mts_array_t/metatensor::DataArrayBasefortorch::Tensor;
metatensor-torch Python¶
Added¶
Expose TorchScript classes to Python;
Expose all functions from
metatensor-operationsas TorchScript compatible code;