Source code for prolint.config.units

"""Unit conversion and simulation parameters.

This module provides unit conversion factors and simulation parameter
containers for ProLint calculations.
"""

from enum import Enum
from dataclasses import dataclass, field


[docs] class UnitConversionFactor(Enum): """Conversion factors from time units to seconds. Each member's value represents the unit in seconds. Attributes ---------- fs : float Femtoseconds (1e-15 s). ps : float Picoseconds (1e-12 s). ns : float Nanoseconds (1e-9 s). us : float Microseconds (1e-6 s). ms : float Milliseconds (1e-3 s). s : float Seconds (1.0 s). """
[docs] fs = 1e-15
[docs] ps = 1e-12
[docs] ns = 1e-9
[docs] us = 1e-6
[docs] ms = 1e-3
[docs] s = 1.0
@dataclass(frozen=True)
[docs] class SimulationParams: """Simulation parameters for contact calculations. Attributes ---------- units : str Time units for output (default: "us"). normalizer : str Normalization method (default: "actual_time"). unit_conversion_factor : float Factor to convert trajectory time to output units. norm_factor : float Normalization factor for contact durations. """
[docs] units: str = "us"
[docs] normalizer: str = "actual_time"
[docs] unit_conversion_factor: float = field( default_factory=lambda: UnitConversionFactor.ps.value / UnitConversionFactor.us.value )
[docs] norm_factor: float = 1.0
# Legacy dict for backward compatibility
[docs] DEFAULT_SIM_PARAMS = { "units": "us", "normalizer": "actual_time", "unit_conversion_factor": UnitConversionFactor.ps.value / UnitConversionFactor.us.value, "norm_factor": 1, }