Semiconducting Materials from Analogy and Chemical Theory (SMACT) is a collection of rapid screening tools that uses data about chemical elements.
If you torture the data enough, nature will always confess - Roland Coase (from 'How should economists choose?')
The purpose of SMACT is to facilitate the high-throughput screening and design of functional materials. It follows a top-down approach where a set of element combinations is generated and then screened using rapid chemical filters. It can be used as part of a multi-technique workflow or to feed machine learning models for materials.
- smact library containing:
- __init__.py Contains the core
Element
andSpecies
classes. - data_loader.py Handles the loading of external data used to initialise the core
smact.Element
andsmact.Species
classes. - screening.py Used for generating and applying filters to compositional search spaces.
- properties.py A collection of tools for estimating useful properties based on composition.
- lattice.py Given the sites, multiplicities and possible oxidation states at those sites, this reads from the database and generates all possible stoichiometeries.
- builder.py Builds some common lattice structures, given the chemical composition.
- lattice_parameters.py Estimation of lattice parameters for various lattice types using covalent/ionic radii.
- distorter.py A collection of functions for enumerating and then substituting on inequivalent sites of a sub-lattice.
- __init__.py Contains the core
The main language is Python 3 and basic requirements are Numpy and Scipy. The Atomic Simulation Environment (ASE), spglib, and pymatgen �are also required for many components.
pip install git+git://github.com/WMD-group/SMACT.git
On a unix-like system, simply add the directory containing this README file to your PYTHONPATH. e.g. in ~/.bashrc
export PYTHONPATH="/home/username/src/smact:$PYTHONPATH"
SMACT's features are accessed through Python scripts, importing classes and functions as needed. Some applications are available in our examples folder, as well as in the SMACT workflow respository.
Python code and original data tables are licensed under the GNU General Public License (GPL) v3.
The following files have their own licenses: data/elements.txt is from the OpenBabel project and licensed under the GPL v2, which is included in the parent folder.
Please use the Issue Tracker to report bugs or request features. While we hope that most questions can be answered by searching the docs, we welcome new questions on the issue tracker, especially if they helps us improve the docs!
We are always looking for ways to make SMACT better and more useful to the wider community; contributions are very welcome. Please use the "Fork and Pull" workflow to make contributions and stick as closely as possible to the following:
- Code style should comply with PEP8 where possible. Google's house style is also helpful, including a good model for docstrings.
- Please use comments liberally when adding nontrivial features, and take the chance to clean up other people's code while looking at it.
- Add tests wherever possible, and use the test suite to check if you broke anything.
Testing modules should be pass/fail and wrapped into tests/test.py.
Run the tests using
python -m smact.tests.test -v
. (The final-v
is optional and adds more detail to the output.)