Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions python/featomic/examples/keys-selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@

selection = Labels(
names=["center_type", "neighbor_1_type", "neighbor_2_type"],
values=np.array([[1, 1, 1], [4, 4, 4]], dtype=np.int32),
values=np.array([[1, 1, 1], [4, 4, 4]]),
)
selected_descriptor = calculator.compute(frames, selected_keys=selection)

Expand Down Expand Up @@ -104,7 +104,7 @@

keys = Labels(
names=["center_type", "neighbor_1_type", "neighbor_2_type"],
values=np.array([[1, 1, 1], [8, 8, 8]], dtype=np.int32),
values=np.array([[1, 1, 1], [8, 8, 8]]),
)

selected_properties = TensorMap(keys, blocks)
Expand All @@ -116,7 +116,7 @@

selected_keys = Labels(
names=["center_type", "neighbor_1_type", "neighbor_2_type"],
values=np.array([[1, 1, 1]], dtype=np.int32),
values=np.array([[1, 1, 1]]),
)

descriptor = calculator.compute(
Expand Down
4 changes: 2 additions & 2 deletions python/featomic/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ classifiers = [
]

dependencies = [
"metatensor-core >=0.1.15,<0.2.0",
"metatensor-operations >=0.3.0,<0.4.0",
"metatensor-core >=0.1.15,<0.2",
"metatensor-operations >=0.4.0,<0.5",
"wigners",
]

Expand Down
4 changes: 2 additions & 2 deletions python/featomic/tests/calculators/hypers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List

import metatensor
import metatensor as mts
import pytest

import featomic
Expand Down Expand Up @@ -128,7 +128,7 @@ def test_hypers_classes():
)

system = SystemForTests()
metatensor.equal_raise(with_dict.compute(system), with_classes.compute(system))
mts.equal_raise(with_dict.compute(system), with_classes.compute(system))


def test_hypers_custom_classes_errors():
Expand Down
60 changes: 12 additions & 48 deletions python/featomic/tests/calculators/keys_selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,7 @@ def test_selection_existing():
assert descriptor.keys.values.tolist() == [[1], [8]]

# Manually select the keys
selected_keys = Labels(
names=["center_type"],
values=np.array([[1]], dtype=np.int32),
)
selected_keys = Labels(names=["center_type"], values=np.array([[1]]))
descriptor = calculator.compute(system, selected_keys=selected_keys)

assert len(descriptor.keys) == 1
Expand All @@ -73,10 +70,7 @@ def test_selection_partial():
)

# Manually select the keys
selected_keys = Labels(
names=["center_type"],
values=np.array([[1]], dtype=np.int32),
)
selected_keys = Labels(names=["center_type"], values=np.array([[1]]))
descriptor = calculator.compute(system, selected_keys=selected_keys)

assert len(descriptor.keys) == 4
Expand All @@ -99,10 +93,7 @@ def test_select_key_not_in_systems():
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

# Manually select the keys
selected_keys = Labels(
names=["center_type"],
values=np.array([[4]], dtype=np.int32),
)
selected_keys = Labels(names=["center_type"], values=np.array([[4]]))
descriptor = calculator.compute(system, selected_keys=selected_keys)

C_block = descriptor.block(center_type=4)
Expand All @@ -113,26 +104,14 @@ def test_predefined_selection():
system = SystemForTests()
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

selected_keys = Labels(
names=["center_type"],
values=np.array([[1]], dtype=np.int32),
)
selected_keys = Labels(names=["center_type"], values=np.array([[1]]))

keys = Labels(
names=["center_type"],
values=np.array([[1], [8]], dtype=np.int32),
)
keys = Labels(names=["center_type"], values=np.array([[1], [8]]))

# selection from TensorMap
selected = [
Labels(
names=["index_delta", "x_y_z"],
values=np.array([[1, 0]], dtype=np.int32),
),
Labels(
names=["index_delta", "x_y_z"],
values=np.array([[0, 1]], dtype=np.int32),
),
Labels(names=["index_delta", "x_y_z"], values=np.array([[1, 0]])),
Labels(names=["index_delta", "x_y_z"], values=np.array([[0, 1]])),
]
selected_properties = _tensor_map_selection("properties", keys, selected)

Expand All @@ -153,10 +132,7 @@ def test_name_errors():
system = SystemForTests()
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

selected_keys = Labels(
names=["bad_name"],
values=np.array([0, 3, 1], dtype=np.int32).reshape(3, 1),
)
selected_keys = Labels(names=["bad_name"], values=np.array([[0], [3], [1]]))

message = (
"invalid parameter: 'bad_name' in keys selection is not "
Expand All @@ -182,25 +158,13 @@ def test_key_errors():
# in the case where both selected_properties/selected_samples and
# selected_keys are given, the selected keys must be in the keys of the
# predefined tensor_map
selected_keys = Labels(
names=["center_type"],
values=np.array([[4]], dtype=np.int32),
)
selected_keys = Labels(names=["center_type"], values=np.array([[4]]))

keys = Labels(
names=["center_type"],
values=np.array([[1], [8]], dtype=np.int32),
)
keys = Labels(names=["center_type"], values=np.array([[1], [8]]))

selected = [
Labels(
names=["index_delta", "x_y_z"],
values=np.array([[1, 0]], dtype=np.int32),
),
Labels(
names=["index_delta", "x_y_z"],
values=np.array([[0, 1]], dtype=np.int32),
),
Labels(names=["index_delta", "x_y_z"], values=np.array([[1, 0]])),
Labels(names=["index_delta", "x_y_z"], values=np.array([[0, 1]])),
]
selected_properties = _tensor_map_selection("properties", keys, selected)

Expand Down
27 changes: 7 additions & 20 deletions python/featomic/tests/calculators/properties_selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def test_selection():
# Manually constructing the selected properties
selected_properties = Labels(
names=["index_delta", "x_y_z"],
values=np.array([[1, 0]], dtype=np.int32),
values=np.array([[1, 0]]),
)
descriptor = calculator.compute(
system, use_native_system=False, selected_properties=selected_properties
Expand All @@ -65,7 +65,7 @@ def test_subset_variables():
# Only a subset of the variables defined
selected_properties = Labels(
names=["index_delta"],
values=np.array([[1]], dtype=np.int32),
values=np.array([[1]]),
)
descriptor = calculator.compute(
system, use_native_system=False, selected_properties=selected_properties
Expand All @@ -88,8 +88,7 @@ def test_empty_selection():

# empty selected features
selected_properties = Labels(
names=["index_delta", "x_y_z"],
values=np.array([], dtype=np.int32).reshape(0, 2),
names=["index_delta", "x_y_z"], values=np.empty((0, 2), dtype=np.int32)
)
descriptor = calculator.compute(
system, use_native_system=False, selected_properties=selected_properties
Expand All @@ -106,21 +105,12 @@ def test_predefined_selection():
system = SystemForTests()
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

keys = Labels(
names=["center_type"],
values=np.array([[1], [8]], dtype=np.int32),
)
keys = Labels(names=["center_type"], values=np.array([[1], [8]]))

# selection from TensorMap
selected = [
Labels(
names=["index_delta", "x_y_z"],
values=np.array([[1, 0]], dtype=np.int32),
),
Labels(
names=["index_delta", "x_y_z"],
values=np.array([[0, 1]], dtype=np.int32),
),
Labels(names=["index_delta", "x_y_z"], values=np.array([[1, 0]])),
Labels(names=["index_delta", "x_y_z"], values=np.array([[0, 1]])),
]
selected_properties = _tensor_map_selection("properties", keys, selected)

Expand All @@ -143,10 +133,7 @@ def test_errors():
system = SystemForTests()
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

selected_properties = Labels(
names=["bad_name"],
values=np.array([0, 3, 1], dtype=np.int32).reshape(3, 1),
)
selected_properties = Labels(names=["bad_name"], values=np.array([[0], [3], [1]]))

message = (
"invalid parameter: 'bad_name' in properties selection is not "
Expand Down
33 changes: 7 additions & 26 deletions python/featomic/tests/calculators/sample_selection.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ def test_selection():

# Manually constructing the selected samples
selected_samples = Labels(
names=["system", "atom"],
values=np.array([(0, 0), (0, 3), (0, 1)], dtype=np.int32),
names=["system", "atom"], values=np.array([[0, 0], [0, 3], [0, 1]])
)
descriptor = calculator.compute(
system, use_native_system=False, selected_samples=selected_samples
Expand All @@ -62,10 +61,7 @@ def test_subset_variables():
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

# Only a subset of the variables defined
selected_samples = Labels(
names=["atom"],
values=np.array([0, 3, 1], dtype=np.int32).reshape(3, 1),
)
selected_samples = Labels(names=["atom"], values=np.array([0, 3, 1]).reshape(3, 1))
descriptor = calculator.compute(
system, use_native_system=False, selected_samples=selected_samples
)
Expand All @@ -85,10 +81,7 @@ def test_empty_selection():
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

# empty selected samples
selected_samples = Labels(
names=["atom"],
values=np.empty((0, 1), dtype=np.int32),
)
selected_samples = Labels(names=["atom"], values=np.empty((0, 1), dtype=np.int32))
descriptor = calculator.compute(
system, use_native_system=False, selected_samples=selected_samples
)
Expand All @@ -104,21 +97,12 @@ def test_predefined_selection():
system = SystemForTests()
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

keys = Labels(
names=["center_type"],
values=np.array([[1], [8]], dtype=np.int32),
)
keys = Labels(names=["center_type"], values=np.array([[1], [8]]))

# selection from TensorMap
selected = [
Labels(
names=["system", "atom"],
values=np.array([[0, 1]], dtype=np.int32),
),
Labels(
names=["system", "atom"],
values=np.array([[0, 3]], dtype=np.int32),
),
Labels(names=["system", "atom"], values=np.array([[0, 1]])),
Labels(names=["system", "atom"], values=np.array([[0, 3]])),
]
selected_samples = _tensor_map_selection("samples", keys, selected)

Expand All @@ -139,10 +123,7 @@ def test_errors():
system = SystemForTests()
calculator = DummyCalculator(cutoff=3.2, delta=2, name="")

samples = Labels(
names=["bad_name"],
values=np.array([0, 3, 1], dtype=np.int32).reshape(3, 1),
)
samples = Labels(names=["bad_name"], values=np.array([0, 3, 1]).reshape(3, 1))

message = (
"invalid parameter: 'bad_name' in samples selection is not part "
Expand Down
Loading
Loading