Source code for pe.metric_item

import matplotlib.pyplot as plt

scopes = []


[docs]class metric_scope(object): """The context manager to manage the metric scope.""" def __init__(self, name): self._name = name def __enter__(self): scopes.append(self._name) def __exit__(self, type, value, traceback): scopes.pop()
[docs]class MetricItem(object): """The base class for the metric item."""
[docs] def __init__(self, name, value): """Constructor. :param name: The name of the metric item :type name: str :param value: The value of the metric item :type value: object """ self._name = "/".join(scopes + [name]) self._value = value
@property def name(self): """Get the name of the metric item. :return: The name of the metric item :rtype: str """ return self._name @property def value(self): """Get the value of the metric item. :return: The value of the metric item :rtype: object """ return self._value
[docs] def clean_up(self): """Clean up the metric item.""" ...
[docs]class MatplotlibMetricItem(MetricItem): """The metric item for Matplotlib figures."""
[docs] def clean_up(self): plt.close(self._value)
[docs]class FloatMetricItem(MetricItem): """The metric item for a single float value.""" ...
[docs]class FloatListMetricItem(MetricItem): """The metric item for a list of float values.""" ...
[docs]class ImageMetricItem(MetricItem): """The metric item for an image.""" ...
[docs]class ImageListMetricItem(MetricItem): """The metric item for a list of images."""
[docs] def __init__(self, num_images_per_row=None, *args, **kwargs): """Constructor. :param num_images_per_row: The number of images per row when saving to the file, defaults to None :type num_images_per_row: int, optional """ super().__init__(*args, **kwargs) self._num_images_per_row = num_images_per_row
@property def num_images_per_row(self): """Get the number of images per row when saving to the file. :return: The number of images per row when saving to the file :rtype: int or None """ return self._num_images_per_row