element_coder
Encode chemical elements numerically and decode numerical representations of elements.
💪 Getting Started
from element_coder import encode, decode
decode(encode('Si', 'mod_pettifor'), 'mod_pettifor')
>'Si'
Command Line Interface
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
🚀 Installation
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 .
Background
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.
👐 Contributing
Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.rst for more information on getting involved.
👋 Attribution
⚖️ License
The code in this package is licensed under the MIT License.
🍪 Cookiecutter
This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.
🛠️ For Developers
See developer instrutions
The final section of the README is for if you want to get involved by making a code contribution.
❓ Testing
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.
📦 Making a Release
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.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.
Metadata
Release files for element-coder 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| element_coder-0.0.8.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| element_coder-0.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.1 MB
Release files / element_coder-0.0.8.tar.gz
| Download URL | element_coder-0.0.8.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5a04e318368337e0e32197469d6e8f9c05e027c357a711c7094ac4cc7c93fbef
|
|
BLAKE2b-256 checksum How to use checksums |
0aa9822070ec8bffe7ebfc71c85df538361697d62305dc1071c1b7c153e86a16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.8.13
|
Release files / element_coder-0.0.8-py3-none-any.whl
| Download URL | element_coder-0.0.8-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f954d97a6b565af9dc901e5b8a10fa91471464af7f92a8f79aec927c87b36f73
|
|
BLAKE2b-256 checksum How to use checksums |
05f989ea133760cb3c20c660d271633702a9d8a67d3761ebcdd4945e2ffd7c87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.8.13
|