Convert com, span, halflife to alpha.
(
com: float | None = None,
span: float | None = None,
halflife: float | None = None,
alpha: float | None = None,
)
| 13 | |
| 14 | |
| 15 | def _get_alpha( |
| 16 | com: float | None = None, |
| 17 | span: float | None = None, |
| 18 | halflife: float | None = None, |
| 19 | alpha: float | None = None, |
| 20 | ) -> float: |
| 21 | """ |
| 22 | Convert com, span, halflife to alpha. |
| 23 | """ |
| 24 | valid_count = count_not_none(com, span, halflife, alpha) |
| 25 | if valid_count > 1: |
| 26 | raise ValueError("com, span, halflife, and alpha are mutually exclusive") |
| 27 | |
| 28 | # Convert to alpha |
| 29 | if com is not None: |
| 30 | if com < 0: |
| 31 | raise ValueError("commust satisfy: com>= 0") |
| 32 | return 1 / (com + 1) |
| 33 | elif span is not None: |
| 34 | if span < 1: |
| 35 | raise ValueError("span must satisfy: span >= 1") |
| 36 | return 2 / (span + 1) |
| 37 | elif halflife is not None: |
| 38 | if halflife <= 0: |
| 39 | raise ValueError("halflife must satisfy: halflife > 0") |
| 40 | return 1 - np.exp(np.log(0.5) / halflife) |
| 41 | elif alpha is not None: |
| 42 | if not 0 < alpha <= 1: |
| 43 | raise ValueError("alpha must satisfy: 0 < alpha <= 1") |
| 44 | return alpha |
| 45 | else: |
| 46 | raise ValueError("Must pass one of comass, span, halflife, or alpha") |
| 47 | |
| 48 | |
| 49 | class RollingExp(Generic[T_DataWithCoords]): |
no test coverage detected
searching dependent graphs…