Skip to content

modosaic.core.modality

modosaic.core.modality

Modality

Modality(model, postprocessor, validators=None)

Bases: ABC

Base class for an executable modality.

A modality bundles the three pieces needed by the pipeline: a generator, a postprocessor, and optional validators. Subclasses provide the concrete Modalities value.

Attributes:

Name Type Description
model ModalityGenerator[T]

Generator that produces the modality output.

validators list[ValidatorStep[T, Any]]

Validation steps executed after generation.

postprocessor ModalityPostprocessor[T]

Converts accepted generated output into artifacts.

Initialize a modality from generator, postprocessor, and validators.

Parameters:

Name Type Description Default
model ModalityGenerator[T]

Generator used to produce the modality output.

required
postprocessor ModalityPostprocessor[T]

Artifact builder for accepted outputs.

required
validators Iterable[ModalityValidator[T, Any] | ValidatorStep[T, Any]] | None

Optional validator objects or fully configured ValidatorStep instances.

None
Source code in modosaic/core/modality.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
def __init__(
        self,
        model: ModalityGenerator[T],
        postprocessor: ModalityPostprocessor[T],
        validators: Iterable[
                        ModalityValidator[T, Any] | ValidatorStep[T, Any]
                        ] | None = None,
) -> None:
    """Initialize a modality from generator, postprocessor, and validators.

    Args:
        model: Generator used to produce the modality output.
        postprocessor: Artifact builder for accepted outputs.
        validators: Optional validator objects or fully configured
            `ValidatorStep` instances.
    """
    self.model = model
    self.postprocessor = postprocessor
    self.validators = [
        self._build_validator_step(validator)
        for validator in validators or []
    ]

modality abstractmethod property

modality

Return the modality type represented by this object.

generate

generate(record)

Generate this modality for a record.

Parameters:

Name Type Description Default
record ImageRecord

Input image record.

required

Returns:

Type Description
T

Generated modality output.

Source code in modosaic/core/modality.py
60
61
62
63
64
65
66
67
68
69
def generate(self, record: ImageRecord) -> T:
    """Generate this modality for a record.

    Args:
        record: Input image record.

    Returns:
        Generated modality output.
    """
    return self.model.generate(record)

postprocess

postprocess(record, generated)

Create experiment artifacts for an accepted modality output.

Parameters:

Name Type Description Default
record ImageRecord

Input image record.

required
generated T

Accepted generated output.

required

Returns:

Type Description
list[ExperimentArtifact[Any]]

Artifacts ready to be saved by ExperimentService.

Source code in modosaic/core/modality.py
 94
 95
 96
 97
 98
 99
100
101
102
103
104
def postprocess(self, record: ImageRecord, generated: T) -> list[ExperimentArtifact[Any]]:
    """Create experiment artifacts for an accepted modality output.

    Args:
        record: Input image record.
        generated: Accepted generated output.

    Returns:
        Artifacts ready to be saved by `ExperimentService`.
    """
    return self.postprocessor.process(record, generated)

validate

validate(record, generated, generated_modalities=None)

Run validators for a generated modality output.

Parameters:

Name Type Description Default
record ImageRecord

Input image record.

required
generated T

Output produced by generate.

required
generated_modalities Mapping[Modalities, Any] | None

Accepted outputs from earlier modalities, used to satisfy validator dependencies.

None

Returns:

Type Description
list[ValidationResult[Any]]

Validation results in configured validator order.

Source code in modosaic/core/modality.py
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
def validate(
        self,
        record: ImageRecord,
        generated: T,
        generated_modalities: Mapping[Modalities, Any] | None = None,
) -> list[ValidationResult[Any]]:
    """Run validators for a generated modality output.

    Args:
        record: Input image record.
        generated: Output produced by `generate`.
        generated_modalities: Accepted outputs from earlier modalities,
            used to satisfy validator dependencies.

    Returns:
        Validation results in configured validator order.
    """
    context = generated_modalities or {}
    return [
        validator.validate(record, generated, context)
        for validator in self.validators
    ]