Source code for finam.adapters.stats

"""
Adapters for statistics over grids.
"""
import numpy as np

from ..data import get_magnitude
from ..data.grid_spec import UniformGrid
from ..sdk import Adapter

__all__ = [
    "Histogram",
]


[docs] class Histogram(Adapter): """Calculates a histogram over grid values. Results are returned as a 1-D uniform grid. Parameters ---------- lower : float Lower bound of the histogram. upper : float Upper bound of the histogram. bins : int, optional Number of bins. Default: 10. density : bool, optional Calculates densities instead of counts. Default: False. Returns ------- UniformGrid A 1-D grid using :class:`.UniformGrid` as specification. """ def __init__(self, lower, upper, bins=10, density=False): super().__init__() self.lower = lower self.upper = upper self.bins = bins self.density = density step = (upper - lower) / bins self.grid = UniformGrid(dims=(bins + 1,), spacing=(step,), origin=(lower,))
[docs] def _get_data(self, time, target): d = get_magnitude(self.pull_data(time, target)) values = np.histogram( d, bins=self.bins, range=(self.lower, self.upper), density=self.density ) return values[0]
[docs] def _get_info(self, info): info = info.copy_with(grid=None) in_info = self.exchange_info(info) out_info = in_info.copy_with(grid=self.grid, units="") return out_info