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
This PR fixes a long-standing (since 2022) bug in
sumo-bandstats
in that the labels for the effective masses don't show correctly. E.g., this is the output for the band stats intest/data/Cs2SnI6/bandstructure
:Obviously the effective masses are not in the Gamma -> Gamma direction (which doesn't make sense). The output for the new version is:
Details
This bug was introduced when trying to fix another bug (#169), specifically that the k-point indices listed in
sumo-bandstats
were wrong.This all comes from the fact that the pymatgen logic for extracting branches in the band structure requires duplicating the high-symmetry points. To avoid wasting compute resources on these extra points, sumo-bandplot/bandstats adds this points dynamically rather than including them in the DFT calculation. However, this means sumo-bandstats reports the wrong indices for the VBM and CBM with respect to the band structure calculation. The previous PR tried to fix this issue by removing the branches for
sumo-bandstats
but this then led to the labels being missing.The fix in this PR is to:
Other fixes
I also added a quick fix the VASP bug where it sometimes puts the Fermi level in the valence or conduction bands when using ISMEAR = -5. I already added a workaround for this in pymatgen (specifically
vr.get_band_structure(line_mode=True, efermi="smart")
) but it currently isn't used in sumo.