Source code for biogeme.latent_variables.normalization_refs

from __future__ import annotations

"""Semantic references to normalizable parameters."""

from dataclasses import dataclass  # noqa: E402


[docs] @dataclass(frozen=True, slots=True) class ParameterRef: """Base semantic reference. Subclasses identify one semantically meaningful model parameter. """
[docs] def key(self) -> tuple: return (self.__class__.__name__,)
[docs] @dataclass(frozen=True, slots=True) class StructuralCoefficient(ParameterRef): latent_name: str variable_name: str
[docs] def key(self) -> tuple: return self.__class__.__name__, self.latent_name, self.variable_name
[docs] @dataclass(frozen=True, slots=True) class StructuralIntercept(ParameterRef): latent_name: str
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.latent_name)
[docs] @dataclass(frozen=True, slots=True) class StructuralSigma(ParameterRef): latent_name: str
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.latent_name)
[docs] @dataclass(frozen=True, slots=True) class MeasurementIntercept(ParameterRef): indicator_name: str
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.indicator_name)
[docs] @dataclass(frozen=True, slots=True) class MeasurementLoading(ParameterRef): latent_name: str indicator_name: str
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.latent_name, self.indicator_name)
[docs] @dataclass(frozen=True, slots=True) class MeasurementSigma(ParameterRef): indicator_name: str
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.indicator_name)
[docs] @dataclass(frozen=True, slots=True) class ThresholdFirst(ParameterRef): type_name: str
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.type_name)
[docs] @dataclass(frozen=True, slots=True) class ThresholdDelta(ParameterRef): type_name: str index: int
[docs] def key(self) -> tuple: return (self.__class__.__name__, self.type_name, self.index)