skip to navigation
skip to content


Semiconducting Materials by Analogy and Chemical Theory


**Semiconducting Materials from Analogy and Chemical Theory** (SMACT) is a collection of fast screening tools from elemental data.


*If you torture the data enough, nature will always confess* - Roland Coase (from 'How should economists choose?')

[![Documentation Status](](



* **smact** library containing:
* ****
* **** A collection of functions providing elemental properties.
* **** Given the sites, multiplicities and possible oxidation states
at those sites, this reads from the database and generates all possible
* **** Builds some common lattice structures, given the chemical
* **** A collection of functions for enumerating and then
substituting on inequivalent sites of a sub-lattice.


The main language is Python 2.7 with Numpy, Scipy and Matplotlib.
The [Atomic Simulation Environment](
(ASE) is required for some components, as is [spglib](

The [chemlab]( project is not
currently used, but is considered "friendly"; we will try to avoid
namespace clashes and it may be used for some features in the future.
Needed modifications will be made in [ajjackson's
but are expected to make it upstream fairly rapidly.


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.
In addition to the `examples` folder, some practical applications using are also available from [](

License and attribution

SMACT is produced by the Walsh Materials Design group. 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.


[D. W. Davies et al,
"Computational Screening of All Stoichiometric Inorganic Materials" *Chem* **1**, 617 (2016)](

[K. T. Butler et al,
"Computational materials design of crystalline solids", *Chemical Society Reviews* (2016)](

[B. R. Pamplin, "A systematic method of deriving new semiconducting
compounds by structural analogy", *J. Phys. Chem. Solids*
**25**, 675 (1964)](

[Mendeley "Materials Design" Reading List](

Development notes

Code style should comply with [PEP
8]( where possible.
[Google's house
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.

Although the project is based in Python 2.7.x, please use new-style classes and
string formatting; as well as enjoying their elegance and power, this will make
it much easier to port to Python 3 if this is ever desired.

Testing modules should be pass/fail and wrapped into **tests/**.
Tests need to be run from the main directory (i.e. with `python tests/`).  
File Type Py Version Uploaded on Size
SMACT-1.2-py2.py3-none-any.whl (md5) Python Wheel any 2017-02-06 56KB
SMACT-1.2.tar.gz (md5) Source 2017-02-06 46KB