U
    f/e=                     @   s  d dl Zd dlZd dlm  mZ d dlmZm	Z	m
Z
 d dlmZ dd Zejdd Zejdd Zejd	d
 Zejejddejejgejejgddgddgddgddgddgddgejejgejejgg
fdejejgejejgddgddgddgdd gd!d"gd#d$gejejgejejgg
fd%ejejgejejgd&d'gd(d)gd*d+gd,d-gd.d/gd0d1gejejgejejgg
fd2ejejgejejgd3d4gd5d6gd7d8gd9d:gd;d5gd<d=gejejgejejgg
fgd>d? Zejd@dA ZejdBdC ZejdDdE ZejdFdG ZejdHdI ZejdJdK ZdLdM ZdNdO ZdPdQ ZejdRdSdTdUdVdWgejdXdYdZd[d\d]gejd^d_d`dadbdcdddegdfd_dadbdcd`dddegdSejdgejdhgejejejejgejdTejdidhdVgdVgejdjdkggdldm Z dndo Z!dpdq Z"drds Z#dtdu Z$dS )v    N)	DataFrameSeries
date_rangec               	   C   s   t tdjdddd  d} tjt| d$ t tdjdddd  W 5 Q R X ttd	jdddd  ttd	jdddd  d
} tjt| d$ ttd	jdddd  W 5 Q R X d S )N
      Tr   )windowcenteraxisz&No axis named 1 for object type Seriesmatch   )r   r   z)No axis named 2 for object type DataFrame   )	r   nponesrollingmeanpytestraises
ValueErrorr   )msg r   T/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/window/moments/test_moments_rolling.pytest_centered_axis_validation   s    (r   c                  C   sl   t ddddddddd	d
g
} t| jddd }t jt jddddddt jt jg
}t|}t|| d S )N@Qk.@zG@=
ףp="@Q+@{G*@Gz0@(\"@(\B%@(\,@   T)r   C#@
ףp=&@T㥛 '@x&1)@A`Т)@灕Cl)@r   arrayr   r   r   nantmassert_series_equalvalsresultZexpected_valuesexpectedr   r   r   test_cmov_mean"   s    r3   c                  C   sn   t ddddddddd	d
g
} t| jdddd }t jt jddddddt jt jg
}t|}t|| d S )Nr   r   r   r   r   r   r   r    r!   r"   r#   boxcarTwin_typer   r$   r%   r&   r'   r(   r)   r*   r/   r   r   r   test_cmov_window7   s    r7   c                  C   s   t tjgd } | jdddd }t| s6tt g td} | jdddd }t	|dksftt tj
d} | jddd }t| stt	|dkstd S )	Nr   r#   Tr4   )r   r6   Zdtyper   )r6   )r   r   r,   r   r   isnanallAssertionErrorobjectlenrandomrandn)r0   r1   r   r   r   test_cmov_window_cornerL   s    r@   zf,xpr   g/$"@gbX9"@g}?5^I!@gZd;#@g=
ףp!@g"~j$@g=
ףp=@gV-!@g^I+@g"@gK@stdgʣaQQ@gE@gb,/o@gl7	@g|_\Ҷ@g	8	@gL=@gx@ٔ@g=4A
@go}@gemS<.j@gr/0+?vargNG,@gL$z0@g.9'@g߉Y/$@gJ)@gWCK$@gX0'@g$\@g&9{%@g,w@g*	+@g	@sumgzG!G@g{GzG@g\(E@gp=
H@g,F@gQI@gfffffA@gQxE@g{GzC@g     F@g(\C@c                 C   s   t tddgddgddgddgd	d
gddgddgddgddgddgg
}t t|}|jdddd}t||  }t|| d S )Ng\(\(@gQ@g\(\$@gRQ"@g{Gz*@gQ8-@g
ףp=
@gQ8 @g@gzG&@gHzG"@gףp=
@gQ&@gףp=
W%@gQ@g
ףp=
@gףp=
"@gHz @gzG(@g\(\@r#   r4   Tr5   )r   r   r+   r   getattrr-   Zassert_frame_equal)fxpdfZrollrsr   r   r   test_cmov_window_frame`   s&    DrI   c                  C   s^   t tjd} tj| d< tj| d< | jdddd }| jddddd }t|| d S )	Nr         r#   T)min_periodsr   r4   )r6   rL   r   )	r   r   r>   r?   r,   r   r   r-   r.   )r0   rF   rH   r   r   r   test_cmov_window_na_min_periods   s    

rM   c                 C   sH  t ddddddddd	d
g
}t jt jddddddt jt jg
t jt jddddddt jt jg
t jt jddddddt jt jg
t jt jdddd d!d"t jt jg
t jt jd#d$d%d&d'd(t jt jg
t jt jd)d*d+d,d-d.t jt jg
t jt jd/d0d1d2d3d4t jt jg
t jt jddddddt jt jg
d5}t||  }t|jd6| d7d8 }t|| d S )9Nr   r   r   r   r   r   r   r    r!   r"   ='o|m!@qWs #@((@g4h,@gfa+@g#bJ$'@}iƒ"@6~$@T(@gu*@g(\*@g`(@(\ @(\b"@=
ףp)@\(,@g
ףp=*,@g(\"'@"v@_QZ"@粺sҫ)@* 3hX,@g5Q-@gx@5&@眊T[@;)T"@}*@g͍	,@gOI5.@gY}%@VI/@U"@*@g!<8,@g7.@g%@;M@>tA}["@H|)@ff,@gj'-@g,}V&@)hammingtriangbarthannbohmanblackmanharrisnuttallblackmanbartlettr#   Tr5   r   r+   r,   r   r   r   r-   r.   	win_typesr0   xpsrF   rH   r   r   r   test_cmov_window_regular   s    crr   c                 C   sf   t jtdtd}| }t j|d d< t j|dd < t|}t|jd| dd }t	
|| d S )Nr   r8   r   r#   Tr5   r   r+   rangefloatcopyr,   r   r   r   r-   r.   )rp   r0   rF   rH   r   r   r   %test_cmov_window_regular_linear_range4  s    rx   c                 C   s*  t dddddddt jdd	g
}t jt jd
dddddddg
t jt jddddddddg
t jt jd
dddddddg
t jt jddddddddg
t jt jd d!d"d#d$d%d&d'g
t jt jd(d)d*d+d,d-d.d/g
t jt jd0d1d2d3d4d5d6d7g
t jt jd8d9d:d;d<d=d>d?g
d@}t||  }t|jdA| dBdC }t|| d S )DNr   r   r   r   r   r   r   r!   r"   gch#@gQ%@rT   rU   rV   rW   g@ٔ+;/@g(\O+@geu"@g"&@rb   rc   rd   re   gH/@gOe!@gƢd '@rX   rY   rZ   r[   gj/@g R8/#@g	$@rN   rO   rP   gEJi,@g&pn~.@g4)e+@gj@+0 @g8gDio(@r_   r`   ra   gmIF,@gtYLl0@gϠO+@g vЩ"@g(\#@rQ   rR   rS   gGz+@gz1,@gHz+@g @gx(
(@r\   r]   r^   gB`",@gQ0@ggO+@)rm   rl   rh   ri   rf   rk   rg   rj   r#   r   )r6   rL   rn   ro   r   r   r   %test_cmov_window_regular_missing_dataA  s    cry   c                 C   s   ddiddidddddid}t d	d
ddddddddg
}t jt jddddddt jt jg
t jt jddddddt jt jg
t jt jdd d!d"d#d$t jt jg
t jt jd%d&d'd(d)d*t jt jg
d+}t||  }t|jd,| d-d.jf ||  }t|| d S )/Nbeta      ?rA          @psigtaur   )kaisergaussiangeneral_gaussianexponentialr   r   r   r   r   r   r   r    r!   r"   gn)!@gL;#@gW[~(@g6T+@g	K<P+@ghW!(@gP0A#@gS"n%@gfv'@gm+*@g)@g})@gxW#@gW	3&@g=~oӟM'@g7)@gƢd)@g8լ)@g_FҪ#@ghyܝ5&@g_{fIJ'@gt<fR)@gb )@g鷯)@)r   r   r   r   r#   Tr5   rn   )win_types_specialkwdsr0   rq   rF   rH   r   r   r   test_cmov_window_special  sz    3  r   c                 C   s   ddiddidddddidd	id
}t jtd	td}| }t j|d d< t j|dd < t|}t|jd| ddjf ||  }t	
|| d S )Nrz   r{   rA   r|   r}   width      ?r   r   )r   r   r   Zslepianr   r8   r   rs   r#   Tr5   rt   )r   r   r0   rF   rH   r   r   r   %test_cmov_window_special_linear_range  s(      r   c               	   C   s   t dddddg} | jddd }t tt| }t|| d}tj	t
|d	" t dddgjddd  W 5 Q R X d S )
Nr   r   r   rJ   r#   d   r   rL   !min_periods 5 must be <= window 3r
   )r   r   minr   r   r=   r-   r.   r   r   r   )ar1   r2   r   r   r   r   test_rolling_min_min_periods  s    r   c               	   C   st   t dddddgtjd} | jddd }t| | d	}tjt	|d
" t dddgjddd  W 5 Q R X d S )Nr   r   r   rJ   r#   r8   r   r   r   r
   )
r   r   Zfloat64r   maxr-   assert_almost_equalr   r   r   )r   br   r   r   r   test_rolling_max_min_periods  s    r   c                  C   sz   d} d}t d| dd}ttj| | | df|d}|jdd	d
gdd}tj|dddgdd}t	|j
t| d S )Nr   r#   Z20100101B)Zperiodsfreq)indexg      ?r   g      ?r   )r	      2   K   )r   r   r   r>   ZrandZreshapequantileZ
percentiler-   r   valuesr+   )rowcolidxrG   Zdf_quantileZnp_percentiler   r   r   #test_rolling_quantile_np_percentile#  s    "r   r           皙?g?r   r   interpolationZlinearlowerZhigherZnearestZmidpointdatar{   r|         @      @      @g      @g      @g       @g?g?g333333?gffffff?g333333?c                 C   sX   t |}|| |}|jdd| |jd }t|rHt|sTtn||ksTtd S )Nr   rL   r   )r   r   Z	expandingZilocr   r9   r;   )r   r   r   sZq1Zq2r   r   r   +test_rolling_quantile_interpolation_options1  s    
r   c               	   C   sP   t d} t| }d}tjt|d" |jt| ddjddd W 5 Q R X d S )	Nr#   z(Interpolation 'invalid' is not supportedr
   r   r   r   invalid)r   )	r   Zaranger   r   r   r   r   r=   r   )r   r   r   r   r   r   test_invalid_quantile_valueO  s
    
r   c               	   C   s   t dddddg} d}tjt|d | dd	 W 5 Q R X d
}tjt|d | dd W 5 Q R X d}tjt|d | dd W 5 Q R X d S )Nr   r   r   g?r{   z#quantile value -0.1 not in \[0, 1\]r
   r   gz#quantile value 10.0 not in \[0, 1\]g      $@zmust be real number, not strZfoo)r   r   r   r   r   r   	TypeError)Zserr   r   r   r   test_rolling_quantile_paramX  s    r   c                  C   s   t dddddg} | jddd }t tjgd }t|| | jdddjd	d
}t dgd }t|| t tjtjdddgjddd }t|d std S )Nr{   r|   r   r   r   r   r   r#   r   )Zddofr   r   rJ   r   )	r   r   rA   r   r,   r-   r.   r9   r;   )r0   r1   r2   r   r   r   test_rolling_std_1obsg  s    $r   c                  C   sj   t dddddg} | jdd }t|dd   s<t| jdd }t|dd   sftd S )Nge>R?gRz12?r   )r   r   )span)r   r   rA   r   isfiniter:   r;   Zewm)r   r   r   r   r   test_rolling_std_neg_sqrtv  s    	r   )%Znumpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   Zpandas._testingZ_testingr-   r   Zskip_if_no_scipyr3   r7   r@   markZparametrizer,   rI   rM   rr   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   


















A

k

m
G

	 
	