Disappearance of Energy Corrections for mp‑1100405 (ScTeRh) under GGA/GGA+U

In the Materials Project database, the entry mp‑1100405 (ScTeRh) has an energy correction of –0.14 eV/atom when plotting GGA/GGA+U phase diagrams. However, when I reproduce the calculation with VASP and pymatgen, I do not observe this correction.

Procedure

  1. I used MPRelaxSet to generate the VASP input files for mp‑1100405 (ScTeRh).
  2. After the calculation finished, I ran the following Python script to read the VASP output and print the energy correction:
from pymatgen.entries.compatibility import MaterialsProject2020Compatibility
from pymatgen.io.vasp.outputs import Vasprun

# Parse the VASP run (no DOS, but include POTCAR parsing)
vrun = Vasprun("./vasprun.xml", parse_dos=False, parse_potcar_file=True)
entry = vrun.get_computed_entry(inc_structure=True)

# Apply the MP2020 compatibility corrections
compat = MaterialsProject2020Compatibility()
corr_entry = compat.process_entry(entry)

print("Returned object type:", type(corr_entry))
if corr_entry:
    print("Total correction (eV):", corr_entry.correction)
else:
    print("Entry was rejected, see reason →")
    print(compat.get_explanations(entry))

Observed Warning / Output

/python3.12/site‑packages/pymatgen/entries/compatibility.py:621: UserWarning: 
  Failed to guess oxidation states for Entry vasprun‑20250721‑1.0‑d3eaabcc24076197dd917eb0e37226aa (ScTeRh). 
  Assigning anion correction to only the most electronegative atom.

Returned object type: <class 'pymatgen.entries.computed_entries.ComputedStructureEntry'>
Total correction (eV): 0.0

I have tried various debugging steps but cannot determine why the –0.14 eV/atom correction from the Materials Project isn’t being applied.

After multiple rounds of debugging, I think this is a system vulnerability. Because I have found that in some materials, it is possible to output corrections, and in some materials, the above-mentioned errors may occur.

Hey @Xuetian_Li the corrections are done in place, so that entry is modified to include the correction. If you see that entry.correction is still 0 after running process_entry, then please share the output of entry.as_dict()