defaults.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # pyright: basic
  2. from __future__ import annotations
  3. import numpy as np
  4. DEFAULT_BACKENDS = ["ensemble", "bayesian"]
  5. DEFAULT_POSITIVE_CLASS_INDEX = 0
  6. DEFAULT_CALIBRATION_BINS = 10
  7. DEFAULT_BAYESIAN_MC_PASSES = 20
  8. DEFAULT_DECISION_THRESHOLD = 0.5
  9. THRESHOLD_START = 0.5
  10. THRESHOLD_STOP = 0.95
  11. THRESHOLD_STEP = 0.05
  12. NOISE_FACTOR_MIN = 0.0
  13. NOISE_FACTOR_MAX = 7.0
  14. NOISE_FACTOR_COUNT = 21
  15. UNCERTAINTY_CUTOFF_COUNT = 21
  16. def threshold_grid() -> np.ndarray:
  17. if THRESHOLD_STEP <= 0:
  18. raise ValueError("THRESHOLD_STEP must be > 0")
  19. if THRESHOLD_STOP < THRESHOLD_START:
  20. raise ValueError("THRESHOLD_STOP must be >= THRESHOLD_START")
  21. n = int(round((THRESHOLD_STOP - THRESHOLD_START) / THRESHOLD_STEP))
  22. return np.linspace(THRESHOLD_START, THRESHOLD_STOP, num=n + 1, dtype=float)
  23. def uncertainty_cutoff_percentiles() -> np.ndarray:
  24. return np.linspace(0.0, 100.0, num=UNCERTAINTY_CUTOFF_COUNT, dtype=float)
  25. def noise_factor_grid() -> list[float]:
  26. factors = np.linspace(
  27. NOISE_FACTOR_MIN,
  28. NOISE_FACTOR_MAX,
  29. num=NOISE_FACTOR_COUNT,
  30. dtype=float,
  31. )
  32. return [float(v) for v in factors]