Source code for sorts.errors.errors

#!/usr/bin/env python

'''Errors

'''
#Python standard import
from abc import ABC, abstractmethod
import types
import pathlib

#Third party import
import numpy as np


#Local import


[docs]class Errors(ABC): '''A standardized way for adding random errors to data The methods corresponding to the variables should take the data and return ''' VARIABLES = []
[docs] def __init__(self, seed=None): self.seed = seed self._check_methods()
[docs] def set_numpy_seed(self): '''This should be called before any error generating methods if reproduction of results needs to be ensured. ''' if self.seed is not None: self.seed += 1 np.random.seed(self.seed)
[docs] def get(self, var, data, *args, **kwargs): func = getattr(self, var) return func(data, *args, **kwargs)
def _check_method(self, name): return hasattr(self, name) and type(getattr(self, name)) == types.MethodType def _check_methods(self): for var in self.VARIABLES: if not self._check_method(var): raise AttributeError(f'Could not find implemented error generating method for {var}')