Source code for zensols.deeplearn.result.compare
"""Result diff utilities.
"""
__author__ = 'Paul Landes'
from dataclasses import dataclass, field
import sys
from io import TextIOBase
from zensols.config import Configurable, Writable, ConfigurableDiffer
from . import ModelResult, ModelResultManager
[docs]
@dataclass
class ModelResultComparer(Writable):
"""This class performs a diff on two classes and reports the differences.
"""
rm: ModelResultManager = field()
"""The manager used to retrieve the model results."""
res_id_a: str = field()
"""The result ID of the first archived result set to diff."""
res_id_b: str = field()
"""The result ID of the second archived result set to diff."""
[docs]
def write(self, depth: int = 0, writer: TextIOBase = sys.stdout):
res_a: ModelResult = self.rm.results_stash[self.res_id_a].model_result
res_b: ModelResult = self.rm.results_stash[self.res_id_b].model_result
self._write_line(f'{self.res_id_a}:', depth, writer)
res_a.test.write(depth + 1, writer)
self._write_line(f'{self.res_id_b}:', depth, writer)
res_b.test.write(depth + 1, writer)
self._write_line(f'{self.res_id_a} -> {self.res_id_b}:', depth, writer)
conf_a: Configurable = res_a.config
conf_b: Configurable = res_b.config
diff = ConfigurableDiffer(conf_a, conf_b)
diff.write(depth + 1, writer)