Skip to content

Commit 6065af3

Browse files
Allow solid_compat to be None in get_pourbaix_entries (#1061)
2 parents e0a5db9 + aed606d commit 6065af3

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

mp_api/client/mprester.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
from emmet.core.tasks import CoreTaskDoc
4141
from pymatgen.analysis.phase_diagram import PDEntry
42+
from pymatgen.entries.compatibility import Compatibility
4243
from pymatgen.entries.computed_entries import ComputedEntry
4344

4445

@@ -611,7 +612,11 @@ def get_entries(
611612
def get_pourbaix_entries(
612613
self,
613614
chemsys: str | list[str] | list[ComputedEntry | ComputedStructureEntry],
614-
solid_compat="MaterialsProject2020Compatibility",
615+
solid_compat: Literal[
616+
"MaterialsProjectCompatibility", "MaterialsProject2020Compatibility"
617+
]
618+
| Compatibility
619+
| None = "MaterialsProject2020Compatibility",
615620
use_gibbs: Literal[300] | None = None,
616621
):
617622
"""A helper function to get all entries necessary to generate
@@ -627,10 +632,12 @@ def get_pourbaix_entries(
627632
for adding extra calculation data to the Pourbaix Diagram.
628633
If this is set, the chemsys will be inferred from the entries.
629634
solid_compat: Compatibility scheme used to pre-process solid DFT energies prior
630-
to applying aqueous energy adjustments. May be passed as a class (e.g.
631-
MaterialsProject2020Compatibility) or an instance
632-
(e.g., MaterialsProject2020Compatibility()). If None, solid DFT energies
633-
are used as-is. Default: MaterialsProject2020Compatibility
635+
to applying aqueous energy adjustments.
636+
May be passed as a string (either "MaterialsProjectCompatibility"
637+
or "MaterialsProject2020Compatibility"), or as a class instance
638+
(e.g., MaterialsProject2020Compatibility()).
639+
If None, solid DFT energies are used as-is.
640+
Default: MaterialsProject2020Compatibility
634641
use_gibbs: Set to 300 (for 300 Kelvin) to use a machine learning model to
635642
estimate solid free energy from DFT energy (see GibbsComputedStructureEntry).
636643
This can slightly improve the accuracy of the Pourbaix diagram in some
@@ -673,12 +680,12 @@ def get_pourbaix_entries(
673680
solid_compat = MaterialsProjectCompatibility()
674681
elif solid_compat == "MaterialsProject2020Compatibility":
675682
solid_compat = MaterialsProject2020Compatibility()
676-
elif isinstance(solid_compat, Compatibility):
683+
elif isinstance(solid_compat, Compatibility) or solid_compat is None:
677684
pass
678685
else:
679686
raise ValueError(
680687
"Solid compatibility can only be 'MaterialsProjectCompatibility', "
681-
"'MaterialsProject2020Compatibility', or an instance of a Compatibility class"
688+
"'MaterialsProject2020Compatibility', None, or an instance of a Compatibility class"
682689
)
683690

684691
pbx_entries = []

tests/client/test_mprester.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ def test_get_pourbaix_entries(self, mpr):
270270

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

275275
# test removal of extra elements from reference solids
276276
# Li-Zn-S has Na in reference solids

0 commit comments

Comments
 (0)