SHRY (Suite for High-throughput generation of models with atomic substitutions implemented by python) is a tool for generating unique ordered structures corresponding to a given disordered structure.
Please cite the following paper:
SHRY: Application of Canonical Augmentation to the Atomic Substitution Problem, G.I. Prayogo*, A. Tirelli, K. Utimula, K. Hongo, R. Maezono, and K. Nakano*, J. Chem. Inf. Model., 62, 2909-2915 (2022), DOI:10.1021/acs.jcim.2c00389
SHRY can be obtained from PyPI
pip install shry
For Windows users, if you don't have Python already, you can try, for example, installing Python from the Microsoft store following instructions on this page.
Then install SHRY just like above within PowerShell or your favourite terminal.
pip install shry
If you prefer to install from source, instead follow the procedures below.
git clone https://github.com/giprayogo/SHRY.git
cd SHRY
pip install -e .
You can prepare a CIF file with partial occupations.
# label element x y z occupation Sm1 Sm 0.000 0.00 0.00 1.000 Fe1 Fe 0.250 0.25 0.25 0.400 Nb1 Nb 0.250 0.25 0.25 0.600 Fe2 Fe 0.278 0.50 0.00 1.000
SHRY
will automatically stop if the total occupancy of a site is
either less or more than 1.0. To simulate vacancies, create a pseudo
atom with species X
.
You can readily check the number of total symmetry-inquivalent structures using the following command.
shry --count-only STRUCTURE_CIF
This operation is based on Polya enumeration and takes much less time than a proper generation.
Sometimes a supercell is required to fit in finer concentrations.
SHRY
accepts either 3-digit (diagonal) or 9-digit (non-diagonal)
format to specify the supercell's scaling matrix. For example a 2x2x1
supercell can be specified by either
shry -s 2 2 1 --count-only STRUCTURE_CIF
or
shry -s 2 0 0 0 2 0 0 0 1 --count-only STRUCTURE_CIF
Finally, you can generate symmetry-inequivalent structures using the following command:
shry -s 2 2 1 STRUCTURE_CIF
The generated symmetry-inequivalent structures are saved in sliceXX directories.
For additional information, you can use the help command:
shry -h
or you can refer to the documentation.
The documentation is available here.
Work on the devel or on a new branch
git merge <new branch> devel # if you work on a new branch.
git push origin devel # A GitHub Action triggers pytests.
Check the next-version version
# Confirm the version number via `setuptools-scm`
python -m setuptools_scm
e.g., 1.1.4.dev28+gceef293.d20221123 -> <next-version> = v1.1.4 or v1.1.4-alpha(for pre-release)
Add and push with the new tag
# Push with tag
git tag <next-version> # e.g., git tag v1.1.4 # Do not forget "v" before the version number!
git push origin devel --tags # or to the new branch
Send a pull request to the master branch on GitHub. After the pull request is approved and the devel branch is merged to the master, a GitHub Action checks if the automatic deploy works using test-pyPI (if the commit is tagged correctly, e.g., v1.1.0).
Finally, do a new release with a release note on GitHub. The new release trigggers an implemented GitHub Action that automatically uploads the package to PyPI (if the commit is tagged correctly, e.g., v1.1.0).
If you want to contribute to the project, report a bug, or ask for a new feature, please raise an issue.