Skip to content

Commit c195202

Browse files
committed
Add is_shallow convenience function and test
1 parent f16321f commit c195202

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

doped/utils/eigenvalues.py

+19
Original file line numberDiff line numberDiff line change
@@ -736,3 +736,22 @@ def _get_pot_diff_from_entry(defect_entry: DefectEntry):
736736
emp.plt.savefig(filename, bbox_inches="tight", transparent=True, backend=_get_backend(filename))
737737

738738
return bes, fig
739+
740+
741+
def is_shallow(defect_entry: DefectEntry, default: bool = False) -> bool:
742+
"""
743+
Return whether a ``DefectEntry`` is determined to be a shallow (perturbed
744+
host) state, based on ``pydefect`` eigenvalue analysis.
745+
746+
Args:
747+
defect_entry (DefectEntry):
748+
``doped`` ``DefectEntry`` object.
749+
default (bool):
750+
Default value to return if the eigenvalue analysis fails
751+
(e.g. if eigenvalue data is not present).
752+
Default is ``False``.
753+
"""
754+
try:
755+
return defect_entry.get_eigenvalue_analysis(plot=False).is_shallow
756+
except Exception:
757+
return default

tests/test_analysis.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
)
2929
from doped.core import _orientational_degeneracy_warning
3030
from doped.generation import DefectsGenerator, get_defect_name_from_defect, get_defect_name_from_entry
31-
from doped.utils.eigenvalues import get_eigenvalue_analysis
31+
from doped.utils.eigenvalues import get_eigenvalue_analysis, is_shallow
3232
from doped.utils.parsing import (
3333
Vasprun,
3434
get_defect_type_and_composition_diff,
@@ -2913,6 +2913,7 @@ def _compare_band_edge_states_dicts(d1, d2, orb_diff_tol: float = 0.1):
29132913
assert not any(
29142914
[bes.has_donor_phs, bes.has_occupied_localized_state, bes.has_unoccupied_localized_state]
29152915
)
2916+
assert is_shallow(dp.defect_dict["v_Cu_0"])
29162917

29172918
print("Testing v_Cu_0 with plot = False")
29182919
bes2 = dp.defect_dict["v_Cu_0"].get_eigenvalue_analysis(

0 commit comments

Comments
 (0)