Source code for att.config.seed

"""Global seed management for deterministic reproducibility."""

import random
import numpy as np

_GLOBAL_SEED: int | None = None
_GLOBAL_RNG: np.random.Generator | None = None


[docs] def set_seed(seed: int) -> None: """Set global random seed for all stochastic operations. Seeds NumPy, SciPy (via NumPy), and Python's random module. Call once at the start of any experiment or notebook. """ global _GLOBAL_SEED, _GLOBAL_RNG _GLOBAL_SEED = seed _GLOBAL_RNG = np.random.default_rng(seed) np.random.seed(seed) random.seed(seed)
[docs] def get_rng(seed: int | None = None) -> np.random.Generator: """Get a numpy Generator, using provided seed or global state. If seed is given, creates a new Generator from that seed. If seed is None, returns the global Generator (or creates one from seed=0). """ if seed is not None: return np.random.default_rng(seed) global _GLOBAL_RNG if _GLOBAL_RNG is None: _GLOBAL_RNG = np.random.default_rng(0) return _GLOBAL_RNG
[docs] def get_seed() -> int | None: """Return the current global seed, or None if not set.""" return _GLOBAL_SEED