Source code for irradiapy.config

"""Module for configuration variables."""

from pathlib import Path

import matplotlib.pyplot as plt

from irradiapy.debris_database import DebrisDatabase

# region General

#: str: Format for integers in output files.
INT_FORMAT = "%d"
#: str: Format for floats in output files.
FLOAT_FORMAT = "%g"
#: str: Encoding for text files.
ENCODING = "utf-8"
#: str: newline character for text files used by writers.
NEWLINE = "\n"
#: list[str]: List of atom fields to exclude from output in LAMMPS files.
EXCLUDED_ITEMS = []


[docs] def use_style(latex: bool = False) -> None: """Set the style for matplotlib plots. It uses the colour universal design (CUD) palette for colour-blind friendly plots. Parameters ---------- latex : bool, optional (default=False) If True, use LaTeX for text rendering in plots (slower). I might require other software to be installed on your system. """ if latex: plt.style.use("irradiapy.styles.latex") else: plt.style.use("irradiapy.styles.nolatex")
# endregion # region SRIM #: pathlib.Path: TRIM.exe directory (parent folder) _srim_dir = None # pylint: disable=invalid-name
[docs] def set_srim_dir(path: str | Path) -> None: """Set the path to the TRIM.exe directory. Parameters ---------- path : str | Path Path to the TRIM.exe directory (parent folder). """ global _srim_dir # pylint: disable=global-statement _srim_dir = Path(path)
[docs] def get_srim_dir() -> Path: """Return the path to the TRIM.exe directory. Returns ------- Path Path to the TRIM.exe directory (parent folder). """ if _srim_dir is None: raise RuntimeError( "No SRIM directory configured. Call " "irradiapy.config.set_srim_dir(path) before running SRIM workflows." ) return _srim_dir
[docs] def clear_srim_dir() -> None: """Clear the configured path to the TRIM.exe directory.""" global _srim_dir # pylint: disable=global-statement _srim_dir = None
# endregion # region Debris database #: DebrisDatabase | None: Global MD debris database used by SRIM/debris workflows. _debris_database: DebrisDatabase | None = None # pylint: disable=invalid-name
[docs] def set_debris_database( path: str | Path, electronic_interactions: str, target: dict[str, float], lattice: str, interatomic_potentials: list[set[str]] | None = None, doi: set[str] | None = None, contributors: list[set[str]] | None = None, ) -> DebrisDatabase: """Configure the global MD debris database. Parameters ---------- path : str | Path Database root path. electronic_interactions : str Electronic interactions metadata required for selected datasets. target : dict[str, float] Target stoichiometry metadata required for selected datasets. lattice : str Lattice type metadata required for selected datasets. interatomic_potentials : list[set[str]] | None, optional Accepted interatomic potential metadata sets. doi : set[str] | None, optional Accepted DOI metadata values. contributors : list[set[str]] | None, optional Accepted contributor metadata sets. Returns ------- DebrisDatabase Configured debris database. Note ---- Recoil is not a database-level filter because it is unknown when using SPECTRA-PKA. """ global _debris_database # pylint: disable=global-statement _debris_database = DebrisDatabase( root=path, electronic_interactions=electronic_interactions, target=target, lattice=lattice, interatomic_potentials=interatomic_potentials, doi=doi, contributors=contributors, ) return _debris_database
[docs] def get_debris_database() -> DebrisDatabase: """Return the configured global MD debris database.""" if _debris_database is None: raise RuntimeError( "No debris database configured. Call " "irradiapy.config.set_debris_database(" "path, electronic_interactions, target, lattice) before running " "SRIM/debris workflows." ) return _debris_database
[docs] def clear_debris_database() -> None: """Clear the configured global MD debris database.""" global _debris_database # pylint: disable=global-statement _debris_database = None
# endregion