def _fir_df(cutoffArray, fs):

    """
    Computes default and maximum possible transition band width from
    FIR filter cutoff frequency(ies) according to the following heuristic:

    Transition band width is 25% of the lower cutoff
    frequency, but not lower than 2 Hz, where possible (for bandpass,
    highpass, and bandstop) and distance from passband edge to critical
    frequency (DC, Nyquist) otherwise.

    This is almost a 1:1 copy of the FT routine `fir_df`, only difference
    is the bandwidths are already normalized with the sampling rate `fs`.

    See also
    --------
    `FieldTrip implementation <https://github.com/fieldtrip/fieldtrip/blob/master/preproc/private/fir_df.m>`_
    """

    # still WIP
    raise NotImplementedError

    TRANSWIDTHRATIO = 0.25
    Fn = fs / 2
    cutoffArray = np.array(cutoffArray) / fs

    # Max possible transition band width
    cutoffArray = np.sort(cutoffArray)
    maxTBWArray = cutoffArray * 2 * (Fn - cutoffArray) * 2 * np.diff(cutoffArray)
    maxDf = np.min(maxTBWArray)

    # Default filter order heuristic
    df = np.min(np.max(cutoffArray[0] * TRANSWIDTHRATIO * 2) * maxDf)

    return df, maxDf