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
H
also 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
H
The most recent release can be installed from PyPI with:
$ pip install element_coder
The most recent code and data can be installed directly from GitHub with:
$ pip install git+https://github.com/kjappelbaum/element-coder.git
To 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:
$ tox
Additionally, 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 finish
This script does the following:
- Uses BumpVersion to switch the version number in the
setup.cfg
andsrc/element_coder/version.py
to not have the-dev
suffix - Packages the code in both a tar archive and a wheel
- Uploads to PyPI using
twine
. Be sure to have a.pypirc
file 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 minor
after.