Skip to content

Conversation

@anyangml
Copy link
Collaborator

@anyangml anyangml commented Dec 4, 2025

Currently, when running dptest on atomic polar. The order of atoms for coord and label are misaligned.
This is a result of type_sel = None for coord, but not None for label.
I tried to set it to None for label as well, but it broke TF compatibility.
So the easiest hack I can think of is to add a check while loading data.

Summary by CodeRabbit

  • Bug Fixes

    • Improved accuracy in data loading for subset atom selection scenarios
  • Style

    • Code formatting updates

✏️ Tip: You can customize this high-level summary in your review settings.

Copilot AI review requested due to automatic review settings December 4, 2025 06:43
@github-actions github-actions bot added the Python label Dec 4, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 4, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Walkthrough

Two small edits: a blank-line formatting change in a test entrypoint, and a conditional refinement in the data loader that restricts the all-atom branch to cases where a type selection is provided and the selected atom count differs from the total.

Changes

Cohort / File(s) Summary
Formatting
deepmd/entrypoints/test.py
Inserted a blank line inside test_dipole after the type_sel argument block (no functional change).
Data Loading Logic
deepmd/utils/data.py
In _load_data, adjusted the all-atom PT handling condition: require both type_sel is provided AND natoms_sel != natoms so full-atom reshaping is preserved for non-subset cases.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Suggested reviewers

  • iProzd
  • wanghan-iapcm
  • njzjz
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Fix: dptest label mismatch' directly reflects the main issue being addressed - a label alignment problem in dptest when running on atomic polar data. It matches the PR's primary objective and the code changes which add logic to handle the type_sel mismatch.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
deepmd/entrypoints/test.py (2)

1137-1137: Consider removing commented code rather than keeping it.

While commenting out the type_sel argument appears intentional (likely to fix the label mismatch), keeping commented code reduces readability. If this argument is no longer needed, remove the comment entirely.

Apply this diff:

-        # type_sel=dp.get_sel_type(),

1278-1278: Consider removing commented code rather than keeping it.

Similar to the change in test_polar, this commented line should be removed entirely if the type_sel argument is no longer needed.

Apply this diff:

-        # type_sel=dp.get_sel_type(),
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2d5fa3c and 1eb047f.

📒 Files selected for processing (4)
  • deepmd/dpmodel/infer/deep_eval.py (1 hunks)
  • deepmd/entrypoints/test.py (2 hunks)
  • deepmd/jax/infer/deep_eval.py (1 hunks)
  • deepmd/pt/infer/deep_eval.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: njzjz
Repo: deepmodeling/deepmd-kit PR: 4144
File: source/api_cc/tests/test_deeppot_dpa_pt.cc:166-246
Timestamp: 2024-09-19T04:25:12.408Z
Learning: Refactoring between test classes `TestInferDeepPotDpaPt` and `TestInferDeepPotDpaPtNopbc` is addressed in PR #3905.
Learnt from: njzjz
Repo: deepmodeling/deepmd-kit PR: 4144
File: source/api_cc/tests/test_deeppot_dpa_pt.cc:166-246
Timestamp: 2024-10-08T15:32:11.479Z
Learning: Refactoring between test classes `TestInferDeepPotDpaPt` and `TestInferDeepPotDpaPtNopbc` is addressed in PR #3905.
🧬 Code graph analysis (2)
deepmd/jax/infer/deep_eval.py (4)
deepmd/jax/jax2tf/tfmodel.py (1)
  • model_output_type (238-240)
deepmd/jax/jax2tf/serialization.py (1)
  • model_output_type (285-286)
deepmd/jax/model/hlo.py (1)
  • model_output_type (234-236)
deepmd/dpmodel/model/make_model.py (1)
  • model_output_type (184-193)
deepmd/dpmodel/infer/deep_eval.py (4)
deepmd/dpmodel/model/base_model.py (1)
  • model_output_type (99-100)
deepmd/dpmodel/model/make_model.py (1)
  • model_output_type (184-193)
deepmd/dpmodel/model/spin_model.py (1)
  • model_output_type (271-273)
deepmd/pt/model/model/make_model.py (1)
  • model_output_type (90-101)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (31)
  • GitHub Check: CodeQL analysis (python)
  • GitHub Check: Agent
  • GitHub Check: Build C library (2.18, libdeepmd_c.tar.gz)
  • GitHub Check: Build C library (2.14, >=2.5.0,<2.15, libdeepmd_c_cu11.tar.gz)
  • GitHub Check: Test Python (2, 3.12)
  • GitHub Check: Test Python (6, 3.9)
  • GitHub Check: Test Python (6, 3.12)
  • GitHub Check: Build wheels for cp310-manylinux_aarch64
  • GitHub Check: Test Python (2, 3.9)
  • GitHub Check: Test Python (4, 3.12)
  • GitHub Check: Test Python (3, 3.12)
  • GitHub Check: Test Python (3, 3.9)
  • GitHub Check: Test Python (5, 3.9)
  • GitHub Check: Analyze (python)
  • GitHub Check: Test Python (4, 3.9)
  • GitHub Check: Build wheels for cp311-manylinux_x86_64
  • GitHub Check: Build wheels for cp311-macosx_x86_64
  • GitHub Check: Test Python (5, 3.12)
  • GitHub Check: Build wheels for cp311-manylinux_x86_64
  • GitHub Check: Build wheels for cp311-macosx_arm64
  • GitHub Check: Analyze (c-cpp)
  • GitHub Check: Test Python (1, 3.12)
  • GitHub Check: Build wheels for cp311-win_amd64
  • GitHub Check: Build C++ (clang, clang)
  • GitHub Check: Build C++ (cuda, cuda)
  • GitHub Check: Test Python (1, 3.9)
  • GitHub Check: Build C++ (rocm, rocm)
  • GitHub Check: Build C++ (cuda120, cuda)
  • GitHub Check: Build C++ (cpu, cpu)
  • GitHub Check: Test C++ (false)
  • GitHub Check: Test C++ (true)
🔇 Additional comments (3)
deepmd/pt/infer/deep_eval.py (1)

251-251: LGTM! Broadening polar model recognition to include "polarizability".

The change correctly extends the model type detection to recognize models outputting "polarizability" as polar models alongside the existing "polar" check. This is consistent with the PR objective and aligns with similar changes across all three backend implementations.

deepmd/jax/infer/deep_eval.py (1)

161-161: LGTM! Consistent with other backends.

The change correctly extends polar model recognition to include "polarizability", maintaining consistency with the pt and dpmodel backend implementations.

deepmd/dpmodel/infer/deep_eval.py (1)

140-140: LGTM! Consistent implementation across all backends.

The change correctly extends the polar model recognition to include "polarizability", completing the uniform implementation across dpmodel, jax, and pt backends.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a label mismatch issue in dptest for polarizability models. The core issue was that the model output definition uses "polarizability" as the key, but the model type detection code was only checking for "polar" in the model output type, causing polarizability models to not be recognized correctly.

  • Added "polarizability" in model_output_type check to properly detect polar models across PT, JAX, and dpmodel backends
  • Removed type_sel parameter from polar and dipole test functions as it's not needed for these model types (data is global, not per-type)

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
deepmd/pt/infer/deep_eval.py Added check for "polarizability" in model_output_type to correctly identify polar models
deepmd/jax/infer/deep_eval.py Added check for "polarizability" in model_output_type to correctly identify polar models
deepmd/dpmodel/infer/deep_eval.py Added check for "polarizability" in model_output_type to correctly identify polar models
deepmd/entrypoints/test.py Commented out type_sel parameter in test_polar and test_dipole functions as it's not applicable to these global properties

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1eb047f and 7c82e85.

📒 Files selected for processing (2)
  • deepmd/entrypoints/test.py (2 hunks)
  • deepmd/utils/data.py (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: njzjz
Repo: deepmodeling/deepmd-kit PR: 4144
File: source/api_cc/tests/test_deeppot_dpa_pt.cc:166-246
Timestamp: 2024-09-19T04:25:12.408Z
Learning: Refactoring between test classes `TestInferDeepPotDpaPt` and `TestInferDeepPotDpaPtNopbc` is addressed in PR #3905.
Learnt from: njzjz
Repo: deepmodeling/deepmd-kit PR: 4144
File: source/api_cc/tests/test_deeppot_dpa_pt.cc:166-246
Timestamp: 2024-10-08T15:32:11.479Z
Learning: Refactoring between test classes `TestInferDeepPotDpaPt` and `TestInferDeepPotDpaPtNopbc` is addressed in PR #3905.
🧬 Code graph analysis (1)
deepmd/entrypoints/test.py (2)
deepmd/utils/data.py (1)
  • add (137-190)
deepmd/utils/data_system.py (1)
  • add (344-397)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (29)
  • GitHub Check: Test Python (4, 3.9)
  • GitHub Check: Test Python (5, 3.12)
  • GitHub Check: Test Python (6, 3.9)
  • GitHub Check: Test Python (4, 3.12)
  • GitHub Check: Test Python (6, 3.12)
  • GitHub Check: Test Python (5, 3.9)
  • GitHub Check: Test Python (2, 3.12)
  • GitHub Check: Test Python (3, 3.12)
  • GitHub Check: Test Python (3, 3.9)
  • GitHub Check: Test Python (1, 3.9)
  • GitHub Check: Test Python (2, 3.9)
  • GitHub Check: Test Python (1, 3.12)
  • GitHub Check: Test C++ (false)
  • GitHub Check: Test C++ (true)
  • GitHub Check: Build wheels for cp310-manylinux_aarch64
  • GitHub Check: Build wheels for cp311-win_amd64
  • GitHub Check: Build wheels for cp311-macosx_arm64
  • GitHub Check: Build wheels for cp311-manylinux_x86_64
  • GitHub Check: Build C++ (rocm, rocm)
  • GitHub Check: Build wheels for cp311-manylinux_x86_64
  • GitHub Check: Build C library (2.14, >=2.5.0,<2.15, libdeepmd_c_cu11.tar.gz)
  • GitHub Check: Build C++ (clang, clang)
  • GitHub Check: Build C++ (cpu, cpu)
  • GitHub Check: Analyze (c-cpp)
  • GitHub Check: Build C++ (cuda120, cuda)
  • GitHub Check: Build C library (2.18, libdeepmd_c.tar.gz)
  • GitHub Check: Build wheels for cp311-macosx_x86_64
  • GitHub Check: Build C++ (cuda, cuda)
  • GitHub Check: Analyze (python)
🔇 Additional comments (1)
deepmd/utils/data.py (1)

640-672: Subset-only type_sel handling in _load_data looks correct

Gating the atomic+type_sel branch on natoms_sel != natoms confines the reshape/selection logic to true subsets and avoids unnecessarily reprocessing the “all types selected” case. This matches the semantics implied by type_sel and makes the behavior less surprising; the rest of the branch and error handling remain consistent.

@anyangml anyangml requested a review from iProzd December 4, 2025 09:11
@anyangml anyangml requested a review from njzjz December 4, 2025 09:17
@codecov
Copy link

codecov bot commented Dec 4, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.94%. Comparing base (501adb8) to head (1834708).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #5082   +/-   ##
=======================================
  Coverage   81.94%   81.94%           
=======================================
  Files         714      714           
  Lines       73413    73412    -1     
  Branches     3616     3617    +1     
=======================================
  Hits        60155    60155           
+ Misses      12096    12094    -2     
- Partials     1162     1163    +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Member

@njzjz njzjz Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have already had an option in this function, output_natoms_for_type_sel. You could set it to true for your case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants