Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions mp_api/client/mprester.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@

from emmet.core.tasks import CoreTaskDoc
from pymatgen.analysis.phase_diagram import PDEntry
from pymatgen.entries.compatibility import Compatibility
from pymatgen.entries.computed_entries import ComputedEntry


Expand Down Expand Up @@ -611,7 +612,11 @@ def get_entries(
def get_pourbaix_entries(
self,
chemsys: str | list[str] | list[ComputedEntry | ComputedStructureEntry],
solid_compat="MaterialsProject2020Compatibility",
solid_compat: Literal[
"MaterialsProjectCompatibility", "MaterialsProject2020Compatibility"
]
| Compatibility
| None = "MaterialsProject2020Compatibility",
use_gibbs: Literal[300] | None = None,
):
"""A helper function to get all entries necessary to generate
Expand All @@ -627,10 +632,12 @@ def get_pourbaix_entries(
for adding extra calculation data to the Pourbaix Diagram.
If this is set, the chemsys will be inferred from the entries.
solid_compat: Compatibility scheme used to pre-process solid DFT energies prior
to applying aqueous energy adjustments. May be passed as a class (e.g.
MaterialsProject2020Compatibility) or an instance
(e.g., MaterialsProject2020Compatibility()). If None, solid DFT energies
are used as-is. Default: MaterialsProject2020Compatibility
to applying aqueous energy adjustments.
May be passed as a string (either "MaterialsProjectCompatibility"
or "MaterialsProject2020Compatibility"), or as a class instance
(e.g., MaterialsProject2020Compatibility()).
If None, solid DFT energies are used as-is.
Default: MaterialsProject2020Compatibility
use_gibbs: Set to 300 (for 300 Kelvin) to use a machine learning model to
estimate solid free energy from DFT energy (see GibbsComputedStructureEntry).
This can slightly improve the accuracy of the Pourbaix diagram in some
Expand Down Expand Up @@ -673,12 +680,12 @@ def get_pourbaix_entries(
solid_compat = MaterialsProjectCompatibility()
elif solid_compat == "MaterialsProject2020Compatibility":
solid_compat = MaterialsProject2020Compatibility()
elif isinstance(solid_compat, Compatibility):
elif isinstance(solid_compat, Compatibility) or solid_compat is None:
pass
else:
raise ValueError(
"Solid compatibility can only be 'MaterialsProjectCompatibility', "
"'MaterialsProject2020Compatibility', or an instance of a Compatibility class"
"'MaterialsProject2020Compatibility', None, or an instance of a Compatibility class"
)

pbx_entries = []
Expand Down
2 changes: 1 addition & 1 deletion tests/client/test_mprester.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ def test_get_pourbaix_entries(self, mpr):

# test solid_compat kwarg
with pytest.raises(ValueError, match="Solid compatibility can only be"):
mpr.get_pourbaix_entries("Ti-O", solid_compat=None)
mpr.get_pourbaix_entries("Ti-O", solid_compat="None")

# test removal of extra elements from reference solids
# Li-Zn-S has Na in reference solids
Expand Down
Loading