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).
"""
@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]
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,
}