# Path: Echobase/Common/errors.py
# def check_dims(arr, nd):
# def check_type(obj, typ):
# def check_function(obj):
# def check_path(path):
# def make_path(path):
# def check_path_overwrite(path):
# def check_has_key(dictionary, key_ref):


import numpy as np
import scipy.signal as spsig
from ..Common import errors
    ----------
        data: ndarray, shape (T, N)
            Input signal with T samples over N variates

        fs: int
            Sampling frequency

        wpass: tuple, shape: (1,) or (1,1)
            Pass band cutoff frequency (Hz)

        wstop: tuple, shape: (1,) or (1,1)
            Stop band cutoff frequency (Hz)

        gpass: float
            Pass band maximum loss (dB)

        gstop: float
            Stop band minimum attenuation (dB)

    Returns
    -------
        data_filt: ndarray, shape (T, N)
            Filtered signal with T samples over N variates
    """

    # Standard param checks
    errors.check_type(data, np.ndarray)
    errors.check_dims(data, 2)
    errors.check_type(fs, int)
    errors.check_type(wpass, list)

# Path: Echobase/Common/errors.py
# def check_dims(arr, nd):
# def check_type(obj, typ):
# def check_function(obj):
# def check_path(path):
# def make_path(path):
# def check_path_overwrite(path):
# def check_has_key(dictionary, key_ref):


# Path: Echobase/Sigproc/filters.py
import numpy as np
import scipy.signal as spsig
from ..Common import errors

    ----------
        data: ndarray, shape (T, N)
            Input signal with T samples over N variates

        fs: int
            Sampling frequency

        wpass: tuple, shape: (1,) or (1,1)
            Pass band cutoff frequency (Hz)

        wstop: tuple, shape: (1,) or (1,1)
            Stop band cutoff frequency (Hz)

        gpass: float
            Pass band maximum loss (dB)

        gstop: float
            Stop band minimum attenuation (dB)

    Returns
    -------
        data_filt: ndarray, shape (T, N)
            Filtered signal with T samples over N variates
    """

    # Standard param checks
    errors.check_type(data, np.ndarray)
    errors.check_dims(data, 2)
    errors.check_type(fs, int)
    errors.check_type(wpass, list)

    errors.check_type(wstop, list)