-
Notifications
You must be signed in to change notification settings - Fork 874
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
Outputs - JDFTx IO Module #4190
Open
benrich37
wants to merge
19
commits into
materialsproject:master
Choose a base branch
from
benrich37:feature-jdftx-outputs
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Outputs - JDFTx IO Module #4190
benrich37
wants to merge
19
commits into
materialsproject:master
from
benrich37:feature-jdftx-outputs
+43,114
−0
Conversation
This file contains 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
… 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
I’ll try and review this later today, thanks @benrich37 |
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.slices
is a list ofJDFTXOutfileSlice
). Descriptions of each class are given below the tree.outputs.py
module containingJDFTXOutfile
class 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 aJDFTXOutfile
will initialize the following JDFTx IO classes byjdftxoutfileslice.py
module containingJDFTXOutfileSlice
class 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 whenJDFTXOutfile
is initialized and stored in the listJDFTXOutfile.slices
joutstructures.py
module containingJOutStructures
class 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 aJDFTXOutfileSlice
and is stored inJDFTXOutfileSlice.jstrucs
joutstructure.py
module containingJOutStructure
class 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.py
module containingJElStep
andJElSteps
class representing a single SCF step and a series of SCF steps, respectively. TheJElSteps
class is helpful for getting SCF convergence data. TheJElSteps
class is initialized once for every initialization of aJOutStructure
, and is stored withinJOutStructure.elecmindata
. TheJElStep
class is helpful for analyzing the logged SCF optimization data (energy, chemical potential, line-minimization values, etc) for a single SCF step. TheJElStep
class initialized once for every SCF step when initializing aJElSteps
, and is stored withinJElSteps.slices
.jminsettings.py
module containingJMinSettings
abstract class for representing the input minimization settings of a JDFTx call.JMinSettings
is inherited by the following classes withinjminsettings.py
-JMinSettingsElectronic
to represent electronic minimization settings,JMinSettingsFluid
for implicit fluid minimization,JMinSettingsLattice
for lattice minimization, andJMinSettingsIonic
for ionic minimization.