Encode chemical elements numerically and decode numerical representations of elements.
from element_coder import encode, decode
decode(encode('Si', 'mod_pettifor'), 'mod_pettifor')
>'Si'The element_coder.encode and element_coder.decode command line tools are automatically installed. They can
be used from the shell with the --help flag to show help:
$ element_coder.encode H
102$ element_coder.decode 102
Halso works for vector-valued encodings
$ element_coder.decode 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 --property cgcnn
HThe most recent release can be installed from PyPI with:
$ pip install element_coderThe most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/kjappelbaum/element-coder.gitTo install in development mode, use the following:
$ git clone git+https://github.com/kjappelbaum/element-coder.git
$ cd element-coder
$ pip install -e .For some applications (of ML in chemistry) elements must be numerically encoded. There are many libraries that do that. For most applications, even pymatgen can get the job done:
from pymatgen.core import Element
def encode_element(element: Element, property: str):
return getattr(element, property)However, this code has some issues, wherefore there are many other libraries that attempt to solve this issue including mendeleev, elementy, EIMD. However,
- none of these libraries supported all the properties I was interested in
- none of these libraries supported decoding of descriptors into Elements.
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.rst for more information on getting involved.
The code in this package is licensed under the MIT License.
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.
See developer instrutions
The final section of the README is for if you want to get involved by making a code contribution.
After cloning the repository and installing tox with pip install tox, the unit tests in the tests/ folder can be
run reproducibly with:
$ toxAdditionally, these tests are automatically re-run with each commit in a GitHub Action.
After installing the package in development mode and installing
tox with pip install tox, the commands for making a new release are contained within the finish environment
in tox.ini. Run the following from the shell:
$ tox -e finishThis script does the following:
- Uses BumpVersion to switch the version number in the
setup.cfgandsrc/element_coder/version.pyto not have the-devsuffix - Packages the code in both a tar archive and a wheel
- Uploads to PyPI using
twine. Be sure to have a.pypircfile configured to avoid the need for manual input at this step - Push to GitHub. You'll need to make a release going with the commit where the version was bumped.
- Bump the version to the next patch. If you made big changes and want to bump the version by minor, you can
use
tox -e bumpversion minorafter.