equal_metadata#
- metatensor.equal_metadata(tensor_1: TensorMap, tensor_2: TensorMap, check: List[str] | str = 'all') bool[source]#
Checks if two
TensorMapobjects have the same metadata, returning a bool.The equivalence of the keys of the two
TensorMapobjects is always checked.If
checkis'all'(the default), all metadata (i.e. the samples, components, and properties of each block) is checked to contain the same values in the same order. Passingcheckas a list of strings will only check the specified metadata. Allowed values to pass are'samples','components', and'properties'.- Parameters:
- Returns:
True if the metadata of the two
TensorMapobjects are equal, False otherwise.- Return type:
Examples#
>>> import numpy as np >>> import metatensor >>> from metatensor import Labels, TensorBlock, TensorMap >>> tensor_1 = TensorMap( ... keys=Labels( ... names=["key_1", "key_2"], ... values=np.array([[1, 0], [2, 2]]), ... ), ... blocks=[ ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_1", "p_2"], np.array([[0, 1]])), ... ), ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_1", "p_2"], np.array([[0, 1]])), ... ), ... ], ... ) >>> tensor_2 = TensorMap( ... keys=Labels( ... names=["key_1", "key_2"], ... values=np.array([[1, 0], [2, 2]]), ... ), ... blocks=[ ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_3", "p_4"], np.array([[0, 1]])), ... ), ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_3", "p_4"], np.array([[0, 1]])), ... ), ... ], ... ) >>> metatensor.equal_metadata(tensor_1, tensor_2) False >>> metatensor.equal_metadata( ... tensor_1, ... tensor_2, ... check=("samples", "components"), ... ) True
- metatensor.equal_metadata_block(block_1: TensorBlock, block_2: TensorBlock, check: List[str] | str = 'all') bool[source]#
Checks if two
TensorBlockobjects have the same metadata, returning a bool.If
checkis'all'(the default), all metadata (i.e. the samples, components, and properties of each block) is checked to contain the same values in the same order. Passingcheckas a list of strings will only check the specified metadata. Allowed values to pass are'samples','components', and'properties'.- Parameters:
block_1 (TensorBlock) – The first
TensorBlock.block_2 (TensorBlock) – The second
TensorBlockto compare to the first.check (List[str] | str) – Which parts of the metadata to check. This can be a list containing any of
'samples','components', and'properties'; or the string'all'to check everything. Defaults to'all'.
- Returns:
True if the metadata of the two
TensorBlockobjects are equal, False otherwise.- Return type:
Examples#
>>> import numpy as np >>> import metatensor >>> from metatensor import Labels, TensorBlock >>> block_1 = TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_1", "p_2"], np.array([[0, 1]])), ... ) >>> block_2 = TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_3", "p_4"], np.array([[0, 1]])), ... ) >>> equal_metadata_block(block_1, block_2) False >>> equal_metadata_block( ... block_1, ... block_2, ... check=("samples", "components"), ... ) True
- metatensor.equal_metadata_raise(tensor_1: TensorMap, tensor_2: TensorMap, check: List[str] | str = 'all')[source]#
Raise a
NotEqualErrorif twoTensorMaphave unequal metadata.The equivalence of the keys of the two
TensorMapobjects is always checked.If
checkis'all'(the default), all metadata (i.e. the samples, components, and properties of each block) is checked to contain the same values in the same order. Passingcheckas a list of strings will only check the specified metadata. Allowed values to pass are'samples','components', and'properties'.- Parameters:
- Raises:
NotEqualError – If the metadata is not the same.
Examples#
>>> import numpy as np >>> import metatensor >>> from metatensor import Labels, TensorBlock, TensorMap >>> tensor_1 = TensorMap( ... keys=Labels( ... names=["key_1", "key_2"], ... values=np.array([[1, 0], [2, 2]]), ... ), ... blocks=[ ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_1", "p_2"], np.array([[0, 1]])), ... ), ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_1", "p_2"], np.array([[0, 1]])), ... ), ... ], ... ) >>> tensor_2 = TensorMap( ... keys=Labels( ... names=["key_1", "key_2"], ... values=np.array([[1, 0], [2, 2]]), ... ), ... blocks=[ ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_3", "p_4"], np.array([[0, 1]])), ... ), ... TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_3", "p_4"], np.array([[0, 1]])), ... ), ... ], ... ) >>> metatensor.equal_metadata_raise(tensor_1, tensor_2) Traceback (most recent call last): ... metatensor.operations._utils.NotEqualError: inputs to 'equal_metadata_block_raise' should have the same properties, but they are not the same or not in the same order >>> metatensor.equal_metadata_raise( ... tensor_1, ... tensor_2, ... check=("samples", "components"), ... )
- metatensor.equal_metadata_block_raise(block_1: TensorBlock, block_2: TensorBlock, check: List[str] | str = 'all')[source]#
Raise a
NotEqualErrorif twoTensorBlockhave unequal metadata.If
checkis'all'(the default), all metadata (i.e. the samples, components, and properties of each block) is checked to contain the same values in the same order. Passingcheckas a list of strings will only check the specified metadata. Allowed values to pass are'samples','components', and'properties'.- Parameters:
block_1 (TensorBlock) – The first
TensorBlock.block_2 (TensorBlock) – The second
TensorBlockto compare to the first.check (List[str] | str) – A sequence of strings specifying which metadata of each block to check. If none, all metadata is checked. Allowed values are “samples”, “components”, and “properties”.
- Raises:
NotEqualError – If the metadata is not the same.
Examples#
>>> import numpy as np >>> import metatensor >>> from metatensor import Labels, TensorBlock >>> block_1 = TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_1", "p_2"], np.array([[0, 1]])), ... ) >>> block_2 = TensorBlock( ... values=np.full((4, 3, 1), 4.0), ... samples=Labels(["samples"], np.array([[0], [1], [4], [5]])), ... components=[Labels.range("components", 3)], ... properties=Labels(["p_3", "p_4"], np.array([[0, 1]])), ... ) >>> metatensor.equal_metadata_block_raise(block_1, block_2) Traceback (most recent call last): ... metatensor.operations._utils.NotEqualError: inputs to 'equal_metadata_block_raise' should have the same properties, but they are not the same or not in the same order >>> metatensor.equal_metadata_block_raise( ... block_1, block_2, check=("samples", "components") ... )