moved definitions of data classes into module where used
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
"""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_prediction_dict(
|
||||
cls,
|
||||
prediction_dict: dict,
|
||||
) -> ModelData:
|
||||
"""Instantiate from prediction dictionary."""
|
||||
kwargs = {
|
||||
'visual_syntax': VisualSyntaxData.from_tensor(
|
||||
prediction_dict['visual_syntax'],
|
||||
),
|
||||
'contact': ContactData.from_tensor(
|
||||
prediction_dict['contact'],
|
||||
),
|
||||
'angle': AngleData.from_tensor(
|
||||
prediction_dict['angle'],
|
||||
),
|
||||
'point_of_view': PointOfViewData.from_tensor(
|
||||
prediction_dict['point_of_view'],
|
||||
),
|
||||
'distance': DistanceData.from_tensor(
|
||||
prediction_dict['distance'],
|
||||
),
|
||||
'modality_lighting': ModalityLightingData.from_tensor(
|
||||
prediction_dict['modality_lighting'],
|
||||
),
|
||||
'modality_color': ModalityColorData.from_tensor(
|
||||
prediction_dict['modality_color'],
|
||||
),
|
||||
'modality_depth': ModalityDepthData.from_tensor(
|
||||
prediction_dict['modality_depth'],
|
||||
),
|
||||
'information_value': InformationValueData.from_tensor(
|
||||
prediction_dict['information_value'],
|
||||
),
|
||||
'framing': FramingData.from_tensor(
|
||||
prediction_dict['framing'],
|
||||
),
|
||||
'salience': SalienceData.from_tensor(
|
||||
prediction_dict['salience'],
|
||||
),
|
||||
}
|
||||
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)
|
||||
Reference in New Issue
Block a user