Publishing 2019 R1 content
[platform/upstream/dldt.git] / tools / accuracy_checker / accuracy_checker / representation / representaton_container.py
1 """
2 Copyright (c) 2019 Intel Corporation
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15 """
16
17 import numpy as np
18 from ..representation import BaseRepresentation
19
20
21 class ContainerRepresentation(BaseRepresentation):
22     def __init__(self, representation_map=None):
23         super().__init__('')
24         self.representations = representation_map or {}
25
26     def __eq__(self, other):
27         if not isinstance(other, type(self)):
28             return False
29
30         if self.identifier != other.identifier:
31             return False
32
33         if self.metadata != other.metadata:
34             return False
35
36         if self.representations != other.representations:
37             return False
38
39         return True
40
41     def __getitem__(self, item):
42         return self.representations[item]
43
44     def get(self, key):
45         return self.representations.get(key)
46
47     def values(self):
48         return list(self.representations.values())
49
50     @property
51     def identifier(self):
52         if self._identifier:
53             return self._identifier
54
55         values = self.values()
56         if np.size(values) == 0:
57             raise ValueError('representation container is empty')
58
59         self._identifier = values[0].identifier
60         return self._identifier
61
62     @identifier.setter
63     def identifier(self, identifier):
64         self._identifier = identifier
65
66
67 class ContainerAnnotation(ContainerRepresentation):
68     def set_image_size(self, image_sizes):
69         for key in self.representations.keys():
70             self.representations[key].metadata['image_size'] = image_sizes
71
72     def set_data_source(self, data_source):
73         for key in self.representations.keys():
74             self.representations[key].metadata['data_source'] = data_source
75
76
77 class ContainerPrediction(ContainerRepresentation):
78     pass