Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Included more united tests to improve code coverage #253

Merged
merged 30 commits into from
May 6, 2024

Conversation

kenko911
Copy link
Contributor

@kenko911 kenko911 commented May 6, 2024

Summary

Included more united tests to improve code coverage

Checklist

  • Google format doc strings added. Check with ruff.
  • Type annotations included. Check with mypy.
  • Tests added for new features/fixes.
  • If applicable, new classes/functions/modules have duecredit @due.dcite decorators to reference relevant papers by DOI (example)

Tip: Install pre-commit hooks to auto-check types and linting before every commit:

pip install -U pre-commit
pre-commit install

kenko911 and others added 30 commits November 18, 2023 02:52
…oat_th and including linear layer in TensorNet to match the original implementations
@kenko911 kenko911 requested a review from shyuep as a code owner May 6, 2024 20:11
Copy link

coderabbitai bot commented May 6, 2024

Walkthrough

This update primarily involves modifications to the matgl library and associated tests. Key changes include the simplification of the collate_fn_pes function by removing a condition related to magnetic moments, and the introduction of a new test fixture for MoS2 in molecular dynamics simulations. Additionally, enhancements were made to data loader tests and the generation of Clebsch-Gordan coefficients in the SO3 utilities.

Changes

File Path Change Summary
.../graph/data.py Removed conditional return in collate_fn_pes for include_magmom.
tests/conftest.py Added MoS2() fixture.
tests/ext/test_ase.py Replaced MoS with MoS2 in test_molecular_dynamics.
tests/graph/test_data.py Added test_mgl_dataloader_without_collate_fn.
tests/utils/test_so3.py Added test case for generating Clebsch-Gordan coefficients without parity invariance.

Recent Review Details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits Files that changed from the base of the PR and between 2e84398 and 276054c.
Files selected for processing (5)
  • src/matgl/graph/data.py (1 hunks)
  • tests/conftest.py (1 hunks)
  • tests/ext/test_ase.py (1 hunks)
  • tests/graph/test_data.py (1 hunks)
  • tests/utils/test_so3.py (1 hunks)
Files skipped from review due to trivial changes (1)
  • tests/conftest.py
Additional comments not posted (2)
tests/ext/test_ase.py (1)

118-128: Changes to use MoS2 in test_molecular_dynamics are aligned with PR objectives.

Verification successful

The verification process has confirmed that the function test_molecular_dynamics uses the MoS2 fixture as intended. The search results show that this function is defined in tests/ext/test_ase.py and correctly uses MoS2 as a parameter, aligning with the changes described in the PR.

Changes to use MoS2 in test_molecular_dynamics are aligned with PR objectives.

  • Verified in tests/ext/test_ase.py.
Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify all function calls to `test_molecular_dynamics` use `MoS2`.

# Test: Search for the function usage. Expect: Only occurrences of `MoS2`.
rg --type python $'test_molecular_dynamics'

Length of output: 73



Script:

#!/bin/bash
# Description: Verify all function calls to `test_molecular_dynamics` use `MoS2`.

# Test: Search for the function usage. Expect: Only occurrences of `MoS2`.
rg --glob '*.py' 'test_molecular_dynamics'

Length of output: 99

tests/graph/test_data.py (1)

485-622: Addition of test_mgl_dataloader_without_collate_fn enhances testing capabilities as intended.

Ensure comprehensive test coverage for MGLDataLoader functionality.

Verification successful

The search results from the rg command indicate that MGLDataLoader is extensively used in multiple test files (tests/utils/test_training.py and tests/graph/test_data.py). This suggests a broad coverage of the MGLDataLoader functionality across different scenarios within the test suite. The presence of multiple calls to MGLDataLoader in these files likely covers various configurations and use cases, which is essential for thorough testing of this component.

Given this information, it appears that the test coverage for MGLDataLoader is comprehensive, addressing the initial concern raised in the review comment.


Comprehensive test coverage for MGLDataLoader confirmed.

  • The usage of MGLDataLoader is well-represented in the test suite, particularly in tests/utils/test_training.py and tests/graph/test_data.py, which suggests thorough testing of its functionalities.
Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify comprehensive test coverage for `MGLDataLoader`.

# Test: Search for tests related to `MGLDataLoader`. Expect: Coverage of all functionalities.
rg --type python $'MGLDataLoader'

Length of output: 63



Script:

#!/bin/bash
# Description: Verify comprehensive test coverage for `MGLDataLoader`.

# Test: Search for tests related to `MGLDataLoader`. Expect: Coverage of all functionalities.
rg --type py 'MGLDataLoader'

Length of output: 2278


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@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

Out of diff range and nitpick comments (1)
src/matgl/graph/data.py (1)

[!TIP]
Codebase Verification

The verification process has revealed that the include_magmom parameter is still being used in various parts of the codebase, including test scripts and within the collate_fn_pes function itself. This contradicts the initial assumption that removing include_magmom would not affect other parts of the codebase. Here are the specific locations where include_magmom is still in use:

  • tests/utils/test_training.py: The parameter is used in a partial function application.
  • tests/graph/test_data.py: Similar usage as in test_training.py.
  • src/matgl/graph/data.py: The parameter is defined and used within the collate_fn_pes function and in setting up the default collate function based on dataset labels.

Given this information, it is clear that the removal of include_magmom from the collate_fn_pes function would likely lead to issues unless these references are also updated or the design decision is reconsidered.

Action Required:

  • Review the necessity of the include_magmom parameter in the context of the entire project.
  • Update all references to collate_fn_pes that use include_magmom or reconsider the removal of this parameter if it is deemed essential for certain functionalities.
Analysis chain

Line range hint 1-603: Removal of include_magmom from collate_fn_pes simplifies the function as intended.

Scripts Executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the impact of removing `include_magmom` on other parts of the codebase.

# Test: Search for any usage of `include_magmom`. Expect: No occurrences.
rg --type python $'include_magmom'

Length of output: 64



Script:

#!/bin/bash
# Description: Verify the impact of removing `include_magmom` on other parts of the codebase.

# Test: Search for any usage of `include_magmom` in Python files. Expect: No occurrences.
rg --type py 'include_magmom'

Length of output: 647

Comment on lines +320 to +324
cg_rsh_0_without_pi = generate_clebsch_gordan_rsh(lmax_0, False)
expected_cg_rsh_0_without_pi = torch.eye(1).unsqueeze(0) # Expected cg_rsh without parity invariance result
assert torch.allclose(
cg_rsh_0_without_pi, expected_cg_rsh_0_without_pi, atol=1e-4
) # Use torch.allclose for numerical comparisons
Copy link

Choose a reason for hiding this comment

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

Ensure consistency in testing for parity invariance.

The new test case added for generating Clebsch-Gordan coefficients without parity invariance (generate_clebsch_gordan_rsh(lmax_0, False)) is a good addition for coverage. However, it's crucial to ensure that similar tests are added for other values of lmax (e.g., lmax_1, lmax_2) to maintain consistency and thoroughness in test coverage.

@kenko911 kenko911 merged commit 64f5f8c into materialsvirtuallab:main May 6, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant