
    M/Ph-&                     v   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZ 	 d dlmZ n# e$ r Y nw xY w e	j                    Z ej        ej                  e_        ej        ddd f                             e          Zej        ddddf         Zej                            ed          ej        j        d	                         Zej        j        ej        j        d
                         Zej                            ed          ej        j        ej        j        d                                     Z ej                            ed          ej        j        ej        j        d                                     Z!ej                            ed          ej        j        ej        j        d                                     Z"ej                            ed          ej        j        ej        j        d                                     Z#ej                            ed          ej        j        d                         Z$ej                            ed          ej        j        ej        j        d                                     Z%d Z&d Z'ej        j        d             Z(dS )    N)assert_almost_equalassert_equal)PYTHON_IMPL_WASM)elnino)	banddepthfboxplot
hdrboxplotrainbowplot   z0Multiprocessing is not supported in WASM/Pyodide)reasonc                    	 t          t          t          d          \  }}t          |j                  dk    sJ g d}t          |j        |d           t          j        |j	        |j
        |j        g          }t          j        g dg dg d	g d
g dg dg dg dg          }t          ||d           t          j        t          j        t          |j	                                      t          j                  d          }t          |         }t!          g d|           t!          t          |j                 |           d S # t$          $ r t'          j        d           Y d S w xY w)N90  )labelsseedr   gZd;?8@g     9@gX99@g9v8@gS7@gZd;OM6@gB`";5@gV-]4@g^I+4@gvo4@g#~j5@gCL6@   decimal)g\(\8@gQk9@ffffff9@g(\8@g(\58@gY7@g     6@gp=
5@g
ףp=
6@gzG6@gR8@gp=
9@)g     @;@g{G:<@g<@R<@gQ^<@gGzn;@g{G9@gzG7@(\B6@gQ86@g(\56@gq=
ף07@)g333337@gGz:@gQ+;@g=
ףp:@gQ:@gfffff&:@gףp=
9@g333338@gq=
ף8@gp=
ף8@g9@gGz;@)gQ<@r   g=
ףp==@g33333s<@g\(\;@gq=
ף09@g\(7@gQE6@(\O5@gQ^5@g5@g(\6@)g{Gz9@g=
ףp:@g(\;@g
ףp=
;@{G::@gq=
ף8@gq=
ף7@gQ6@r   p=
ף6@gGzT7@gq=
ףp8@)g\(7@g     8@g)\8@gq=
ףp7@g=
ףp5@gGz4@gGz3@gףp=
2@g(\2@g=
ףp2@g)\3@g\(4@)gףp=
8@r   gQ:@gGz9@gQ8@gR7@g(\u6@g33333s5@g(\B5@gR5@gp=
#6@g)\h7@)gQ7@皙9@gףp=
W9@gQ88@g=
ףp6@gQ5@gffffff4@g(\3@gzG3@gQ3@gQ^4@g(\5@r   axis)        0Multiprocess randomly crashes in Windows testing)r	   datar   lenextra_quantilesr   mediannpvstackoutliershdr_90hdr_50allisinreshapeshaper   outliers_idxOSErrorpytestxfail)close_figures_hdrmedian_tquantquant_t
labels_posr)   s           j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/graphics/tests/test_functional.pytest_hdr_basicr<      s   $IDe<<<33&''1,,,,D D D 	CJ!<<<<	3<SZ@AA) H H HH H HH H HH H HH H HH H HH H HH H HI J J" 	E7A6666VBGD#,77??
KK!"$ $ $
*%---x888VC,-x88888 I I IGHHHHHHIs   EE E-,E-c                     	 t          t          dt          d          \  }}t          |j                  dk    sJ g d}t          |j        |d           d S # t          $ r t          j	        d           Y d S w xY w)Nr   T)ncompr   	use_bruter   r   r   r"   )
r	   r#   r   r$   r%   r   r&   r1   r2   r3   )r4   reset_randomstater5   r6   r7   s        r;   test_hdr_basic_bruterA   G   s    ID&DIII33&''1,,,,D D D 	CJ!<<<<<< I I IGHHHHHHIs   AA A;:A;c                 
   t          j                    }|                    d          }	 t          t          t
                                          |dd           |                    d           |                    d           |	                    t          j        dd	          dz
             |                    g d
           |                    ddg           d S # t          $ r t          j        d           Y d S w xY w)No   r   r   )r   ax	thresholdr   zMonth of the yearzSea surface temperature (C)      )step) MarJunSepDecgɿgffffff&@r"   )pltfigureadd_subplotr	   r#   r   tolist
set_xlabel
set_ylabel
set_xticksr'   arangeset_xticklabelsset_xlimr1   r2   r3   )r4   figrD   s      r;   test_hdr_plotrY   U   s    *,,C			B
I4B!	 	 	 	 	)***
3444
bi+++a/000
;;;<<<
T4L!!!!! I I IGHHHHHHIs   B4C   DDc                     	 t          t          dgd          \  }}t          j        g dg dg          }t	          |j        |d           d S # t          $ r t          j        d           Y d S w xY w)	Ngffffff?r   alphar   )r   g     :@g      ;@gffffff:@r   g8@g      7@g      6@g333335@g6@g333336@g7@)gffffff7@g8@g      9@gfffff7@ffffff6@g5@g      4@gL3@g3333333@gffffff3@g4@gL5@r   r   r"   )	r	   r#   r'   r(   r   r%   r1   r2   r3   r4   r5   r6   extra_quant_ts       r;   test_hdr_alphar`   l   s    	IDE:::3	 $H $H $H$H $H $H#I J J 	C/JJJJJJ I I IGHHHHHHIs   AA A21A2c                     	 t          t          ddgd          \  }}g dg dg dg dg}t          |j        t	          j        |          d	
           d S # t          $ r t          j        d           Y d S w xY w)Ng?gq=
ףp?r   r[   )gʡE9@gZd;O;@gt;@g333333;@gx):@gh|?8@g$7@gT㥛`6@g     @6@r   gFx7@g/$8@)g+6@g-阮8@gS㥛8@g+W7@g r5@gHz4@g     3@g3@gZd;2@gw/2@gQ3@g(\4@)gn8@g r:@g"~j:@g/$9@g+N8@gMbX6@gv5@g 4@gS{4@g/5@gK7A5@gp=
6@)gsh|7@g"^9@gn9@g/ݤ8@gZd;O-7@g?5^I5@g"~4@gp=
4@gOn3@g~jt3@gZd;4@gS5@r   r   r"   )	r	   r#   r   r%   r'   r(   r1   r2   r3   r^   s       r;   test_hdr_multiple_alpharb      s    IDd%@@@3: : :: : :: : :: : :; 	C/=1I1I$%	' 	' 	' 	' 	' 	' I I IGHHHHHHIs   AA A98A9c                 h   	 t          t          dgdd          \  }}t          j        t          j        t          |j                                      t          j                  d          }t          |         }t          g d|           d S # t          $ r t          j        d           Y d S w xY w)	Ng?g(\?r   )r\   rE   r   r   r   )i  r   r   r    r!   r"   )r	   r#   r'   r,   r-   r)   r.   r/   r   r   r1   r2   r3   )r4   r5   r6   r:   r)   s        r;   test_hdr_thresholdrd      s    ID!&( ( (3VBGD#,77??
KK!"$ $ $
*%333X>>>>> I I IGHHHHHHIs   BB B10B1c                     	 t          t          dd          \  }}g d}t          |j        |d           d S # t          $ r t          j        d           Y d S w xY w)Ncv_mlr   )bwr   )g     @8@gp=
ף9@g=
ףp9@g
ףp=
9@g(\µ7@zGa6@r   gq=
ףp4@g=
ףp=4@g(\4@gq=
ף05@rh   r   r   r"   r	   r#   r   r&   r1   r2   r3   r4   r5   r6   r7   s       r;   test_hdr_bwrk      s    IDW59993> > > 	CJ!<<<<<< I I IGHHHHHHI   59 AAc                     	 t          t          dd          \  }}g d}t          |j        |d           d S # t          $ r t          j        d           Y d S w xY w)NrG   r   )r>   r   )gGzT8@g(\µ9@g
ףp=
:@gGz9@g=
ףp7@r]   gRQ5@g33333s4@g     @4@gHz4@g3333335@gp=
c6@r   r   r"   ri   rj   s       r;   test_hdr_ncomprn      s    ID6663> > >CJ!<<<<<< I I IGHHHHHHIrl   c                     t          j        d          dz  } ddt          j        |           z  z   }dt          j        | t           j        dz  z             z   }dt          j        | t           j        dz  z             z   }ddt          j        | t           j        dz  z             z  z   }t          j        ||||g          }t          |d	
          }g d}t          ||           d S )Ni  g     b@r         ?g333333?   g      BD2method)rp   竪?rv   rp   )r'   rU   sinpicosasarrayr   r   xxy1y2y3y4r#   depthexpected_depths           r;   test_banddepth_BD2r      s    	3$	B	
S26"::	B	rvb257l##	#B	rBE!G|$$	$B	cBF2a<(((	(B:r2r2&''Dd5)))E+++N~.....    c                  d   t          j        d          dz  } t          j        | j                  }d| z  dz
  }t          j        | j                  dz  }t          j        | j                  dz  }t          j        ||||g          }t          |d          }g d	}t          ||d
           d S )Ni  g     @r   r   rp   g      пMBDrt   )rv         ?g?r      r   )r'   rU   zerosr/   onesrz   r   r   r{   s           r;   test_banddepth_MBDr      s    	45	 B	"(		B	
R!B			S	 B			U	"B:r2r2&''Dd5)))EEEEN~q999999r   c                 d   d t           j                            d           t          j        ddt           j        z  d          fdt          d          D             }t          j                    }|                    d          }t          |d|	          \  }}}}t          j
        g d
          }t          ||           t          j
        g d          }	t          ||	           t          j        |d         j                  }
t          ||
|t          j        j                  }d S )Nc                 H   t          t          j                                        dk              }t          j                                        dz  }t          j                                        dz  }dt          j                                        z  dz   }dt          j                                        z  dz   }d|z
  |t          j        |           z  |t          j        |           z  z   z  ||t          j        |           z  |t          j        |           z  z   z  z   }|S )z3Test function, combination of a few harmonic terms.g?g?g?g?r   )intr'   randomrw   ry   )tcia1ia2ib1ib2ifuncs          r;   harmfuncz+test_fboxplot_rainbowplot.<locals>.harmfunc   s     !!##c)**i  4'i  4'RY--///#5RY--///#5B3?S26!99_<=#q		/C"&))O345 r   i r   r      c                 &    g | ]}           S  r   ).0r5   r   r   s     r;   
<listcomp>z-test_fboxplot_rainbowplot.<locals>.<listcomp>  s!    +++AHHQKK+++r      rC   )wfactorrD   )rF   r            rq   rG      	      r      r               
   r      )r   r   r   r   )xdatar   cmap)r'   r   r   linspacerx   rangerN   rO   rP   r   arrayr   rU   sizer
   cmrainbow)r4   r#   rX   rD   r5   r   ix_depthix_outliersix_expectedix_expected2r   r   r   s              @@r;   test_fboxplot_rainbowplotr      s'      INN7
Aq25y#&&A+++++r+++D *,,C			B&.tQ2&F&F&F#Auh( 7 7 7 8 8K;'''8OOO,,Ll+++ Id1gl##E
d%u36>
J
J
JCCCr   ))numpyr'   numpy.testingr   r   r2   statsmodels.compat.pythonr   statsmodels.datasetsr   statsmodels.graphics.functionalr   r   r	   r
   matplotlib.pyplotpyplotrN   ImportErrorloadr#   rz   raw_dataastyper   r   markskipif
matplotlibr<   slowrA   rY   r`   rb   rd   rk   rn   r   r   r   r   r   r;   <module>r      s-       ; ; ; ; ; ; ; ;  6 6 6 6 6 6 ' ' ' ' ' '           	####### 	 	 	D	 v{}}
4=))	qqq!t		#	#C	(	(}QQQU =    %I %I 	 
%IP 	I 	I  	I =    I I  	 I" =    
I 
I  	 
I =    I I  	 I, =    	I 	I  	 	I =    	I 	I 	 
	I =    I I  	 I
/ 
/ 
/,
: 
: 
: "K "K "K "K "Ks   1 99