Skip to content

Commit e74b4bd

Browse files
committed
Merge branch 'codex/update-test_ener-to-handle-masked-forces-tkzu2y' into codex/update-test_ener-to-handle-masked-forces
2 parents 2a4dedc + 761374e commit e74b4bd

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

deepmd/entrypoints/test.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,18 +419,28 @@ def test_ener(
419419
mae_e = mae(diff_e)
420420
rmse_e = rmse(diff_e)
421421
diff_f = force - test_data["force"][:numb_test]
422-
mae_f = mae(diff_f)
423-
rmse_f = rmse(diff_f)
424-
size_f = force.size
425422
if find_atom_pref == 1:
426423
atom_weight = test_data["atom_pref"][:numb_test]
424+
mask = atom_weight != 0
425+
masked_diff = diff_f[mask]
426+
if masked_diff.size > 0:
427+
mae_f = np.mean(np.abs(masked_diff))
428+
rmse_f = np.sqrt(np.mean(masked_diff * masked_diff))
429+
else:
430+
mae_f = 0.0
431+
rmse_f = 0.0
432+
size_f = mask.sum()
427433
weight_sum = np.sum(atom_weight)
428434
if weight_sum > 0:
429435
mae_fw = np.sum(np.abs(diff_f) * atom_weight) / weight_sum
430436
rmse_fw = np.sqrt(np.sum(diff_f * diff_f * atom_weight) / weight_sum)
431437
else:
432438
mae_fw = 0.0
433439
rmse_fw = 0.0
440+
else:
441+
mae_f = mae(diff_f)
442+
rmse_f = rmse(diff_f)
443+
size_f = diff_f.size
434444
diff_v = virial - test_data["virial"][:numb_test]
435445
mae_v = mae(diff_v)
436446
rmse_v = rmse(diff_v)

source/tests/pt/test_dp_test.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,12 @@ def _prepare_weighted_system(self) -> str:
171171
shutil.copytree(src, tmp_dir, dirs_exist_ok=True)
172172
set_dir = Path(tmp_dir) / "set.000"
173173
forces = np.load(set_dir / "force.npy")
174+
forces[0, :3] += 1.0
174175
forces[0, -3:] += 10.0
175176
np.save(set_dir / "force.npy", forces)
176177
natoms = forces.shape[1] // 3
177178
atom_pref = np.ones((forces.shape[0], natoms), dtype=forces.dtype)
179+
atom_pref[:, 0] = 2.0
178180
atom_pref[:, -1] = 0.0
179181
np.save(set_dir / "atom_pref.npy", atom_pref)
180182
return tmp_dir
@@ -221,16 +223,17 @@ def test_force_weight(self) -> None:
221223
force_true = test_data["force"][:1]
222224
weight = test_data["atom_pref"][:1]
223225
diff = force_pred - force_true
224-
diff_w = diff * weight
226+
mask = weight != 0
227+
masked_diff = diff[mask]
228+
mae_unweighted = np.sum(np.abs(masked_diff)) / mask.sum()
229+
rmse_unweighted = np.sqrt(np.sum(masked_diff * masked_diff) / mask.sum())
225230
denom = weight.sum()
226-
mae_expected = np.sum(np.abs(diff_w)) / denom
227-
rmse_expected = np.sqrt(np.sum(diff * diff * weight) / denom)
228-
mae_unweighted = np.sum(np.abs(diff)) / diff.size
229-
rmse_unweighted = np.sqrt(np.sum(diff * diff) / diff.size)
231+
mae_weighted = np.sum(np.abs(diff) * weight) / denom
232+
rmse_weighted = np.sqrt(np.sum(diff * diff * weight) / denom)
230233
np.testing.assert_allclose(err["mae_f"][0], mae_unweighted)
231234
np.testing.assert_allclose(err["rmse_f"][0], rmse_unweighted)
232-
np.testing.assert_allclose(err["mae_fw"][0], mae_expected)
233-
np.testing.assert_allclose(err["rmse_fw"][0], rmse_expected)
235+
np.testing.assert_allclose(err["mae_fw"][0], mae_weighted)
236+
np.testing.assert_allclose(err["rmse_fw"][0], rmse_weighted)
234237
os.unlink(tmp_model.name)
235238

236239
def tearDown(self) -> None:

0 commit comments

Comments
 (0)