Usage

Logging

element_coder uses the loguru for logging. By default, logging from element_coder is disabled to not interfere with your logs.

However, you can easily customize the logging:

import sys
from loguru import logger

# enable element_coder logging
logger.enable("element_coder")

# define the logging level
LEVEL = "INFO || DEBUG || WARNING || etc."

# set the handler
# for logging to stdout
logger.add(sys.stdout, level=LEVEL)
# or for logging to a file
logger.add("my_log_file.log", level=LEVEL, enqueue=True)

In many cases, however, you might find it convenient to simply call enable_logging()

from element_coder.utils import enable_logging

enable_logging()

which will enable logging with sane defaults (i.e. logging to stderr for INFO and WARNING levels).

Numerically encode an Element.

encode(element, property)[source]

Numerically encode an element.

Parameters
  • element (Union[Element, str, int]) – Input element, e.g. “Fe”, or Element(“Fe”), or atomic number (Z) as int.

  • property (str) – Property that was used for encoding, e.g. “mod_pettifor”

Raises

ValueError – If element is not of type str or pymatgen.core.Element

Returns

Numerical encoding of element.

Return type

Union[float, int, np.ndarray]

Examples

>>> encode("Fe", "mod_pettifor")
70

Decode an elemental encoding.

decode(encoding, property, metric='euclidean')[source]

Decode an elemental encoding.

Parameters
  • encoding (Union[int, float, np.ndarray]) – Numerical encoding of an element

  • property (str) – Property that was used for encoding, e.g. “mod_pettifor”

  • metric (Union[str, callable] optional) – Metric to measure distance between (noisy) input encoding and tabulated encodings. If a string, the distance function can be ‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’, ‘euclidean’, ‘hamming’, ‘jaccard’, ‘jensenshannon’, ‘kulsinski’, ‘kulczynski1’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’. Defaults to “euclidean”.

Returns

Element symbol

Return type

str

Examples

>>> decode(80, "mod_pettifor")
'Tl'
decode_many(encoding, property, metric='euclidean')[source]

Decode a collecgtio of elemental encodings.

Parameters
  • encoding (ArrayLike) – Numerical encodings of elements

  • property (str) – Property that was used for encoding, e.g. “mod_pettifor”

  • metric (Union[str, callable] optional) – Metric to measure distance between (noisy) input encoding and tabulated encodings. If a string, the distance function can be ‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’, ‘euclidean’, ‘hamming’, ‘jaccard’, ‘jensenshannon’, ‘kulsinski’, ‘kulczynski1’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’. Defaults to “euclidean”.

Returns

Numpy array of element symbols

Return type

np.array

Examples

>>> decode([80, 90], "mod_pettifor")
['Tl', 'Sb']