U
    ÃmœdÎ#  ã                
   @   sæ
  d Z ddlZddlmZ ddlmZmZ zddlm	Z
 W n  ek
rX   ddlm	Z
 Y nX ddlmZ e d¡ d¡jZe d	¡ d
¡jZe ddgddggddgddggg¡Ze d¡Zejd Zed Zejeedd…dd…df dd�Zejeedd…dd…df dd�Ze edd…dd…df e¡Zedd…ddd…f Zeee …ejd d dd…f Ze e
eejƒƒ eedd…df e !¡ ƒ eedd…df e !¡ ƒ dd„ Z"e d¡Ze"eedd…dd…df ƒZ#e e#edd… edd…  ƒ e"eedd…dd…dd…f ƒZ$e e %e$edd…dd…f  &d¡edd…  &d¡ dd…df k¡ƒ ee 'e(¡dd…dd…df eƒZ)ej* +d¡Z,ee,e ddg¡ƒZ-eej.e /d¡e,f e ddg¡ƒZ0e 1dgddge,¡Z2e /d¡Z3e4ddƒD ]&Z5de3e5d   e,e5d   e3e5< �qêe /d¡Z6e4ddƒD ]"Z5e,e5 de,e5d    e6e5< �q&e dƒ e e 7e6dd… e3dd… e-dd… e2dd… e0dd… f¡ƒ dd„ Z8e e8e3dd… e2ƒƒ e e8e3dd… e0dd… ƒƒ ej* +dd ¡Z9e dddgddd!gg¡Z:e dddgdd"d"gg¡Z:e dddgdd"d"gg¡Z:e dddgdd"d"gg¡Z:ej.e d#¡de ;d ¡ f Z<ej.e d#¡de ;d ¡ f Z<ee9e:ƒZ=e /d$¡Z>e4ddƒD ]8Z5e &e:ddd…f e>e5d   ¡e,e5d   e>e5< �qže /d%¡Z?de?d< e dddgdd"d"gg¡Z:eej.e /d&¡e?f e:ƒdd…  e dddgdd'd"gg¡Z:eej.e /d&¡e?f e:ƒdd…  e dd"d"gd"dd"gd"d"dggdd"d"gd"dd"gd"d"dggg¡Z@e ddd"gd"dd"gd"d"dggdd"d"gd"dd"gd"d"dggg¡Z@eej.e /d&¡e?f dd…dd…df e@jƒdd… ZAeAeAddd…dd…f  ZBe ddd"gd"dd"gd"d"dggdd(d"gdd"d"gd"d"dggg¡Z@eej.e /d&¡e?f dd…dd…df e@ƒdd… ZAeAeAddd…dd…f  ZBe e Ce?e?e?f¡e@¡ddd…dd…f  d)ZDe /eDd f¡Z?de?d< e /eDd d f¡Z>e4deDd ƒD ]<Z5e Ee@ddd…dd…f e>e5d  ¡e?e5d   e>e5< �qe /eDd d d f¡ZFe@d eFddd…dd…f< e@d  eFddd…dd…f< e4deDd ƒD ]@Z5e Ee@d  eFe5d dd…dd…f ¡eFe5dd…dd…f< �q´e ddd"gd"dd"gd"d"dggdd(d"gdd"d"gd"d"dggg¡ZGd)ZDe dd"gd"dggdd"gd*dggg¡ZHe /eDd ddf¡ZIeHd eIddd…dd…f< eHd  eIddd…dd…f< e4deDd ƒD ]@Z5e EeHd  eIe5d dd…dd…f ¡eIe5dd…dd…f< �q¶d)ZDe /eDdf¡Z?de?d+< e dd"gd"dggdd"gd!dggg¡ZJe /eDd df¡ZKe4deDd ƒD ]>Z5e EeJddd…dd…f  eKe5d  ¡e?e5d   eKe5< �	qXej* +d)d¡ZLe /eDd df¡ZMe4deDd ƒD ]>Z5e EeJddd…dd…f  eMe5d  ¡eLe5d   eMe5< �	qÆe /eDd ddf¡ZNeJd eNddd…dd…f< eJd  eNddd…dd…f< e4deDd ƒD ]@Z5e EeJd  eNe5d dd…dd…f ¡eNe5dd…dd…f< �
q^d,ZOe /eO¡deO  ZPejQ ReP¡ZSe eSƒ e ejTjUeSd-d.d/d0�ƒ dS )1a�  trying out VAR filtering and multidimensional fft

Note: second half is copy and paste and does not run as script
incomplete definitions of variables, some I created in shell

Created on Thu Jan 07 12:23:40 2010

Author: josef-pktd

update 2010-10-22
2 arrays were not defined, copied from fft_filter.log.py but I did not check
what the results are.
Runs now without raising exception
é    N)Úassert_equal)ÚsignalÚstats)Ú	_centered)Úfftconvolveinvé(   )é   é   é<   )é   r	   g      à?g      ð?)r   r   r   r   Úvalid©Úmodeé   c           	      C   sb  t  | ¡} t  |¡}| jdkr.| dd…df } | jdkr@tdƒ‚| jd }|jd }|d }|jdkr‚tj| |dd…df dd�S |jdk�rt|jƒdkr¬tj| |dd�S t  | jd | d |f¡}t	|ƒD ]8}tj| dd…|f |dd…|f dd�|dd…|f< qÐ|S |jdk�r^t | dd…dd…df |¡}||| …|jd d dd…f }|S dS )	a0  apply an autoregressive filter to a series x

    x can be 2d, a can be 1d, 2d, or 3d

    Parameters
    ----------
    x : array_like
        data array, 1d or 2d, if 2d then observations in rows
    a : array_like
        autoregressive filter coefficients, ar lag polynomial
        see Notes

    Returns
    -------
    y : ndarray, 2d
        filtered array, number of columns determined by x and a

    Notes
    -----

    In general form this uses the linear filter ::

        y = a(L)x

    where
    x : nobs, nvars
    a : nlags, nvars, npoly

    Depending on the shape and dimension of a this uses different
    Lag polynomial arrays

    case 1 : a is 1d or (nlags,1)
        one lag polynomial is applied to all variables (columns of x)
    case 2 : a is 2d, (nlags, nvars)
        each series is independently filtered with its own
        lag polynomial, uses loop over nvar
    case 3 : a is 3d, (nlags, nvars, npoly)
        the ith column of the output array is given by the linear filter
        defined by the 2d array a[:,:,i], i.e. ::

            y[:,i] = a(.,.,i)(L) * x
            y[t,i] = sum_p sum_j a(p,j,i)*x(t-p,j)
                     for p = 0,...nlags-1, j = 0,...nvars-1,
                     for all t >= nlags


    Note: maybe convert to axis=1, Not

    TODO: initial conditions

    r   Nr   zx array has to be 1d or 2dr   r   r   r   )
ÚnpZasarrayÚndimÚ
ValueErrorÚshaper   ÚconvolveÚminÚzerosÚrange)	ÚxÚaZnvarÚnlagsÚntrimÚresultÚiÚyfÚyvalid© r    úa/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/sandbox/tsa/try_var_convolve.pyÚarfilter7   s,    4






6"r"   éÿÿÿÿiô  gš™™™™™é¿éd   éõ  gš™™™™™é?z<
 compare: 
errloop - arloop - fft - lfilter - fftp (padded)é   é   é‚   c                 C   s   t  t  | | ¡¡S )N)r   ÚmaxÚabs)r   Úyr    r    r!   Úmaxabs¿   s    r,   r   gš™™™™™¹?g        )r   r   )r%   r   )é
   r   )r$   r   g      à¿gš™™™™™É?r-   gš™™™™™¹¿)r   r   é   gïÉÃB­iä?gš™™™™™ù?g×£p=
ÇC@)ÚlocÚscale)VÚ__doc__Únumpyr   Znumpy.testingr   Zscipyr   r   Zscipy.signal._signaltoolsr   Ztrim_centeredÚImportErrorZscipy.signal.signaltoolsZ#statsmodels.tsa.filters.filtertoolsr   ZfftconvolveZarangeZreshapeÚTr   ÚarrayZa3fZonesr   r   r   r   Zy0Úy1r   r+   r   ÚprintZravelr"   Zy0arZyresÚallÚsumZastypeÚfloatZyffÚrandomZrandnZrvsZar1fftZr_r   Zar1fftpZlfilterZar1lfZar1r   r   Zerrar1Zcolumn_stackr,   Zrvs3Za3nÚeyeZa3neZar13fftZar13ÚimpZa3n3ZtttZgfttZdstackZnobsÚdotZa3n3invZa3n3syr   Za2n3invZa2Zar12ÚuZar12rZa2invZnbinsZbinProbÚaddÚ
accumulateZ
binSumProbÚgammaZppfr    r    r    r!   Ú<module>   s:  ÿ

"""Z
 F"$
$	
 .
ÿ

6
""þþüþþü6þþü4*:>þþü
ÿÿý>
ÿÿý<<>