- Major efficiency updates:
- Uses
_scan_sm_stol_till_match
and turbo-chargedStructureMatcher
methods fromdoped
v3
, speeding up structure matching (e.g. insnb-regenerate
for identifying distinct defect geometries) by >~3 orders of magnitude. - Uses caching in atomic displacement calculations (for
"disp"
/"max_dist"
metrics) - Use efficient Voronoi analyzer from
doped
v3
for multiplicity determination. - More efficient (and cleaner) plotting with many defects/distortions
- Uses
- Add
Dimer
to default distortions grid output for vacancies, following discussions and testing for cation vacancies in oxides. - Miscellaneous:
- All
snb-xxx
functions now auto-detect if running within a defect folder or in a top-level directory (i.e. auto--all
behaviour). - Handling of gzipped
OUTCAR.gz
files for energy parsing. - For (rare) cases of degenerate choices of NNs to distort in terms of distance, but non-degenerate combinations (e.g. distorting 2 NNs of a square coordination, could be cis or trans choices), the choice is made deterministically; choosing the combination with the shortest distances between distorted NNs (i.e. the cis choice).
- Greater verbosity control
- Some code cleanup and formatting, and robustness updates
- All
- Add
py.typed
to properly detect type hints by @Andrew-S-Rosen snb-run
updates to improve efficiency
- Enforce
doped>=2.4.4
requirement.
- Make oxidation state guessing more efficient.
- Update Quantum Espresso and FHI-aims IO functions to work with new (and old) ASE release.
- Minor updates to ensure compatibility with recent
pymatgen
release. - Allow unrecognised defect names when plotting.
- Add
verbose
option to more parsing/plotting functions for better control of output detail. - Improve effiency & robustness of oxidation state handling.
- Miscellaneous efficiency (e.g. memory reduction) and robustness updates.
- Improved GitHub Actions test efficiency.
- Add
verbose
options toio.parse_energies()
andsnb-parse
, also used insnb-plot
andsnb-analyse
, and set toFalse
by default to reduce verbosity of certain SnB CLI commands. - Use
doped
functions to make oxi-state guessing (and thus defect initialisation) more efficient. - Miscellaneous efficiency and robustness updates.
- Testing updates.
distortion_metadata.json
for each defect now saved to the individual defect folders (as well as the combined total distortion metadata in the top level folder) – more likely to be retained by the user whenscp
ing around etc.- Minor updates:
- Refactor
_format_defect_name
toformat_defect_name
fromdoped
(now a public function) - Update
snb-run
to avoid possible 'file exists' warning - Update tutorials/notebooks to specify
vasp_nkred_std
to streamline workflow - Remove unnecessary
tutorials
folder with duplicate tutorial notebook (to reduce workload). - Add Binder/Colab buttons to run tutorials in the cloud from docs
- Default verbosity updates (quieten some unnecessary info messages)
- Make
distortion_metadata
overwriting/combining more robust and less (unnecessarily) verbose
- Refactor
- Bugfix of
snb-run
fromv3.3.0
: If max number of electronic steps (NELM
) threshold was reached in an ionic step, it would be falsely recognised as converged (due tounconverged
being in theOUTCAR
). This would only affectsnb-run
behaviour in some cases withv3.3.0
, and if so the user should be warned anyway withBond_Distortion_X not fully relaxed
when later runningsnb-parse
/snb-plot
/snb-groundstate
. Now fixed. To double check, one can updateShakeNBreak
and just re-runsnb-run
, and any affected distortions will be correctly determined as unconverged and be re-submitted.
- Add Dimer distortion as a targeted distortion for dimer reconstructions. It pushes two of the defect NN to a distance of 2 Å.
- Add option
distorted_atoms
to theDistortion
class to allow users to specify the indexes of the atoms to distort. - Update tests to check the new functionality.
- Update
get_homoionic_bonds
to detect homoionic bonds between different cations/anions (rather than just bonds between the same element) - Fix issue with
snb-generate
when no defect name was specified (by addingunrelaxed=True
when callingget_defect_name_from_entry
) - Update functions that read
OUTCARs
to be able to readOUTCAR.gz
files too - Update energies parsing to still work when all distortions are high energy, but warn
the user about this (i.e. only
Unperturbed
) - Update
snb-run
to add early-on detection of distortions that are stuck in high energy basins and rename them to "High_Energy" to avoid continuing their relaxation - Miscellaneous efficiency improvements and bug fixes
- Ensure the sorted
pymatgen
Structure
is created for the VASP input (fixes a rare bug inv3.2.1
andv3.2.2
where for certain structures the order of elements in the POSCAR was not properly sorted, which is usually fine, but messed with theROPT
INCAR
setting). - Plotting format updates (make legend frame more transparent to make datapoints behind it easier to see).
- Update tests
- Update docs (note about handling AFM systems)
- Consolidate
SnB
/doped
INCAR
defaults and remove redundant settings. - Ensure backwards compatiblity in defect folder name handling.
- Fix bug in
get_site_magnetizations
.
- Update CLI config handling.
- Remove
shakenbreak.vasp
module and usedoped
VASP file writing functions directly. - Add INCAR/KPOINTS/POTCAR file writing tests.
test_local.py
now deleted as these tests are now automatically run intest_input.py
/test_cli.py
ifPOTCAR
s available.
Following the major release of
doped
v2.0
, now compatible with the newpymatgen
defects code (pymatgen>2022.7.25
), this update:- Allows input of
doped
DefectsGenerator
object toDistortions
- Updates the tutorials to reflect the current recommended workflow of generating defects
with
doped
and then applyingShakeNBreak
, no longer requiring separate virtual environments 🎉
- Allows input of
- Update dependencies, as
hiphive=1.2
has been released, makingShakeNBreak
compatible withpython=3.11
🎉
- Switch to semantic versioning
- Update rattling functions to handle primitive bulk materials as well as supercells.
- Add check to
snb-run
if there are multipleOUTCAR
s present with one or less ionic steps, and if this is also the case for the current run -> warn the user. - Small fixes, formatting and docs updates.
- Add
snb-mag
function, and automatically check the magnetisation fromISPIN = 2
OUTCAR
files when continuing relaxations withsnb-run
(and change toISPIN = 1
if magnetisation is negligible). - Update handling of minimum distances and oxidation states, to deal with single-atom primitive unit cells and
systems where
pymatgen
cannot guess the oxidation state (e.g. single-elements, intermetallics etc). - Docs updates
- Make parsing of
DefectEntry
s more robust. - Update dependencies (now supporting
python=3.10
due tonumba
updates) - Refactor
CITATION.cff
toCITATIONS.md
- Update docs, formatting and cleanup.
- Update
numpy
requirement tonumpy>=1.21.2
to fixnumpy.typing.NDArray
import error. - Add News & Views free-to-read link to docs
- Updates to
snb-run
(copyjob
from parent directory if present, switch toALGO = All
if poor electronic convergence...) - Make
format_defect_name()
more robust - Update docs and
README.md
with published article links - Formatting and cleanup
- Make oxidation state guessing more efficient (previously was causing bottleneck with large cells)
- Fix oxidation state guessing for rare elements
- Add note to
Tips
docs page about bulk phase transformation behaviour - Refactor to
json
rather thanpickle
- Change
numpy
version requirement indocs/requirements.txt
tonumpy>=1.21
to work withnumpy.typing.NDArray
.
- Refactor Distortions() class to take in DefectEntry objects as input, rather than Defect objects, to be
compatible with
pymatgen-analysis-defects
. - Fix ticks and ticklabels in plots
- Specify
pandas
version in requirements.txt to equal or higher than 1.1.0 - Refactor
snb-regenerate
to execute when no arguments are specified (rather than showing help message)
- Add 'Studies using ShakeNBreak' and 'How to Cite' to readme and docs.
- Add JOSS badge to docs
- Minor updates to paper.md and paper.bib
- Add example notebook showing how to generate interstitials and apply SnB to them.
- Fix typo in example notebook and docs.
- Add comment about font installation to Installation guide.
- Update paper.md with suggestions from editor.
Add docs plots.
Docs tutorial update.
- Refactor
Distortions()
to a list or simple-format dict ofDefect
objects as input. Same forDistortions.from_structures()
- Update defect naming to
{Defect.name}_s{Defect.defect_site_index}
for vacancies/substitutions and{Defect.name}_m{Defect.multiplicity}
for interstitials. Append "a", "b", "c" etc in cases of inequivalent defects - Make
ShakeNBreak
compatible with most recentpymatgen
andpymatgen-analysis-defects
packages. - Update legend format in plots and site index/multiplicity labelling, make default format png.
- Update default charge state setting to match
pymatgen-analysis-defects
oxi state + padding approach. - A lot of additional warning and error catches.
- Miscellaneous warnings and docs updates.
- Refactor ShakeNBreak to make it compatible with
pymatgen>=2022.8.23
. NowDistortions
takes inpymatgen.analysis.defects.core.Defect
objects. - Add
Distortions.from_dict()
andDistortions.from_structures()
to generate defect distortions from a dictionary of defects (in doped format) or from a list of defect structures, respectively.
- Update rattling procedure;
stdev
be automatically set to 10% bulk bond length andseed
alternated for different distortions (set to 100*distortion_factor) to avoid rare 'stuck rattle' occurrences. - Refactor
pickle
usages toJSON
serialisation to be more robust to package (i.e. pymatgen) updates. - Update
snb-regenerate
to be more robust, can be continually rerun without generating duplicate calculations. - Update
snb-run
to consider calculations with >50 ionic steps and <2 meV energy change as converged. - Minor changes, efficiency improvements and bug fixes.
Just bumping version number to test updated GH Actions pip-install-test
workflow.
- Updated defect name handling to work for all conventions
- More robust
snb-generate
and plotting behaviour - Add CLI summary GIF to docs and README
- Updated
snb-run
behaviour to catch high-energies and forces error to improve efficiency - Many miscellaneous tests and fixes
- Docs updates
- Fonts now included in
package_data
so can be installed withpip
fromPyPI
- Refactoring
distortion_plots
plot saving to saving to defect directories, and preventing overwriting of previous plots - Miscellaneous tests and fixes
- Add summary GIF to docs and README
- Handling for partial oxidation state input
- Setting
EDIFFG = -0.01
andlocal_rattle = False
as default
- Update CLI commands (snb-parse, analyse, plot and groundstate can all now be run with no arguments within a defect folder)
- Update custom font
- Update groundstate() tests
- Update plotting
- Test for pip install
- Automatic release and upload to pypi
- Add ShakeNBreak custom font, and automatise its installation
- Update ShakeNBreak default INCAR for VASP relaxations
- Formatting
- Docs formatting
- Update pymatgen version to v2022.7.25, while refactoring to be compatible with v2022.8.23 takes place.
Release with full code functionality (CLI and Python), pre JOSS submission.
Release with final module architecture of the code. Implemented command-line interface and I/O to codes other than VASP.
First release with full functionality present, except CLI and I/O to codes other than VASP.
Initial version of the package.
Script files:
- BDM
- distortions
- energy_lowering_distortions
- plot_BDM
- analyse_defects
- champion_defects_rerun