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

Develop #69

Merged
merged 19 commits into from
May 11, 2024
Merged

Develop #69

merged 19 commits into from
May 11, 2024

Conversation

kavanase
Copy link
Member

No description provided.

@kavanase
Copy link
Member Author

All tests passed on previous run, merging

Copy link

coderabbitai bot commented May 11, 2024

Walkthrough

The recent updates focus on refining GitHub workflows, enhancing Python package configurations, and improving the robustness and functionality of the doped software. Key changes include version upgrades for actions and Python, modifications in workflow triggers, and updates in coding practices to better handle edge cases and dependencies, ensuring a smoother operation and more reliable outputs.

Changes

Files Affected Summary of Changes
.github/workflows/... Updated triggers, Python versions, and action versions for multiple workflows.
doped/..., docs/..., tests/... Enhanced functionality, updated dependencies, and improved error handling in various Python modules and documentation.
pyproject.toml, CHANGELOG.rst, CITATION.cff, README.md Updated project metadata, documentation, and versioning details.

🐰✨📜✨🐰
A hop, a skip, a code deploy,
Changes abound, oh what a joy!
From workflows fine to Python tweaks,
Each line refined, as the rabbit seeks.
Celebrate the craft, with every commit deploy! 🎉
🐰✨📜✨🐰

Warning

Review ran into problems

Problems (1)
  • Git: Failed to clone repository. Please contact CodeRabbit support.

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.

@kavanase kavanase merged commit b27fa9c into main May 11, 2024
0 of 6 checks passed
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: 9

Out of diff range and nitpick comments (8)
doped/utils/supercells.py (1)

Line range hint 750-1000: Complex function find_ideal_supercell is well-implemented with comprehensive documentation.

The function handles a complex algorithm with multiple helper functions and conditional paths. Consider refactoring to split this function into smaller sub-functions for each major step to enhance readability and maintainability.

tests/test_chemical_potentials.py (2)

93-126: Consider adding more detailed comments explaining the purpose of each assertion and the expected outcomes. This will enhance the readability and maintainability of the test cases, especially for complex checks involving chemical potentials and warnings.


269-271: Ensure that the error messages are clear and provide sufficient information to the user about what went wrong and how to resolve it. Consider enhancing the error message to guide the user more effectively.

tests/test_vasp.py (5)

Line range hint 54-82: Ensure that the paths used in setUp are dynamically generated to avoid hard-coded paths which might not be universally applicable.

- self.data_dir = os.path.join(os.path.dirname(__file__), "data")
+ self.data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "data")

Line range hint 54-54: Consider mocking _potcars_available in your tests to ensure consistent test behavior across different environments.


Line range hint 300-466: Ensure that test methods like test_neutral_defect_dict_set and test_charged_defect_incar include comprehensive assertions to cover all edge cases.


Line range hint 454-466: Avoid redundancy by reusing setUp from DefectDictSetTest without redefining it unless necessary. Consider using inheritance or composition if setup code needs to be shared across test classes.


Line range hint 454-466: Add more detailed assertions in methods like test_initialisation_and_writing to ensure that all aspects of DefectRelaxSet initialization are correctly tested.

Review Details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits Files that changed from the base of the PR and between 2ec4790 and b162ce4.
Files selected for processing (23)
  • .github/workflows/JOSS_draft-PDF.yaml (1 hunks)
  • .github/workflows/pip_install_test.yml (2 hunks)
  • .github/workflows/release.yml (1 hunks)
  • .github/workflows/test.yml (3 hunks)
  • .readthedocs.yaml (1 hunks)
  • CHANGELOG.rst (1 hunks)
  • CITATION.cff (1 hunks)
  • README.md (4 hunks)
  • docs/Dev_ToDo.md (3 hunks)
  • docs/Installation.rst (1 hunks)
  • docs/Troubleshooting.rst (1 hunks)
  • docs/conf.py (1 hunks)
  • docs/index.rst (5 hunks)
  • doped/analysis.py (3 hunks)
  • doped/chemical_potentials.py (16 hunks)
  • doped/utils/legacy_corrections.py (1 hunks)
  • doped/utils/parsing.py (6 hunks)
  • doped/utils/supercells.py (1 hunks)
  • doped/vasp.py (1 hunks)
  • pyproject.toml (2 hunks)
  • tests/test_chemical_potentials.py (7 hunks)
  • tests/test_generation.py (13 hunks)
  • tests/test_vasp.py (6 hunks)
Files not reviewed due to errors (1)
  • docs/Dev_ToDo.md (no review received)
Files skipped from review due to trivial changes (5)
  • CITATION.cff
  • docs/Installation.rst
  • docs/Troubleshooting.rst
  • docs/conf.py
  • pyproject.toml
Additional Context Used
LanguageTool (31)
README.md (4)

Near line 8: Although a hyphen is possible, it is not necessary in a compound modifier in which the first word is an adverb that ends in ‘ly’.
Context: ...ducible, user-friendly yet powerful and fully-customisable manner. Tutorials showing the code fun...


Near line 15: Although a hyphen is possible, it is not necessary in a compound modifier in which the first word is an adverb that ends in ‘ly’.
Context: ...ures All features and functionality are fully-customisable: - Supercell Generation: Generate a...


Near line 23: Although a hyphen is possible, it is not necessary in a compound modifier in which the first word is an adverb that ends in ‘ly’.
Context: ...ections, etc. - Python Interface: Fully-customisable, modular Python API. Plug-and-play w/...


Near line 48: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...i.org/10.21105/joss.06433). Journal of Open Source Software 9 (96), 6433, 2024 ## `S...

docs/Dev_ToDo.md (27)

Near line 6: A comma may be missing after the conjunctive/linking adverb ‘Also’.
Context: ...of code out of interface subpackage?) Also can see https://github.com/materialspro...


Near line 7: Two successive sentences begin with the same adverb. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: .../phases.py for 2D chempot plotting. - Also see Cs2SnTiI6 notebooks for template ...


Near line 15: This phrase is redundant. Consider using “outside”.
Context: ...e plot - Don't show transition levels outside of the bandgap (or within a certain range ...


Near line 16: To form a complete sentence, be sure to include a subject.
Context: ...iscussion and CdTe pyscfermi notebooks. Would be easy to implement if auto degeneracy...


Near line 19: If ‘want’ is used as a verb, it usually requires the infinitive.
Context: ...a of the AiiDA-defects preprint, want plotting tools like this - Can we add an option ...


Near line 20: Except for inverted sentences, ‘Can we’ requires a question mark at the end of the sentence.
Context: ...defect-structures) – seems quite useful tbf ## Housekeeping - Tutorials general st...


Near line 29: Unpaired symbol: ‘(’ seems to be missing
Context: ... but smaller for VCd bipolaron in CdTe))). - Add our recommended workflow (gam...


Near line 33: In American English, abbreviations like “etc.” require a period.
Context: ...state behaviour being a bit more common etc). If the user wants to add bandfilling ...


Near line 33: Modal verbs like ‘can’ or ‘will’ require the following verb to be in its base form.
Context: ...bandfilling corrections, they can still doing this by calculating it themselves and a...


Near line 40: Although a hyphen is possible, it is not necessary in a compound modifier in which the first word is an adverb that ends in ‘ly’.
Context: ... of a VASP dielectric calculation if an oddly-defined primitive cell is used) - vasp_ncl ...


Near line 42: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ... Often can't use NKRED with vasp_std, because we don't know beforehand the kpts in th...


Near line 44: Although a hyphen is possible, it is not necessary in a compound modifier in which the first word is an adverb that ends in ‘ly’.
Context: ...kpoints, due to memory limitations. - Readily-usable in conjunction with atomate, AiiDA(...


Near line 44: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ... memory limitations. - Readily-usable in conjunction with atomate, AiiDA(-defects), vise, `...


Near line 46: Do not use a colon (:) before a series that is introduced by a preposition (‘with’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...onal dependencies. - Workflow diagram with: https://twitter.com/Andrew_S_Rosen/stat...


Near line 47: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...an sometimes be worth doing if you have a very large supercell for speed up, but it's impo...


Near line 47: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...only do if you're a power user and have a very large supercell. - Show usage of `get_conv_...


Near line 51: In American English, abbreviations like “etc.” require a period.
Context: ...put structure, generate_supercell etc), but conventional cell should always b...


Near line 57: This phrase is redundant. Consider writing “cancel”.
Context: ...ts that the SOC effects on total energy cancel out for chemical potential calculations...


Near line 69: Qualifiers like “somewhat” can weaken your message and make your writing sound uncertain. Consider removing it or choosing an alternative to sound more confident.
Context: ...ral, the correction terms should follow somewhat consistent trends (for a given charge s...


Near line 69: It appears that only one verb is needed.
Context: ... something odd is happening there. This is can be fairly easily scanned with `get_form...


Near line 70: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...The Wyckoff analysis code is very useful and no other package can do this afaik. See...


Near line 75: Consider adding a comma here.
Context: ...s and can fail in weird cases. As always please consider if these charge states are ...


Near line 76: In American English, abbreviations like “etc.” require a period.
Context: ...mmetry, amphoteric, mixed-valence cases etc!) - Note cases where we expect defa...


Near line 77: Consider changing the order of words to improve your wording.
Context: ...s where we expect default charge states to not be appropriate (e.g. mixed ionic-covale...


Near line 82: In American English, abbreviations like “etc.” require a period.
Context: ...tum/magnetic defects, d-orbital defects etc), in which case you can manually adjust...


Near line 84: In American English, abbreviations like “etc.” require a period.
Context: ...lay around with probability_threshold etc). - Should flick through other defect c...


Near line 94: In American English, abbreviations like “etc.” require a period.
Context: ...lso group defects for the concentration etc functions, currently doesn't (e.g. `CdT...

Additional comments not posted (41)
.readthedocs.yaml (2)

9-9: Update to Ubuntu 22.04 aligns with modern best practices for OS support.


11-11: Update to Python 3.11 ensures compatibility with the latest Python features and security patches.

.github/workflows/JOSS_draft-PDF.yaml (2)

13-13: Upgrade to actions/checkout@v4 enhances security and adds new features.


21-21: Upgrade to actions/upload-artifact@v5 provides improvements in artifact handling and performance.

.github/workflows/test.yml (4)

16-22: Updated matrix configurations to include newer operating systems and Python versions, enhancing test coverage.


27-27: Upgrade to actions/checkout@v4 ensures the use of the latest features and security updates.


29-29: Upgrade to actions/setup-python@v5 ensures compatibility with the latest Python releases and features.


57-57: Upgrade to actions/upload-artifact@v4 provides better performance and reliability in artifact uploads.

.github/workflows/pip_install_test.yml (4)

21-27: Updated matrix configurations to exclude unsupported Python versions on macOS-14, ensuring compatibility and preventing unnecessary failures.


32-32: Upgrade to actions/checkout@v4 ensures the use of the latest features and security updates.


34-34: Upgrade to actions/setup-python@v5 ensures compatibility with the latest Python releases and features.


63-63: Upgrade to actions/upload-artifact@v4 provides better performance and reliability in artifact uploads.

.github/workflows/release.yml (3)

19-19: Upgrade to actions/checkout@v4 enhances security and adds new features.


21-21: Upgrade to actions/setup-python@v5 ensures compatibility with the latest Python features and security patches.


23-23: Setting the Python version explicitly to 3.11 in the release workflow ensures that the latest Python version is used for building and publishing, aligning with best practices.

doped/utils/legacy_corrections.py (1)

47-47: Changing the return format to a dictionary enhances data handling and integration with other parts of the software, allowing for more structured and accessible correction data.

CHANGELOG.rst (1)

4-10: The changelog effectively documents significant updates and improvements in version 2.4.2, providing clear information on changes and enhancements made to the software.

README.md (3)

6-6: Adding a DOI badge enhances the visibility and accessibility of the academic paper associated with the software, providing a direct link for citation.


Line range hint 10-29: The updates to the tutorials and key features sections provide clearer, more detailed information on the software's capabilities and usage, enhancing user understanding and engagement.


Line range hint 46-65: The updated citation section provides comprehensive details on how to properly cite the software in academic work, which is crucial for acknowledging the software's contribution to research.

docs/index.rst (4)

27-27: Ensure the JOSS paper link is accessible
The link to the JOSS paper is crucial for users to access relevant research. Verify that this link is accessible and directs users to the intended resource.

#!/bin/bash
# Description: Check if the JOSS paper link is accessible.

curl -o /dev/null -s -w "%{http_code}\n" https://doi.org/10.21105/joss.06433

51-59: Confirm the target URL for the JOSS paper image
The image link in the documentation should correctly point to the intended JOSS paper. Confirm that the target URL is correct and the resource is available.

#!/bin/bash
# Description: Verify the target URL for the JOSS paper image.

curl -o /dev/null -s -w "%{http_code}\n" https://doi.org/10.21105/joss.06433

72-72: Update the citation year to match the publication year
The citation entry for the JOSS paper mentions the year as 2024, which should be consistent with the actual publication year. If the paper is indeed published in 2024, this is correct; otherwise, update the year accordingly.

#!/bin/bash
# Description: Check the publication year of the JOSS paper.

curl -s https://doi.org/10.21105/joss.06433 | grep -oP 'Published:\s+\K\d{4}'

Line range hint 92-106: Review the consistency of publication years in the cited studies
The publication years for the cited studies range from 2022 to 2024. Ensure that these years are accurate and reflect the actual publication dates of the respective papers.

#!/bin/bash
# Description: Verify the publication years for the cited studies.

# Example command to check one of the publication years.
curl -s https://doi.org/10.1002/adma.202400343 | grep -oP 'Published:\s+\K\d{4}'
doped/utils/supercells.py (3)

75-76: Updated function call to lattice.get_points_in_sphere with conversion to list.

This change ensures that the output from get_points_in_sphere is explicitly converted to a list, which might be necessary for subsequent operations like sorting. This is a good practice to avoid potential issues with lazy evaluation in Python where the returned object could be an iterator.


Line range hint 15-23: Function get_min_image_distance correctly delegates computation to a helper function.

This is a good example of modular code design, where the main function serves as an interface, and the actual computation is handled by a more specialized function. This enhances readability and maintainability.


Line range hint 58-92: Robust implementation of _get_min_image_distance_from_matrix.

The function is well-documented and includes appropriate error handling for edge cases, such as a minimum image distance of zero or less. This prevents potential runtime errors and ensures the function's reliability.

tests/test_chemical_potentials.py (1)

Line range hint 580-711: Ensure that the test cases cover all relevant scenarios, including edge cases and potential error conditions. This will help improve the robustness of the module and prevent future regressions.

#!/bin/bash
# Description: Verify that all edge cases and error conditions are covered in the test cases for CSV output functionality.

# Test: Search for test cases covering edge cases and error conditions.
rg --type python $'test_to_csv'
tests/test_vasp.py (2)

Line range hint 84-86: Verify the implementation of if_present_rm to ensure it handles exceptions properly when attempting to remove non-existent directories.

#!/bin/bash
# Description: Check the implementation of `if_present_rm`.
# Test: Search for the function definition and usage. Expect: Proper exception handling.

rg --type python $'if_present_rm'

Line range hint 468-472: Ensure that tearDown in DefectRelaxSetTest removes all files and directories created during the tests to prevent any side effects on subsequent tests.

#!/bin/bash
# Description: Verify cleanup process in `tearDown`.
# Test: Check for residual files after tests run. Expect: No residual files.

find . -type f -name 'test_*'
doped/chemical_potentials.py (3)

21-21: Update to UnconvergedVASPWarning import is consistent with the summary.


25-25: The addition of get_vasprun to imports aligns with the summary's mention of import changes in this file.


332-332: Ensure that the SETTINGS object properly handles the PMG_MAPI_KEY retrieval as expected.

#!/bin/bash
# Description: Verify the handling of `PMG_MAPI_KEY` in the `SETTINGS` object.

# Test: Search for the SETTINGS usage. Expect: Proper handling of PMG_MAPI_KEY.
rg --type python $'SETTINGS.get("PMG_MAPI_KEY")'
doped/analysis.py (1)

44-44: Ensure the newly imported function defect_charge_from_vasprun is used correctly.

#!/bin/bash
# Description: Verify the usage of `defect_charge_from_vasprun` in the file.

# Test: Search for the function usage. Expect: Correct usage with appropriate arguments.
rg --type py 'defect_charge_from_vasprun' doped/analysis.py
doped/vasp.py (7)

84-84: Update exception handling to include RuntimeError as per the latest pymatgen release.


88-88: Ensure that the loop correctly handles the potential functional choices without causing an infinite loop or missing potential valid configurations.

#!/bin/bash
# Description: Check the loop logic for setting `potcar_functional`.

# Test: Review the logic manually and ensure all paths are covered.
echo "Manual review required for loop logic in _test_potcar_functional_choice function."

84-84: Ensure robust handling of encoding errors in the DopedKpoints class.


84-84: Review the initialization and configuration logic in DopedDictSet to ensure it correctly integrates user settings with defaults.

#!/bin/bash
# Description: Verify the integration of user settings in `DopedDictSet`.

# Test: Check the constructor logic and property methods.
echo "Manual review required for constructor and properties in DopedDictSet class."

84-84: Ensure that the incar property in DefectDictSet correctly handles charge states and other INCAR settings for defect calculations.

#!/bin/bash
# Description: Check the `incar` property logic in `DefectDictSet`.

# Test: Review the handling of charge states and INCAR adjustments.
echo "Manual review required for incar property in DefectDictSet class."

84-84: Review the configuration of VASP input files in DefectRelaxSet to ensure they are correctly set up for defect relaxation calculations.

#!/bin/bash
# Description: Verify the setup of VASP input files in `DefectRelaxSet`.

# Test: Check each property method for correct configuration.
echo "Manual review required for VASP input file configuration in DefectRelaxSet class."

84-84: Ensure efficient and correct handling of multiple defect calculations in DefectsSet, particularly the use of multiprocessing.

#!/bin/bash
# Description: Check the multiprocessing implementation in `DefectsSet`.

# Test: Review the logic for handling multiple defects and the use of multiprocessing.
echo "Manual review required for multiprocessing implementation in DefectsSet class."

doped/chemical_potentials.py Show resolved Hide resolved
docs/index.rst Show resolved Hide resolved
doped/utils/parsing.py Show resolved Hide resolved
doped/utils/parsing.py Show resolved Hide resolved
doped/utils/parsing.py Show resolved Hide resolved
tests/test_chemical_potentials.py Show resolved Hide resolved
tests/test_chemical_potentials.py Show resolved Hide resolved
doped/utils/parsing.py Show resolved Hide resolved
doped/chemical_potentials.py Show resolved Hide resolved
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.

1 participant