Source code for ndb_adapter.statistics
from typing import List, Dict
from ndb_adapter.search_report import StatisticReport
[docs]class Statistics(object):
"""Class for search statistics"""
def __init__(self):
"""Default constructor"""
self._min = {}
self._max = {}
self._mean = {}
self._std_dev = {}
@property
def min(self) -> Dict[str, float]:
"""Gets min statistic dictionary
:return: min statistics
:rtype: Dict[str, float]
"""
return self._min
@property
def max(self) -> Dict[str, float]:
"""Gets max statistic dictionary
:return: max statistics
:rtype: Dict[str, float]
"""
return self._max
@property
def mean(self) -> Dict[str, float]:
"""Gets mean statistic dictionary
:return: mean statistics
:rtype: Dict[str, float]
"""
return self._mean
@property
def std_dev(self) -> Dict[str, float]:
"""Gets standard deviation statistic dictionary
:return: standard deviation statistics
:rtype: Dict[str, float]
"""
return self._std_dev
[docs] def set_report(self, report: List[StatisticReport]) -> None:
"""Sets statistic from report
:param report: list of statistic report
:type report: List[StatisticReport]
:return: None
"""
for row in report:
row_dict = row.stats
try:
if row_dict['Stat'] == 'Min':
for k, v in row_dict.items():
self._min[k] = float(v)
elif row_dict['Stat'] == 'Max':
for k, v in row_dict.items():
self._max[k] = float(v)
elif row_dict['Stat'] == 'Mean':
for k, v in row_dict.items():
self._mean[k] = float(v)
elif row_dict['Stat'] == 'Standard Deviation':
for k, v in row_dict.items():
self._std_dev[k] = float(v)
except ValueError:
pass
def __str__(self):
return "Min: " + str(self._min) + "\n" \
"Max: " + str(self._max) + "\n" \
"Mean: " + str(self._mean) + "\n" \
"Standard Deviation: " + str(self._std_dev)