Passed
Push — mpeta ( b8b967...a54cf8 )
by Konstantinos
01:35
created

so_magic.clustering.computing.AbstractDistroComputer.__call__()   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nop 3
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
# from abc import ABC, abstractmethod
2
3
# from collections import Counter
4
# import attr
5
6
7
# class CountsComputerInterface(ABC):
8
#     @abstractmethod
9
#     def compute_counts(self, *args, **kwargs):
10
#         raise NotImplementedError
11
12
# class AbstractCountsComputer(CountsComputerInterface, ABC):
13
#     def __call__(self, *args, **kwargs):
14
#         return self.compute_counts(*args, **kwargs)
15
16
17
# @attr.s
18
# class BaseCountsComputer(AbstractCountsComputer):
19
20
#     def compute_counts(self, *args, **kwargs):
21
#         return Counter(args[0])
22
23
24
# # @attr.s
25
# # class DatapointsCountsComputer(AbstractCountsComputer):
26
# #     counts_computer = attr.ib(init=True)
27
# #
28
# #     def compute_counts(self, datapoints, attributes):
29
# #         return {attrib: self.counts_computer(self._iter(datapoints, attrib)) for attrib in attributes}
30
# #
31
# #     def _iter(self, datapoints, k):
32
# #         return iter(self._extract(d, k) for d in datapoints)
33
# #
34
# #     def _extract(self, datapoint, attribute):
35
# #         return getattr(datapoint, attribute)
36
37
38
# @attr.s
39
# class ClusterCountsComputer(AbstractCountsComputer):
40
#     datapoints_counts_computer = attr.ib(init=True)
41
#     extractor = attr.ib(init=True)
42
43
#     def compute_counts(self, cluster, attributes):
44
#         return self.datapoints_counts_computer(self.extractor(cluster), attributes)
45
46
# ######################
47
48
# class DistroComputerInterface(ABC):
49
#     @abstractmethod
50
#     def compute_frequencies(self, *args, **kwargs):
51
#         raise NotImplementedError
52
53
# class AbstractDistroComputer(DistroComputerInterface, ABC):
54
#     def __call__(self, *args, **kwargs):
55
#         return self.compute_frequencies(*args, **kwargs)
56
57
58
# @attr.s
59
# class BaseDistroComputer(AbstractDistroComputer):
60
#     counts_computer = attr.ib(init=True)
61
#     norm = attr.ib(init=False, default=None)
62
63
#     def compute_frequencies(self, *args, **kwargs):
64
#         _ = self.counts_computer(*args, **kwargs)
65
#         self.norm = sum(_.values())
66
#         return _ / self.norm
67
68
69
# @attr.s
70
# class DatapointsDistroComputer(AbstractDistroComputer):
71
#     distro_computer = attr.ib(init=True)
72
#     extractor = attr.ib(init=True)
73
74
#     def compute_frequencies(self, datapoints, attributes):
75
#         return {attrib: self.distro_computer(self.extractor(datapoints, attrib)) for attrib in attributes}
76
77
78
# @attr.s
79
# class ClusterDistroComputer(AbstractDistroComputer):
80
#     datapoints_distro_computer = attr.ib(init=True)
81
#     extractor = attr.ib(init=True)
82
83
#     def compute_frequencies(self, cluster, attributes):
84
#         return self.datapoints_distro_computer(self.extractor(cluster), attributes)
85
86
#     @classmethod
87
#     def from_extractors(cls, extractor1, extractor2):
88
#         """Extractor 1 (cluster) -> datapoints, Extractor 2 (datapoints, attribute)"""
89
#         return ClusterDistroComputer(DatapointsDistroComputer(BaseDistroComputer(BaseCountsComputer()), extractor2), extractor1)
90