bobleesj.utils.sorters package

Submodules

bobleesj.utils.sorters.element_sorter module

class bobleesj.utils.sorters.element_sorter.ElementSorter(label_mapping: dict = None, excel_path: str = None)[source]

Bases: object

Sort chemical elements by custom labels, Mendeleev numbers, or alphabetically.

Parameters:
  • label_mapping (dict, optional) – The custom label mapping for sorting elements.

  • excel_path (str, optional) – The path to Excel file with custom labels. It overrides label_mapping if provided.

Examples

>>> element_sorter = ElementSorter(excel_path="labels.xlsx")
>>> element_sorter.sort(["Fe", "Si"], method="custom")
('Fe', 'Si')
>>> custom_labels = {
...     2: {"A": ["Fe", "Co"], "B": ["Si", "Ga"]},
...     3: {"R": ["Sc", "Y"], "M": ["Fe", "Co"],
            "X": ["Si", "Ga"]},
...     4: {"A": ["Sc", "Y"], "B": ["Fe", "Co"],
            "C": ["Si", "Ga"], "D": ["Gd", "Tb", "Dy"]},
... }
>>> element_sorter = ElementSorter(label_mapping=custom_labels)
>>> element_sorter.sort(["Sc", "Fe", "Si"], method="custom")
('Sc', 'Fe', 'Si')
>>> element_sorter.sort(["O", "Fe"], method="mendeleev")
('O', 'Fe')
sort(elements: list[str], method=None, descending: bool = True) tuple[source]

Sort a list of elements.

Parameters:
  • elements (list of str) – Element symbols to sort (e.g., [‘Fe’, ‘O’]).

  • method (str or None, optional) – ‘custom’: custom label-based sorting. ‘mendeleev’: by Mendeleev numbers. None/other: alphabetical (default).

  • descending (bool, default=True) – Sort descending.

Returns:

Sorted element symbols.

Return type:

tuple

Raises:

ValueError – If method is unsupported or custom sorting fails.

Examples

>>> elements.sort(["O", "Fe"], descending=False)
('Fe', 'O')
>>> elements.sort(['O', 'Fe'], method="mendeleev")
('O', 'Fe')
>>> elements.sort(["Fe", "O"], method="custom")
('Fe', 'O')