83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
"""Definition of ModelData data model."""
|
|
from __future__ import annotations
|
|
|
|
from .angle import AngleData
|
|
from .contact import ContactData
|
|
from .data_model import DataModel
|
|
from .distance import DistanceData
|
|
from .framing import FramingData
|
|
from .information_value import InformationValueData
|
|
from .modality_color import ModalityColorData
|
|
from .modality_depth import ModalityDepthData
|
|
from .modality_lighting import ModalityLightingData
|
|
from .point_of_view import PointOfViewData
|
|
from .salience import SalienceData
|
|
from .visual_syntax import VisualSyntaxData
|
|
|
|
|
|
class ModelData(DataModel):
|
|
"""ModelData model for data IO with combined ML model."""
|
|
visual_syntax: VisualSyntaxData
|
|
contact: ContactData
|
|
angle: AngleData
|
|
point_of_view: PointOfViewData
|
|
distance: DistanceData
|
|
modality_lighting: ModalityLightingData
|
|
modality_color: ModalityColorData
|
|
modality_depth: ModalityDepthData
|
|
information_value: InformationValueData
|
|
framing: FramingData
|
|
salience: SalienceData
|
|
|
|
@classmethod
|
|
def from_random(cls) -> ModelData:
|
|
"""Instantiate with random numbers."""
|
|
kwargs = {
|
|
field: field_info.annotation.from_random() # type: ignore
|
|
for field, field_info
|
|
in cls.model_fields.items()
|
|
}
|
|
return cls(**kwargs)
|
|
|
|
@classmethod
|
|
def from_annotations(
|
|
cls,
|
|
visual_syntax: str,
|
|
contact: str,
|
|
angle: str,
|
|
point_of_view: str,
|
|
distance: str,
|
|
modality_lighting: str,
|
|
modality_color: str,
|
|
modality_depth: str,
|
|
information_value: str,
|
|
framing: str,
|
|
salience: str,
|
|
) -> ModelData:
|
|
"""Instantiate from annotation."""
|
|
kwargs = {
|
|
'visual_syntax': VisualSyntaxData
|
|
.from_choice(visual_syntax),
|
|
'contact': ContactData
|
|
.from_choice(contact),
|
|
'angle': AngleData
|
|
.from_choice(angle),
|
|
'point_of_view': PointOfViewData
|
|
.from_choice(point_of_view),
|
|
'distance': DistanceData
|
|
.from_choice(distance),
|
|
'modality_lighting': ModalityLightingData
|
|
.from_choice(modality_lighting),
|
|
'modality_color': ModalityColorData
|
|
.from_choice(modality_color),
|
|
'modality_depth': ModalityDepthData
|
|
.from_choice(modality_depth),
|
|
'information_value': InformationValueData
|
|
.from_choice(information_value),
|
|
'framing': FramingData
|
|
.from_choice(framing),
|
|
'salience': SalienceData
|
|
.from_choice(salience),
|
|
}
|
|
return cls(**kwargs)
|