# Copyright 2020 Huawei Technologies Co., Ltd # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ============================================================================ """Histogram Processor APIs.""" from mindinsight.utils.exceptions import ParamValueError from mindinsight.datavisual.common.log import logger from mindinsight.datavisual.common.validation import Validation from mindinsight.datavisual.common.exceptions import HistogramNotExistError from mindinsight.datavisual.processors.base_processor import BaseProcessor class HistogramProcessor(BaseProcessor): """Histogram Processor.""" def get_histograms(self, train_id, tag): """ Builds a JSON-serializable object with information about histogram data. Args: train_id (str): The ID of the events data. tag (str): The name of the tag the histogram data all belong to. Returns: dict, a dict including the `train_id`, `tag`, and `histograms'. { "train_id": ****, "tag": ****, "histograms": [{ "wall_time": ****, "step": ****, "bucket": [[**, **, **]], }, {...} ] } """ Validation.check_param_empty(train_id=train_id, tag=tag) logger.info("Start to process histogram data...") try: tensors = self._data_manager.list_tensors(train_id, tag) except ParamValueError as err: raise HistogramNotExistError(err.message) histograms = [] for tensor in tensors: histogram = tensor.value buckets = histogram.buckets() histograms.append({ "wall_time": tensor.wall_time, "step": tensor.step, "buckets": buckets }) logger.info("Histogram data processing is finished!") response = { "train_id": train_id, "tag": tag, "histograms": histograms } return response