Module materialize.feature_benchmark.filter

Expand source code Browse git
# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.


import numpy as np

from materialize.feature_benchmark.measurement import Measurement


class Filter:
    def __init__(self) -> None:
        self._data: list[float] = []

    def filter(self, measurement: Measurement) -> bool:
        raise NotImplementedError


class RemoveOutliers(Filter):
    def filter(self, measurement: Measurement) -> bool:
        self._data.append(measurement.value)

        if len(self._data) > 3:
            mean = np.mean(self._data)
            stdev = np.std(self._data)
            if measurement.value > mean + (1 * stdev):
                return True
            else:
                return False
        else:
            return False


class NoFilter(Filter):
    def filter(self, measurement: Measurement) -> bool:
        return False


class FilterFirst(Filter):
    def filter(self, measurement: Measurement) -> bool:
        self._data.append(measurement.value)

        if len(self._data) == 1:
            print("Discarding first measurement.")
            return True
        else:
            return False

Classes

class Filter
Expand source code Browse git
class Filter:
    def __init__(self) -> None:
        self._data: list[float] = []

    def filter(self, measurement: Measurement) -> bool:
        raise NotImplementedError

Subclasses

Methods

def filter(self, measurement: Measurement) ‑> bool
Expand source code Browse git
def filter(self, measurement: Measurement) -> bool:
    raise NotImplementedError
class FilterFirst
Expand source code Browse git
class FilterFirst(Filter):
    def filter(self, measurement: Measurement) -> bool:
        self._data.append(measurement.value)

        if len(self._data) == 1:
            print("Discarding first measurement.")
            return True
        else:
            return False

Ancestors

Methods

def filter(self, measurement: Measurement) ‑> bool
Expand source code Browse git
def filter(self, measurement: Measurement) -> bool:
    self._data.append(measurement.value)

    if len(self._data) == 1:
        print("Discarding first measurement.")
        return True
    else:
        return False
class NoFilter
Expand source code Browse git
class NoFilter(Filter):
    def filter(self, measurement: Measurement) -> bool:
        return False

Ancestors

Methods

def filter(self, measurement: Measurement) ‑> bool
Expand source code Browse git
def filter(self, measurement: Measurement) -> bool:
    return False
class RemoveOutliers
Expand source code Browse git
class RemoveOutliers(Filter):
    def filter(self, measurement: Measurement) -> bool:
        self._data.append(measurement.value)

        if len(self._data) > 3:
            mean = np.mean(self._data)
            stdev = np.std(self._data)
            if measurement.value > mean + (1 * stdev):
                return True
            else:
                return False
        else:
            return False

Ancestors

Methods

def filter(self, measurement: Measurement) ‑> bool
Expand source code Browse git
def filter(self, measurement: Measurement) -> bool:
    self._data.append(measurement.value)

    if len(self._data) > 3:
        mean = np.mean(self._data)
        stdev = np.std(self._data)
        if measurement.value > mean + (1 * stdev):
            return True
        else:
            return False
    else:
        return False