Skip to content

modosaic.cli.summary

modosaic.cli.summary

Formatting helpers for CLI run summaries.

format_summary

format_summary(results, experiment_path, *, as_json=False)

Format pipeline results for CLI output.

Parameters:

Name Type Description Default
results Sequence[Any]

Pipeline sample results.

required
experiment_path Path

Directory where artifacts were written.

required
as_json bool

Whether to return a JSON summary instead of text.

False

Returns:

Type Description
str

Formatted summary string.

Source code in modosaic/cli/summary.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def format_summary(results: Sequence[Any], experiment_path: Path, *, as_json: bool = False) -> str:
    """Format pipeline results for CLI output.

    Args:
        results: Pipeline sample results.
        experiment_path: Directory where artifacts were written.
        as_json: Whether to return a JSON summary instead of text.

    Returns:
        Formatted summary string.
    """
    if as_json:
        return json.dumps(
            {
                "experiment_path": str(experiment_path),
                "processed_samples": len(results),
                "results": [_result_to_dict(result) for result in results],
            },
            default=_json_default,
            indent=2,
            sort_keys=True,
        )

    lines = [
        f"Processed {len(results)} sample(s).",
        f"Artifacts written to: {experiment_path}",
    ]
    for result in results:
        generated = ", ".join(str(modality) for modality in result.generated) or "none"
        lines.append(f"{result.record.sample_id}: generated {generated}")
        for modality, validations in result.validations.items():
            for validation in validations:
                lines.append(_format_validation(modality, validation))

    return "\n".join(lines)