Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
3b0f613
WIP calculations
ThomasWarford Feb 3, 2026
3c890aa
bugfixes
ThomasWarford Feb 3, 2026
4e3d27c
float32 to float64
ThomasWarford Feb 3, 2026
ac29957
very WIP
ThomasWarford Feb 4, 2026
358b32b
passed, still many TODOs
ThomasWarford Feb 4, 2026
819918b
rename
ThomasWarford Feb 4, 2026
b1f9098
remove sv_from_nv_xyz_path for simplicity
ThomasWarford Feb 4, 2026
ef2ddbc
Working app
ThomasWarford Feb 4, 2026
c1684d2
update metric names
ThomasWarford Feb 4, 2026
8b0f0f4
copy reference structures
ThomasWarford Feb 4, 2026
8dd25b8
add rmsd
ThomasWarford Feb 4, 2026
a784828
tidy
ThomasWarford Feb 4, 2026
f489af9
split by functional
ThomasWarford Feb 7, 2026
fb72af9
slow
ThomasWarford Feb 8, 2026
172c814
calculate rmsd (expensive) in calculate stage
ThomasWarford Feb 8, 2026
2a84003
fix some bugs
ThomasWarford Feb 8, 2026
0eb4a5e
clean
ThomasWarford Feb 8, 2026
32d2575
structure matching
ThomasWarford Feb 16, 2026
1d0ddd9
update description
ThomasWarford Mar 23, 2026
76c55d4
remove structure match metric (always 1)
ThomasWarford Mar 23, 2026
a65e1e8
merge models.yml
ThomasWarford Mar 23, 2026
1281163
Merge remote-tracking branch 'upstream/main' into split_vacancies_ben…
ThomasWarford Apr 7, 2026
8c15bfb
finish merge?
ThomasWarford Apr 7, 2026
c8efbdf
violin plots
ThomasWarford Apr 7, 2026
fdef912
fix structure matching
ThomasWarford Apr 7, 2026
a3eed45
formatting + conventions
ThomasWarford Apr 8, 2026
3c28d96
remove unneeded progress bar
ThomasWarford Apr 8, 2026
87c5bf6
click violin structure to view
ThomasWarford Apr 8, 2026
07420da
move code to split vacancy app
ThomasWarford Apr 8, 2026
d2ac308
polish + docs
ThomasWarford Apr 8, 2026
15ef457
remove todos
ThomasWarford Apr 8, 2026
919f477
doc clarifications
ThomasWarford Apr 8, 2026
afb4d1c
Create defects category
ThomasWarford Apr 9, 2026
ad52779
Create defects category
ThomasWarford Apr 9, 2026
ff3dc29
Move matching criteria (max_dist<STOL) to analysis
ThomasWarford Apr 9, 2026
a405f5f
improve split vacancy description
ThomasWarford Apr 9, 2026
29696f7
not sure why fast forward didnt work
ThomasWarford Apr 9, 2026
ef03c40
NaN handling
ThomasWarford Apr 10, 2026
0b7f942
more robust structure matching
ThomasWarford Apr 10, 2026
7795251
matching description
ThomasWarford Apr 10, 2026
900005d
show info for selected structure
ThomasWarford Apr 10, 2026
231a16f
Merge remote-tracking branch 'upstream/main' into split_vacancies_ben…
ThomasWarford Apr 10, 2026
32ac38b
warning for unmatched structures
ThomasWarford Apr 12, 2026
980a01c
track convergence of relaxations
ThomasWarford Apr 13, 2026
9aff18e
pbesol/pbe -> oxide/nitride
ThomasWarford Apr 14, 2026
eaad363
Restore accidentally removed .github files and revert models.yml changes
ThomasWarford Apr 20, 2026
f0d6c80
Merge branch 'main' into split_vacancies_benchmark
ThomasWarford Apr 20, 2026
f646f79
remove unused import, end of line change
ThomasWarford Apr 20, 2026
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
87 changes: 87 additions & 0 deletions docs/source/user_guide/benchmarks/defects.rst

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is (now) a merged defect.rst file, so can you combine these two?

Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
=======
Defects
=======

Split vacancy
=============

Summary
-------

Performance predicting split vacancy formation energies and relaxed structures for
metal oxides (PBEsol, 531 host compounds, 722 material-cation pairs, 2154 structures)
and stable nitrides (PBE, 144 host compounds, 149 material-cation pairs, 285 structures).

A split vacancy is a stoichiometry-conserving defect complex in which an isolated atomic
vacancy reconstructs into two vacancies and an interstitial
(:math:`V_X \to [V_X + X_i + V_X]`), often with a dramatic energy lowering.

Data from Seán Kavanagh, *Identifying split vacancy defects with machine-learned foundation models and electrostatics*,
`https://doi.org/10.1088/2515-7655/ade916 <https://doi.org/10.1088/2515-7655/ade916>`_


Metrics
-------

1. MAE (formation energy)

Mean absolute error of the split vacancy formation energy, defined as the energy
difference between the lowest-energy relaxed split vacancy (SV) and normal vacancy (NV)
structures:

.. math::

E_\text{form} = \min_i E^\text{SV}_i - \min_j E^\text{NV}_j

where the minima are taken over all initial structures that match the DFT reference
(see metric 3) for a given material-cation pair.

2. Spearman's rank correlation

`Spearman's rank correlation coefficient <https://en.wikipedia.org/wiki/Spearman%27s_rank_correlation_coefficient>`_
between MLIP and DFT total energies, evaluated as single points on DFT-relaxed NV and
SV structures. A perfect ranking gives a coefficient of 1. The mean across all
material-cation pairs is reported.

3. Match Rate

Fraction of MLIP-relaxed structures that converge to the same geometry as the
DFT-relaxed reference, determined using the pymatgen
`StructureMatcher <https://pymatgen.org/pymatgen.analysis.html#module-pymatgen.analysis.structure_matcher>`_.
The match criterion is a normalised maximum atomic displacement below 0.3 (see
metric 4).

4. Max Dist

Maximum atomic displacement between the MLIP-relaxed and DFT-relaxed matched
structures, normalised by :math:`(V/N)^{1/3}` (wher :math:`V` is the cell volume and
:math:`N` the number of atoms) to give a unitless quantity comparable across
different crystal structures. Only computed for structure pairs that pass the
StructureMatcher test. The match criterion itself is a normalised max dist below 0.3.


Computational cost
------------------

Relatively slow: relaxations involve large defect supercells (50–500 atoms) and
multiple initial structures per material-cation pair.


Data availability
-----------------

Input structures:

* Generated using the `doped <https://github.com/SMTG-Bham/doped>`_ supercell
algorithm. For oxides, supercell parameters are consistent with those of
Kumagai et al. (using the ``vise`` package). Supercells satisfy a minimum image
distance of 10 Å and a minimum of 50 atoms.

Reference data:

* See: Seán Kavanagh, *Identifying split vacancy defects with machine-learned foundation models and electrostatics*,
`https://doi.org/10.1088/2515-7655/ade916 <https://doi.org/10.1088/2515-7655/ade916>`_
* All DFT calculations performed with VASP using PAW pseudopotentials. Oxides:
PBEsol functional, 400 eV plane-wave cutoff, Γ-point sampling, 0.01 eV Å⁻¹
force convergence. Nitrides: PBE functional with MPRelaxSet parameters,
520 eV plane-wave cutoff. See paper for full details.
1 change: 1 addition & 0 deletions docs/source/user_guide/benchmarks/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Benchmarks
molecular_crystal
molecular
bulk_crystal
defects

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above

lanthanides
non_covalent_interactions
tm_complexes
Expand Down
Loading
Loading