Outputs - JDFTx IO Module#4190
Merged
shyuep merged 32 commits intomaterialsproject:masterfrom Jan 24, 2025
Merged
Conversation
Closed
… not exactly what I thought it did. I still think its a helpful function to have but not what I need here)
…ut calling `.items()`) - This does not appear in my local pre-commit (which I believe is running correctly) but started causing the "lint" action to fail starting around 11/22 (along with other failures from unrelated pre-existing parts of pymatgen)
…bject to a mongo-db. A lot of the mystery in this output module was in how properties were being forced into memory through getattr, so here all properties are now attributes set up in post_init , get getatr is no longer explicitly defined (this also takes up a lot less lines to make reviewing easier). The only exception is charges and magnetic_moments for JOutStructure
…void any issues with using a JOutStructure in place of a Structure, adding eigenvals and bandProjections to JDFTXOutputs
Member
Member
|
I’ll try and review this later today, thanks @benrich37 |
auto-merge was automatically disabled
January 13, 2025 23:02
Head branch was pushed to by a user without write access
….io tries to raise an "EncondingWarning", changing the dump files dir to be a fixture that creates itself, yields the path, and then removes itself (parts after a "yield" only run once the test using the fixture has finished)
auto-merge was automatically disabled
January 23, 2025 23:47
Head branch was pushed to by a user without write access
auto-merge was automatically disabled
January 24, 2025 01:03
Head branch was pushed to by a user without write access
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Major changes:
-feature 0: hierarchy of class objects used to represent the data contained within a JDFTx out file. Hierarchy here is used to represent where each class object is stored - none of these classes inherit the class below it. Classes stored within a list in its parent are indicated by "[i]" (ie below where
JDFTXOutfile.slicesis a list ofJDFTXOutfileSlice). Descriptions of each class are given below the tree.outputs.pymodule containingJDFTXOutfileclass to give robust pythonic representation of to a JDFTx "out" file. This class is initialized from the path to a JDFTx "out" file by the user. The initialization of aJDFTXOutfilewill initialize the following JDFTx IO classes byjdftxoutfileslice.pymodule containingJDFTXOutfileSliceclass representing a "slice" of a JDFTx "out" file corresponding to a single call of the JDFTx executable (subsequent calls will append the same "out" file). This class is initialized for every call from an "out" file whenJDFTXOutfileis initialized and stored in the listJDFTXOutfile.slicesjoutstructures.pymodule containingJOutStructuresclass representing a series of structures from an "out" file "slice". This class is primarily helpful for representing a geometric optimization during a single call. This class is initialized once during the initialization of aJDFTXOutfileSliceand is stored inJDFTXOutfileSlice.jstrucsjoutstructure.pymodule containingJOutStructureclass representing a single structure within an "out" file (specifically from a portion of the "out" file starting from the beginning of an SCF optimization down to the next log of Lowdin charges as the flag for the end of geometric optimization step). This class initialized once for every structure update when initializingJOutStructures, and is stored within the listJOutStructures.slices. An initial structure is given for initialization in the case that either lattice or ion positions are not being updated (and therefore not printed for parsing within the given slice of the "out" file "slice".jelstep.pymodule containingJElStepandJElStepsclass representing a single SCF step and a series of SCF steps, respectively. TheJElStepsclass is helpful for getting SCF convergence data. TheJElStepsclass is initialized once for every initialization of aJOutStructure, and is stored withinJOutStructure.elecmindata. TheJElStepclass is helpful for analyzing the logged SCF optimization data (energy, chemical potential, line-minimization values, etc) for a single SCF step. TheJElStepclass initialized once for every SCF step when initializing aJElSteps, and is stored withinJElSteps.slices.jminsettings.pymodule containingJMinSettingsabstract class for representing the input minimization settings of a JDFTx call.JMinSettingsis inherited by the following classes withinjminsettings.py-JMinSettingsElectronicto represent electronic minimization settings,JMinSettingsFluidfor implicit fluid minimization,JMinSettingsLatticefor lattice minimization, andJMinSettingsIonicfor ionic minimization.