
    'YHh#                        d Z ddlZddlmZ ddlmZmZ 	 ddlm	Z
 ddlmZ  ej                   d      j#                  d      j$                  Z ej                   d	      j#                  d
      j$                  Z ej(                  ddgddggddgddggg      Z ej,                  d      Zej.                  d   Zedz  Z ej4                  eedddddf   d      Z ej4                  eedddddf   d      Z ej4                  edddddf   e      Zedddddf   Zeee ej.                  d   dz  ddf   Z e  e
eej.                                eedddf   ejC                                 eedddf   ejC                                d Z" ej,                  d      Z e"eedddddf         Z# e e#edd edd z           e"eeddddddf         Z$ e  ejJ                  e$eddddf   jM                  d      edd jM                  d      z   dddf   k(                eejO                  e(      dddddf   e      Z)ejT                  jW                  d      Z, ee, ej(                  ddg            Z- eej\                   ej^                  d      e,f    ej(                  ddg            Z0 ejb                  dgddge,      Z2 ej^                  d      Z3 e4dd      D ]  Z5de3e5dz
     z  e,e5dz
     z   e3e5<     ej^                  d      Z6 e4dd      D ]  Z5e,e5   de,e5dz
     z  z
  e6e5<     e d        e  ejn                  e6dd e3dd e-dd e2dd e0dd f             d Z8 e  e8e3dd e2              e  e8e3dd e0dd              ejT                  jW                  dd      Z9 ej(                  g dg d g      Z: ej(                  g dg d!g      Z: ej(                  g d"g d!g      Z: ej(                  g d#g d!g      Z:ej\                   ej,                  d$      d ejv                  d      z  f   Z<ej\                   ej,                  d$      d ejv                  d      z  f   Z< ee9e:      Z= ej^                  d%      Z> e4dd      D ]0  Z5 ejL                  e:dddf   e>e5dz
     z        e,e5dz
     z   e>e5<   2  ej^                  d&      Z?de?d<    ej(                  g d#g d!g      Z: eej\                   ej^                  d'      e?f   e:      dd   ej(                  g d#g d(g      Z: eej\                   ej^                  d'      e?f   e:      dd   ej(                  g d)g d*g d+gg d!g d,g d-gg      Z@ ej(                  g d.g d*g d+gg d!g d,g d-gg      Z@ eej\                   ej^                  d'      e?f   dddddf   e@j$                        dd ZAeAeAdddddf   z  ZB ej(                  g d/g d*g d+gg d0g d1g d2gg      Z@ eej\                   ej^                  d'      e?f   dddddf   e@      dd ZAeAeAdddddf   z  ZB ej                   ej                  e?e?e?f      e@      dddddf    d3ZD ej^                  eDdf      Z?de?d<    ej^                  eDdz   df      Z> e4deDdz         D ]1  Z5 ej                  e@dddddf   e>e5dz
           e?e5dz
     z   e>e5<   3  ej^                  eDdz   ddf      ZFe@d   eFdddddf<   e@d    eFdddddf<    e4deDdz         D ]0  Z5 ej                  e@d    eFe5dz
  ddddf         eFe5ddddf<   2  ej(                  g d/g d*g d+gg d0g d1g d2gg      ZGd3ZD ej(                  dd4gd4dggdd4gd5dggg      ZH ej^                  eDdz   ddf      ZIeHd   eIdddddf<   eHd    eIdddddf<    e4deDdz         D ]0  Z5 ej                  eHd    eIe5dz
  ddddf         eIe5ddddf<   2 d3ZD ej^                  eDdf      Z?de?d6<    ej(                  dd4gd4dggdd4gd7dggg      ZJ ej^                  eDdz   df      ZK e4deDdz         D ]2  Z5 ej                  eJdddddf    eKe5dz
           e?e5dz
     z   eKe5<   4 ejT                  jW                  d3d      ZL ej^                  eDdz   df      ZM e4deDdz         D ]2  Z5 ej                  eJdddddf    eMe5dz
           eLe5dz
     z   eMe5<   4  ej^                  eDdz   ddf      ZNeJd   eNdddddf<   eJd    eNdddddf<    e4deDdz         D ]0  Z5 ej                  eJd    eNe5dz
  ddddf         eNe5ddddf<   2 d8ZO ej^                  eO      deOz  z   ZPej                  j                  eP      ZS e eS        e ej                  j                  eSd9d:d;<             y# e$ r
 ddlm	Z
 Y 
+w xY w)=a  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
         ?      ?)r	   r   r   r	   validmode   c                 J   t        j                  |       } t        j                  |      }| j                  dk(  r	| dddf   } | j                  dkD  rt        d      | j                  d   }|j                  d   }|dz  }|j                  dk(  rt        j                  | |dddf   d      S |j                  dk(  rt        |j                        dk(  rt        j                  | |d      S t        j                  | j                  d   |z
  dz   |f      }t        |      D ]/  }t        j                  | dd|f   |dd|f   d      |dd|f<   1 |S |j                  dk(  r?t        j                  | dddddf   |      }||| |j                  d   dz  ddf   }|S y)	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   )
npasarrayndim
ValueErrorshaper   convolveminzerosrange)	xanvarnlagsntrimresultiyfyvalids	            a/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/sandbox/tsa/try_var_convolve.pyarfilterr'   6   s   h 	

1A


1Avv{afIvvz566771:DGGAJE1HE 	vv{q!AdF)':: 
1qww<1??1ag66 1771:e+A-t45t 	HA //!AaC&!AaC&wGF1Q3K	H 	
1
 __Qq4x[!,E5&L"((1+q.23 
    i  皙d     皙?z<
 compare: 
errloop - arloop - fft - lfilter - fftp (padded)         c                 X    t        j                  t        j                  | |z
              S )N)r   maxabs)r   ys     r&   maxabsr5      s    66"&&1+r(   r   )r   r   r   )r*   r   皙?)r*           r7   )r   r)   r)   )r   r   r   )r   r   )r,   r   )
   r   )r+   r   )r*   g      r7   )r   r7   r7   )r7   r   r7   )r7   r7   r   )r7   r*   r7   )r7   r7   r*   )r   r   r7   )r   r   r7   )r*   g?r7   )r   r7   r7   )r7   r7   r-   r8   r7   g)r   r   r6      gBi?g?gףp=
C@)locscale)V__doc__numpyr   numpy.testingr   scipyr   r   scipy.signal._signaltoolsr   trim_centeredImportErrorscipy.signal.signaltools#statsmodels.tsa.filters.filtertoolsr   fftconvolvearangereshapeTr   arraya3fonesr   r    r!   r   y0y1r$   r4   r%   printravelr'   y0aryresallsumastypefloatyffrandomrandnrvsar1fftr_r   ar1fftplfilterar1lfar1r   r#   errar1column_stackr5   rvs3a3neyea3near13fftar13impa3n3tttgfttdstacknobsdota3n3inva3n3syr   a2n3inva2ar12uar12ra2invnbinsbinProbadd
accumulate
binSumProbgammappf r(   r&   <module>r      ss    & DD N BIIbM&!##BIIbM&!##bhh#b3Z(r
R#J') *bggg 			!qV__Qs1Qq5z0V__Qs1Qq5z0V__Qq4x[%q1uI	E5&L!a)	* mAqww   VAaC["((* % VAaC["((* %Xt bggg#a!e* dAabEAcrFN #a"1"f+ fbffTa1gkk!nq"vzz!}4af==> ? !((5/!Ad(+C0iiooc	S1T(+	,
beeHBHHSM#-.xrxx4/A
BsQtHc*bhhsm	q %AQqS\C!H$CF% 
#	q &AAS1X%F1I& F G oboova|S2Yvcr{E#2Js3') * + fSWe  fSWgc"o& '	yys1bhh'(bhh'(bhh	.)*bhh'(	uuWRWWU^DN*+	uuWRWWU^DN*+
d3
rxx	q 4AbffS1Xd1Q3i'(3qs83DG4
 bhhvAbhh'( BEE("((7#C'( -cd 3bhh()* BEE("((7#C'( -cd 3rxx$##% $##%	& ' rxx%$$& %$$&	' ( "%%)#-.q4x8@F
3q1u:~rxx#$$& &##%	& ' "%%)#-.q4x8>stD
3q1u:~   9299c#c]+D 1!Aa% 8	bhhQx	Arxxa
	qa 7AbffT!Aa%[ac+c!A#h6DG7 "((DF1Q<
 a!Aq'!A	qa 7ARVVT!WHWQqS1W%56GAaEN7 
%$$& &##%	& 
' 
BHHr|
 

  "((DF1Q<
 1!AA$!A	qa 4ARVVQqTE'!A#a'"23GAaEN4 
bhhQxC RXX"
 
	d  rxxa
	qa 6Abffb1QiZQqS	*S1X5DG6 IIOOBq$q&	qa 6Arvvr!Aa%yjqs,q1v5E!H6 	$q&1!ua!e1va!e	qa 1A2662a5&qs1Qw0E!Aa%L1 	
"((5/CI
%VVw'
 j  ekkoojCfo= >K	  D DCDs   h9 9ii