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}'