Skip to content

composite_score

composite_score

Classes:

Name Description
CompositeScore

A component whose score is the mean of its child component scores.

CompositeScore pydantic-model

Bases: Component

A component whose score is the mean of its child component scores.

Used as the base for aggregate metrics like SQS and Data Privacy Score.

Fields:

jinja_context cached property

Template context with duplicate gauge figures for overview and detail sections.

from_components(components, name) staticmethod

Compute a composite score as the mean of child component scores.

Source code in src/nemo_safe_synthesizer/evaluation/components/composite_score.py
@staticmethod
def from_components(components: list[Component] | Component, name: str) -> CompositeScore:
    """Compute a composite score as the mean of child component scores."""
    if isinstance(components, Component):
        return CompositeScore(score=components.score, name=name)
    if (
        components is None
        or len(components) == 0
        or all([True for c in components if c.score is None or c.score.score is None])
    ):
        return CompositeScore(score=EvaluationScore(), name=name)

    # Take the mean
    total = 0.0
    total_components = 0
    is_privacy = False
    for component in components:
        if component.score.score:
            total += component.score.score
            total_components += 1
        if component.score.grade and isinstance(component.score.grade, PrivacyGrade):
            is_privacy = True
    if total_components > 0:
        score = total / total_components
        return CompositeScore(
            score=EvaluationScore.finalize_grade(raw_score=score, score=score, is_privacy=is_privacy), name=name
        )
    else:
        return CompositeScore(score=EvaluationScore(), name=name)