Source code for biogeme.latent_variables.naming

from __future__ import annotations

"""Naming policy for resolved model objects."""

from dataclasses import dataclass
from typing import Protocol


[docs] class NamingPolicy(Protocol):
[docs] def structural_prefix(self, latent_name: str) -> str: ...
[docs] def structural_beta_name(self, latent_name: str, variable_name: str) -> str: ...
[docs] def structural_intercept_name(self, latent_name: str) -> str: ...
[docs] def structural_sigma_name(self, latent_name: str) -> str: ...
[docs] def structural_draw_name(self, latent_name: str) -> str: ...
[docs] def measurement_prefix(self, indicator_name: str) -> str: ...
[docs] def measurement_intercept_name(self, indicator_name: str) -> str: ...
[docs] def measurement_loading_name(
self, latent_name: str, indicator_name: str ) -> str: ...
[docs] def measurement_sigma_name(self, indicator_name: str) -> str: ...
[docs] def threshold_tau1_name(self, type_name: str) -> str: ...
[docs] def threshold_delta_name(self, type_name: str, index: int) -> str: ...
[docs] @dataclass(frozen=True, slots=True) class DefaultNamingPolicy:
[docs] def structural_prefix(self, latent_name: str) -> str: return f'struct_{latent_name}'
[docs] def structural_beta_name(self, latent_name: str, variable_name: str) -> str: return f'{self.structural_prefix(latent_name)}_{variable_name}'
[docs] def structural_intercept_name(self, latent_name: str) -> str: return f'{self.structural_prefix(latent_name)}_intercept'
[docs] def structural_sigma_name(self, latent_name: str) -> str: return f'{self.structural_prefix(latent_name)}_sigma'
[docs] def structural_draw_name(self, latent_name: str) -> str: return f'{self.structural_prefix(latent_name)}_draws'
[docs] def measurement_prefix(self, indicator_name: str) -> str: return f'measurement_{indicator_name}'
[docs] def measurement_intercept_name(self, indicator_name: str) -> str: return f'measurement_intercept_{indicator_name}'
[docs] def measurement_loading_name(self, latent_name: str, indicator_name: str) -> str: return f'measurement_coefficient_{latent_name}_{indicator_name}'
[docs] def measurement_sigma_name(self, indicator_name: str) -> str: return f'{self.measurement_prefix(indicator_name)}_sigma'
[docs] def threshold_tau1_name(self, type_name: str) -> str: return f'{type_name}_tau_1'
[docs] def threshold_delta_name(self, type_name: str, index: int) -> str: return f'{type_name}_delta_{index}'