
    4i                         S SK r S SKrS SKrS SKJrJrJr  S SKJrJ	r	J
r
JrJrJrJrJrJr   " S S5      r " S S5      r " S S	5      rg)
    N)	histogramhistogram_bin_edgeshistogramdd)	assert_assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_max_ulpassert_equalassert_raisesassert_raises_regexc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#\$RJ                  RM                  S"S#9S$ 5       r'S% r(S& r)S'r*g())TestHistogram   c                     g N selfs    a/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/numpy/lib/tests/test_histograms.pysetup_methodTestHistogram.setup_method           c                     g r   r   r   s    r   teardown_methodTestHistogram.teardown_method   r   r   c                     Sn[         R                  R                  U5      n[        U5      u  p4[	        [         R
                  " USS9U5        [        [         R                  " SSS5      5      u  p4[        US5        g )Nd   r   axis
   )nprandomrandr   r   sumlinspacer
   )r   nvabs        r   test_simpleTestHistogram.test_simple   s^    IINN11RVVAA&* 2;;q"c231b!r   c                 ,   [        / SQSS/5      u  p[        US/5        [        USS/5        [        [        [         SS/SS9  [        SS/SS9u  p4[	        U[
        R                  " S/5      5        [        U[
        R                  " SS/5      5        g )N            r1   r2   r   bins      ?       @)r   r
   r   
ValueErrorr   r$   arrayr   )r   histedgeshes        r   test_one_binTestHistogram.test_one_bin'   s}    q!f54!'51a&)j)aV!<!Qa(Q!&288RH-.r   c                    Sn[         R                  R                  U5      n[        USS9u  p4[         R                  " U[         R
                  " U5      -  5      n[        US5        [         R                  " S5      n/ SQn[        X&SS9u  p4[        US5        [        [         R                  " U[         R
                  " U5      -  5      S5        [        X&SS9u  p4[        U/ S	Q5        [         R                  " S5      nS
SSS[         R                  /n[        X&SS9u  p4[        U/ SQ5        [         R                  " / S	QSS[         R                  /SS9u  px[        USS
/5        g )Nr    Tdensityr1   r#   r   r1   r3      r#   皙?Fr0   r   r3   rE   )rF   rF   rF                 ?      ?      ?)r$   r%   r&   r   r'   diffr   aranger
   r   inf)	r   r)   r*   r+   r,   arear6   countsdmys	            r   test_densityTestHistogram.test_density1   s   IINN1D)vva"''!*n%D!$ IIbM$/1b!RVVA
N+Q/ %01l+ IIbM1aBFF#$/1./ ll3RVV,d<Vc1X&r   c                 D   [         R                  " S5      S-   n[        USS/S9u  p#[        UR	                  5       S5        [        USS/S9u  p#[        UR	                  5       S5        [        USS/SS9u  p#[        U[         R                  " U5      -  R	                  5       SS	S
9  [         R                  " S5      S-   n[        USS/USS9u  p#[        U[         R                  " U5      -  R	                  5       S5        [        USSS/US9u  p#[        X$SS 5        g )Nr#   rH   r   	   ranger1   TrV   rC      decimalrV   weightsrC      r6   rV   r\   )r$   rL   r   r   r'   r   rK   )r   r+   r=   r,   ws        r   test_outliersTestHistogram.test_outliersQ   s    IIbMB 1a&)QUUWa  1b'*QUUWa  1a&$7Q^002ArB IIbMB1a&!TBa"''!*n))+Q/1a&!<Q!B r   c                     [         R                  " S5      S-   n[         R                  " S5      S-   n[        [        S5         [	        USS/USS9u  p4S S S 5        g ! , (       d  f       g = f)	Nr#   rH      zsame shape asr1   rT   Tr[   )r$   rL   r   r9   r   )r   r+   r`   r=   r,   s        r   test_arr_weights_mismatch'TestHistogram.test_arr_weights_mismatchi   sR    IIbMBIIbMB _=Qq!faFDA >==s   A
A+c                    [         R                  " S5      S-   n[        U5      u  p#[        [         R                  " UR
                  [         R                  5      5        [        USS9u  p#[        [         R                  " UR
                  [         R                  5      5        [        U[         R                  " S[        5      S9u  p#[        [         R                  " UR
                  [         R                  5      5        [        U[         R                  " S[        5      S9u  p#[        [         R                  " UR
                  [         R                  5      5        g )Nr#   rH   TrB   r\   )r$   rL   r   r   
issubdtypedtypeintegerfloatingonesintfloat)r   r+   r=   r,   s       r   	test_typeTestHistogram.test_typeo   s    IIbMB|aggrzz23D)aggr{{34BGGB$45aggrzz23BGGB$67aggr{{34r   c                     [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[         R                  " XSS9u  p4n[	        UR                  5       S5        g )N)g2VEq@gx>fQg-VT5@rj   )g!@gS@g^z@r    r5         @)r$   r:   float32histogram2dr   r'   )r   xycounts_histxedgesyedgess         r   test_f32_roundingTestHistogram.test_f32_rounding~   sR    HH8

KHH<BJJO&(nnQ&D#V[__&+r   c                 D   [         R                  " / SQ[         R                  S9n[         R                  " U5      u  p#[        R
                  " [        SS9   [         R                  " / SQ5      u  pE[        XB5        [        XS5        S S S 5        g ! , (       d  f       g = f)N)r1   r1   r   rs   zConverting input from .*match)TTF)r$   r:   uint8r   pytestwarnsRuntimeWarningr
   )r   r+   int_hist	int_edgesr;   r<   s         r   test_bool_conversion"TestHistogram.test_bool_conversion   sg     HHYbhh/ ll1o
 \\.0JK,,':;KDt.u0	 LKKs   1B
Bc                 0   [         R                  R                  S5      n[         R                  " S5      S-  n[	        U5      u  p4[	        USS9u  pV[	        XS9u  px[	        XSS9u  p[        US-  U5        [        XY5        [         R                  " SSS5      n[         R                  " [         R                  " S5      [         R                  " S5      45      n[	        U[         R                  " S	5      US
9u  px[        Xr5        [	        / SQS/ SQS
9u  px[        U/ SQ5        [	        / SQS/ SQSS9u  px[        U[         R                  " / SQ5      S-  S-  S-  5        [	        [         R                  " S5      / SQ/ SQSS9u  p4[        U/ SQ5        g )Nr       TrB   rh   r\   rC   r   r#   rd   r6   r\   )r1   r2   r2   r4   r4   )r4   r3   r2   r1   )r4   r   r   r1   )r6   r\   rC   g      $@rt   rT   rD   )	r2   r1   r1   r1   r1   r1   r1   r1   r1   )皙?rF   rF   g333333?)r$   r%   r&   rm   r   r	   r(   concatenatezerosrL   r
   r:   r   )r   r*   r`   r+   r,   nanbwawbnwanwbs              r   test_weightsTestHistogram.test_weights   sH   IINN3GGCL1|1d+1(Q48!!a%,!"* KK2r"NNBHHQK451299R=!<!"( <aF2|,q,F!"bhh|&<s&BR&G!&KL IIaL*/? 	A12r   c           	         [         R                  " / SQ5      n[         R                  " / SQ5      S[         R                  " / SQ5      -  -   n[        U/ SQUS9u  p4[        U[         R                  " SS/5      S[         R                  " SS	/5      -  -   5        [        USSS	/US
9u  p4[        U[         R                  " SS/5      S[         R                  " SS	/5      -  -   5        SSKJn  [         R                  " / SQ5      n[         R                  " U" S5      U" S5      U" S	5      /5      n[        U/ SQUS9u  p4[        X5" S5      U" S5      /5        [        USSS	/US
9u  p4[        X5" S5      U" S5      /5        g )Ng?      @gffffff@)r1   r_   r2   y              ?)r2   r1   r2   )r   r2   r3   r   r1   r2   r3   r^   r   )Decimalr   )r$   r:   r   r	   rZ   r   )r   valuesr\   r   r   r   s         r   test_exotic_weights!TestHistogram.test_exotic_weights   sE    /*((:&bhhy.A)AA 6	7C!"bhh1v&6bhh1v>N9N&NO 6!QI!"bhh1v&6bhh1v>N9N&NO 	$/*((GAJ
GAJ?@ 6	7C!"wqz71:&>? 6!QI!"wqz71:&>?r   c                     [         R                  " / SQ5      n[         R                  " USS/SS9  [        U/ SQ5        g )Nr   r#   r    )rV   r6   )r$   r:   r   r	   )r   r   s     r   test_no_side_effects"TestHistogram.test_no_side_effects   s0     /*
VC937!&/:r   c                     [        / SS/S9u  p[        U[        R                  " S/5      5        [        U[        R                  " SS/5      5        g )Nr   r1   r5   r   r
   r$   r:   r   r+   r,   s      r   
test_emptyTestHistogram.test_empty   s?    Aq6+1bhhsm,1bhh1v./r   c                 t    [         R                  " SSSS9n[        US5        [        [        [        US5        g )NrG   r7   r    numr   g333333@)r$   r(   r   r   	TypeErrorr   valss     r   test_error_binnum_type$TestHistogram.test_error_binnum_type   s,    {{3-$iD#6r   c                     [         R                  " SSSS9n[        USS/S9  [        [        [        U[         R
                  S/S9  [        [        [        US[         R                  /S9  g )NrG   r7   r    r   rJ         ?rU   )r$   r(   r   r   r9   nanrM   r   s     r   test_finite_rangeTestHistogram.test_finite_range   sN    {{3-$tTl+j)T"&&$Hj)T$Hr   c                     [         R                  " SSSS9n[        [        S5         [         R                  " USS/S9  S S S 5        g ! , (       d  f       g = f)	NrG   r7   r    r   zmax must be larger thanrF   g{Gz?rU   )r$   r(   r   r9   r   r   s     r   test_invalid_range TestHistogram.test_invalid_range   s>    {{3- -FGLLc4[1 HGGs   A
Ac                     [         R                  " / SQ5      n[         R                  " USSS9u  p#US:  nUS S U   nUSS  U   n[        XU5       H   u  pxn	[	        Xx:  5        [	        Xy:  5        M"     g )N)iQ  i  i  i&  i  i  i  ih   )r2   i  r6   rV   r   r_   r1   )r$   r:   r   zipr   )
r   arrr;   r<   mask
left_edgesright_edgesrw   leftrights
             r   test_bin_edge_cases!TestHistogram.test_bin_edge_cases   sw    hh=>ll3TCax3BZ%
ABio!#;?NAUAIAI @r   c                     [         R                  " / SQ5      n[         R                  " USSS9u  p#[        US   S5        g )N	rG   rG   rG   r7   r8   rt   rt   g      @g      @         r   r   r_   r1   )r$   r:   r   r   )r   r   r;   r<   s       r   test_last_bin_inclusive_range+TestHistogram.test_last_bin_inclusive_range   s3    hhCDll3RyAT"Xq!r   c                     [         R                  " SSSS9n[         R                  " SS/SS//5      n[        [        S5         [         R
                  " XS	9  S S S 5        g ! , (       d  f       g = f)
NrG   r7   r    r   r   rH   g333333?z
must be 1dr5   )r$   r(   r:   r   r9   r   )r   r   r6   s      r   test_bin_array_dims!TestHistogram.test_bin_array_dims   sQ    {{3-xx!SC:./ \:LL) ;::s   A!!
A/c                     [         R                  " S/5      n[         R                  " / SQSS9n[        [        5         [         R                  " XS9u  p4S S S 5        g ! , (       d  f       g = f)Nr2   )r1   r3   r1   uint64rs   r5   )r$   r:   r   r9   r   )r   r   r6   r;   r<   s        r    test_unsigned_monotonicity_check.TestHistogram.test_unsigned_monotonicity_check  sG     hhsmxx	2:&,,s6KD '&&s   A
A,c           
         [        [        [        [        S5       Vs/ s H  n[        R
                  " S5      PM     sn[        R                  * /-   5        [        [        [        [        S5       Vs/ s H  n[        R
                  " S5      PM     sn[        R                  /-   5        [        R                  " [        S5       Vs/ s H  n[        R
                  " S5      PM     snS/-   5        [        R                  " [        S5       Vs/ s H  n[        R
                  " S5      PM     snS/-   5        g s  snf s  snf s  snf s  snf )Nr#   g?rH   g     ?)r   r9   r   rV   r$   r:   rM   )r   is     r   test_object_array_of_0d%TestHistogram.test_object_array_of_0d  s    juRy9y!y9bffWIE	GjuRy9y!y9RVVHD	F 	U2Y7YbhhsmY7;K:LLM
U2Y7YbhhsmY72$>? :9 87s    D=3 E	 E Ec                    [         R                  " SS[         R                  /5      n[         R                  " [         R                  [         R                  /5      n[        R                  " 5          [        R
                  " S[        5        [        [        [        USS9  [        [        [        USS9  [        USSS9u  p4[        UR                  5       S5        [        USSS9u  p4[        UR                  5       S5        [        USS/S9u  p4[        UR                  5       S5        [        USS/S9u  p4[        UR                  5       S5        S S S 5        g ! , (       d  f       g = f)	Nr   r1   ignoreautor5   r   r1   r   r2   )r$   r:   r   warningscatch_warningssimplefilterr   r   r9   r   r   r'   )r   one_nanall_nanr=   r,   s        r   test_some_nan_values"TestHistogram.test_some_nan_values  s   ((Aq"&&>*((BFFBFF+, $$&!!(N;*ivF*ivF W6@DA!$W6@DA!$ WAq62DA!$WAq62DA!$! '&&s   1C"E
E*c                 f   [         R                  " SS5      n[         R                  " / SQ5      n[         R                  " / SQ5      nX-   nX-   n[         R                  " S5      n[	        XES9u  px[	        UR                  U5      UR                  U5      S9u  p[	        X#S9u  p[        X{5        [        X5        [        X-
  R                  [        5      U5        [        U
R                  [        5      U5        [        UR                  UR                  5        [        U
R                  U5        g )Nz
2000-01-01D)	r   r   r1   r1   r2   r3   r   r#   r   )r   r2      r   ztimedelta64[D]r5   )r$   
datetime64r:   rj   r   astyper   rn   )r   beginoffsetsr6   dates	date_binstdd_countd_edget_countt_edgei_counti_edges                r   test_datetimeTestHistogram.test_datetime0  s    lC0((89xx&L	XX&'
 $E:#GNN2$6T[[_M#G7W&W&fn,,S16:V]]3'0V\\5;;/V\\2&r   c                    S[         R                  " U5      R                  -  S-
  n[         R                  " SU-  * S-   SU-  S-
  /US9n[	        USS9u  pE[        USU-  * S-   SSU-  S-
  /5        [        USS/5        g )Nr]   r1   r2   r4   rs   r5   r   )r$   rj   itemsizer:   r   r   )r   rj   exponentr   r;   r>   s         r   do_signed_overflow_bounds'TestHistogram.do_signed_overflow_boundsI  s    rxx///!3hhHq(!X+/:%HCa(Q!X+)1akAo>?TAq6"r   c                 :   U R                  [        R                  5        U R                  [        R                  5        U R                  [        R                  5        U R                  [        R
                  5        U R                  [        R                  5        g r   )r   r$   byteshortintcint_longlongr   s    r   test_signed_overflow_bounds)TestHistogram.test_signed_overflow_boundsP  s\    &&rww/&&rxx0&&rww/&&rww/&&r{{3r   c                 T   [         R                  " U5      R                  n[         R                  " S/U5      n[         R                  " SU-   S/U5      nUR	                  U5      S   S:w  a  g [         R
                  " USUS9u  pg[        US/5        [        UR                  U5        g )Nr7   r8   r   r1   r   r$   finfoepsr:   r   r   r   rj   r   float_smallfloat_larger  r   rV   countx_locs           r   do_precision_lower_bound&TestHistogram.do_precision_lower_boundW  s    hh{#''hhuk*#)S);7 <<$Q'1, ||Cau=UQC U[[+.r   c                 T   [         R                  " U5      R                  n[         R                  " S/U5      n[         R                  " SSU-
  /U5      nUR	                  U5      S   S:w  a  g [         R
                  " USUS9u  pg[        US/5        [        UR                  U5        g )Nr7   rG   r_   r1   r   r   r   r  s           r   do_precision_upper_bound&TestHistogram.do_precision_upper_boundf  s    hh{#''hhuk*#sSy);7 <<$R(A- ||Cau=UQC U[[+.r   c                 H    U R                  X5        U R                  X5        g r   )r  r  )r   r  r  s      r   do_precisionTestHistogram.do_precisionv  s    %%k?%%k?r   c                 ,   U R                  [        R                  [        R                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R
                  5        U R                  [        R                  [        R                  5        U R                  [        R                  [        R
                  5        U R                  [        R                  [        R
                  5        g r   )r  r$   halfsingledouble
longdoubler   s    r   test_precisionTestHistogram.test_precisionz  s    "''299-"''299-"''2==1"))RYY/"))R]]3"))R]]3r   c                    [        / SQSS/5      u  p[        / SQSS/5      n[        X25        [        R                  " / SQ5      n[        USSS9u  p[        USSS9n[        X25        [        USS	S9u  p[        USS	S9n[        X25        g )
Nr0   r1   r2   r   r   r   r   r   r   )r   r   r
   r$   r:   )r   r;   r>   r<   r   s        r   test_histogram_bin_edges&TestHistogram.test_histogram_bin_edges  s    L1a&1#L1a&95$hhCDCb	:#Cb	B5$CfF;#CfFC5$r   c                     [         R                  " SS/S-  5      n[        R                  " [        SS9   [        USS9  S S S 5        g ! , (       d  f       g = f)Nr1   g     ?r#   zToo many bins for data ranger   r5   )r$   r:   r   raisesr9   r   )r   r   s     r   test_small_value_range$TestHistogram.test_small_value_range  s?    hh9~*+]]:-KLc# MLLs   A		
Az,Bad memory reports lead to OOM in ci testing)reasonc                     [         R                  " SS/5      nSnSn[         R                  " S5      n[         R                  " XX44S9n[	        [        U5      [        S5      5        g )Ni r3   i  i>  )sampler6   )r1   r2   )r$   r   rL   r   r   type)r   r   xbinsybinszbinsr;   s         r   test_big_arraysTestHistogram.test_big_arrays  sQ    9a.)		% ~~V%2GHT$Zf.r   c                     [         R                  " [         R                  " S/SS9SSS9u  p[         R                  " SS/5      n[        X5        g )	Ng$xz>f8rs   r2   )gx0gel	  r   r1   r   )r$   r   r:   r
   )r   r;   r>   expected_hists       r   test_gh_23110TestHistogram.test_gh_23110  sC    ,,rxx5A$%%79 !Q(4/r   c                     SnSSSSSSXXXS/n[         R                  " USS9u  p4[        U5      S:  d   eUS   US   :X  d   eUS   US   :X  d   eg )	Ng    ?r   r1   r2   r   r5   r#   r_   )r$   r   len)r   r>   ZrO   r<   s        r   test_gh_28400TestHistogram.test_gh_28400  sq    1aAqQ13QV46{RQx1Q4RyAbE!!!r   r   N)+__name__
__module____qualname____firstlineno__r   r   r-   r?   rQ   ra   re   rp   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   markskipr%  r)  r.  __static_attributes__r   r   r   r   r      s    	"/'@!0G5,13:@<;0
7I2	"
*7	@%0'2#4// @4%$ [[KL/ M/0"r   r   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS r\R                  R!                  S/ SQ5      S 5       r\R                  R!                  S/ SQ5      S 5       rS rS rSrg)TestHistogramOptimBinNumsi  zQ
Provide test coverage when using provided estimators for optimal number of
bins
c                     / SQnU HR  n[        / US9u  p4[        U[        R                  " S/5      5        [        U[        R                  " SS/5      5        MT     g )Nfdscottricesturgesdoanesqrtr   stoner5   r   r1   r   )r   estimator_list	estimatorr+   r,   s        r   r   $TestHistogramOptimBinNums.test_empty  sN    < (IRi0DAq"((A3-0q"((Aq6"23 (r   c                    SSSSSSSSS.SSSSSS	SS
S.SSSSSSSSS.S.nUR                  5        H  u  p#[        R                  " SSUS-  S-  5      n[        R                  " SSUS-  S-  5      n[        R                  " XE45      nUR                  5        H7  u  px[        R                  " Xg5      u  p[        [        U	5      USU SU 3S9  M9     M     g)z
Straightforward testing with a mixture of linspace data (for
consistency). All test values have been precomputed and the values
shouldn't change
r4   r]   r   r2   r:     r#         rT      #      G   r   2   i  i  r   r_   r   r1   r3   For the  estimator with datasize of err_msgN)itemsr$   r(   r   r   r   r,  )r   
basic_testtestlenexpectedResultsx1x2rw   rC  numbinsr+   r,   s              r   r-   %TestHistogramOptimBinNums.test_simple  s     $%A1&'AK#$B2&("b1N#%B2&("b2O	P
 )3(8(8(:$G S"glQ&67BQGqL1$45Bx(A&5&;&;&="	||A1SVW L118	7; < '> );r   c           
      Z   SSSSSSSS.SSSSSSSS.SSSSSSSS.S.nUR                  5        Hy  u  p#[        R                  " U5      R                  [        5      nUR                  5        H7  u  pV[        R
                  " XE5      u  px[        [        U5      USU SU 3S9  M9     M{     g	)
z
Smaller datasets have the potential to cause issues with the data
adaptive methods, especially the FD method. All bin numbers have been
precalculated.
r1   )r;  r<  r=  r>  r?  r@  rA  r2   r3   r1   r2   r3   rO  rP  rQ  N)rS  r$   rL   r   ro   r   r   r,  )	r   	small_datrU  rV  testdatrC  expbinsr+   r,   s	            r   
test_small$TestHistogramOptimBinNums.test_small  s      !1aA"#Q< 1aA"#Q< 1aA"#Q<	=	 )2(9$Gii(//6G&5&;&;&="	||G7SVW L118	7; < '> ):r   c                 N    / SQnU H  n[        [        [        / SQU5        M     g)zC
Check a Value Error is thrown when an unknown string is passed in
)madfreeman
histogramsIQRr\  N)r   r9   r   )r   
check_listrC  s      r   test_incorrect_methods0TestHistogramOptimBinNums.test_incorrect_methods  s!     =
#I*iIF $r   c           	          [         R                  " S5      nSSSSSSSSS.nUR                  5        H4  u  p4[         R                  " X5      u  pV[	        [        U5      UU S3S9  M6     g)zt
Check that methods handle no variance in data
Primarily for Scott and FD as the SD and IQR are both 0 in this case
r    r1   r:  z estimator, No Variance testrQ  N)r$   rm   rS  r   r   r,  )r   novar_datasetnovar_resultdictrC  rY  r+   r,   s          r   test_novariance)TestHistogramOptimBinNums.test_novariance  sp    
 "#aq%&1qJ #3"8"8":I<<9DAQ$-;.J!KM #;r   c                 r   [         R                  " S5      nSUSS& SUSS& [        US5      n[        US   S5        [        US   S	5        [	        U5      S:  d   e[        US
5      n[        U[         R
                  " SS/5      5        [        US5      n[        U[         R                  " SSS5      5        g)zI
Check when IQR is 0, but variance exists, we return a reasonable value.
  r   Nr3   r    r   r_   g      Y@r;  r>  rG  )r$   rm   r   r   r,  r:   r(   )r   lim_var_data
edges_autoedges_fdedges_sturgess        r   test_limited_variance/TestHistogramOptimBinNums.test_limited_variance  s     wwt}RaRS(v>
Z]A&Z^T*:$$$&|T:XrxxC12+L)D]BKK3$;<r   c                 *   [         R                  " SSS5      n[         R                  " [         R                  " SSS5      U45      nSSSS	S
.nUR                  5        H2  u  pE[         R                  " X$5      u  pg[        [        U5      U5        M4     g)a  
Check the FD, Scott and Doane with outliers.

The FD estimates a smaller binwidth since it's less affected by
outliers. Since the range is so (artificially) large, this means more
bins, most of which will be empty, but the data of interest usually is
unaffected. The Scott estimator is more affected and returns fewer bins,
despite most of the variance being in one area of the data. The Doane
estimator lies somewhere between the other two.
r   r#   rN  ir      rd   rE   )r;  r<  r?  rA  N)r$   r(   hstackrS  r   r   r,  )r   xcenteroutlier_datasetoutlier_resultdictrC  rY  r+   r,   s           r   test_outlier&TestHistogramOptimBinNums.test_outlier  sy     ++c2r*))R[[tQ%?$IJ$&R!L"4":":"<I<<;DAQ) #=r   c                 N   S n[         R                  " SSSS9R                  5       R                  [        5      n[        S5       VVs/ s H  o2 Vs/ s H
  oA" X45      PM     snPM     nnn[        [         R                  " USS9S-
  5      n[        U/ S	QS
S9  g s  snf s  snnf )Nc                     [         R                  R                  U 5      nUR                  SSUS9n[	        [         R
                  " US5      S   5      [	        [         R
                  " US5      S   5      pTXDU-   -  $ )Nr   r2   )locscalesizerA  r<  )r$   r%   RandomStatenormalr,  r   )seedr  rngrw   r+   r,   s         r   nbins_ratioBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratio.  sh    ))''-C

q
5Ar||Aw/23Sa9QRS9T5UqA;r   r#   r    r4   )startstopr   r   r!   rH   )g333333?g
ףp=
?g{Gz?gQ?r2   rY   )	r$   	geomspaceroundr   rn   rV   absmeanr   )r   r  
geom_spacer  r  llavgs          r   test_scott_vs_stone-TestHistogramOptimBinNums.test_scott_vs_stone*  s    	 \\!<BBDKKCP
KPQS9U94:>:4{4&:>9U "''"1%+,C!91E ?Us   		B!B#B!B!c           	         SSSSSSS.SSSSSSS.S	S	S
SS	SS.S.nUR                  5        H  u  p#[        R                  " SSUS-  S-  5      n[        R                  " SSUS-  S-  5      n[        R                  " SSU5      n[        R                  " XEU45      nUR                  5        H=  u  p[        R                  " XxSS9u  pSU S3nUSU 3-  n[        [        U
5      XS9  M?     M     g)z
Straightforward testing with a mixture of linspace data (for
consistency). Adding in a 3rd mixture that will then be
completely ignored. All test values have been precomputed and
the shouldn't change.
r]   rX   rK  )r;  r<  r=  r>  r   rA  rF      r   P   !   E      rM  r   r_   r   r2   r1   r#   r3   ry  i)ir   rU   rO  z
 estimatorz with datasize of rQ  N)rS  r$   r(   r{  r   r   r,  )r   rT  rU  rV  rW  rX  x3rw   rC  rY  r+   r,   msgs                r   test_simple_range+TestHistogramOptimBinNums.test_simple_range<  s    $%B(*BD#%B(*BE#%B(*BE
 )3(8(8(:$G S"glQ&67BQGqL1$45BT30B		22,'A&5&;&;&="	||A	B :6+G955SVW:	 '> );r   r6   )r   r;  r?  r<  rA  r=  r>  c                    [         R                  " / SQ[         R                  S9n[         R                  " X!S9u  p4[         R                  " UR	                  [         R
                  5      US9u  pV[        X55        [        XF5        g )N)r      rs   r5   )r$   r:   int8r   r   int32r
   )r   r6   r+   r;   r<   hist32edges32s          r   test_signed_integer_data2TestHistogramOptimBinNums.test_signed_integer_data[  sW     HH\1ll10,,qxx'9E4(5*r   c           
      `   [         R                  " 5          US:X  a  [         R                  " S[        5        [	        [
        R                  " [
        R                  " [
        R                  " S5      S5      U5      [
        R                  " S5      5        SSS5        g! , (       d  f       g= f)z5
Test that bin width for integer data is at least 1.
rA  r   rT   rp  N)	r   r   r   r   r   r$   r   tilerL   )r   r6   s     r   test_integer&TestHistogramOptimBinNums.test_integere  si     $$&w%%h?&&rwwryy|T'BDI		! '&&s   B B
B-c           	      b   [        [        R                  " [        R                  " [        R                  " S5      S5      S5      [        R                  " S5      S-  5        [        [        R                  " [        R                  " [        R                  " S5      S5      SS/5      SS/5        g)	zH
Test that the bin-width>=1 requirement *only* applies to auto binning.
rT   rp  rF  rI  r2   rF   r   N)r   r$   r   r  rL   r   s    r   test_integer_non_auto/TestHistogramOptimBinNums.test_integer_non_autor  sw     	""277299Q<#>CIIbMA	 	""277299Q<#>RIH	r   c           	      P    / SQnU H  n[        [        [        / SQU/ SQS9  M     g)z-
Check that weighted data raises a TypeError
)r;  r<  r=  r>  r   r\  rh   N)r   r   r   )r   rB  rC  s      r   test_simple_weighted.TestHistogramOptimBinNums.test_simple_weighted}  s'     D'I)Y	#Y8 (r   r   N)r0  r1  r2  r3  __doc__r   r-   r`  rh  rm  rv  r  r  r  r   r4  parametrizer  r  r  r  r6  r   r   r   r8  r8    s    
4<4<(GM=&*(F$;> [[V &B C+C+ [[V &B C	C		8r   r8  c                   n    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)TestHistogramddi  c           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        USSS	/S
S/S
S//S9u  p#[         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      n[        X$5        / SQ/ SQ/ SQ/n[        XSS9u  p#[	        [         R
                  " X$S-  :H  5      5        [        USSS	/S
S/S
S//SS9u  p#[         R                  " / SQ/ SQ/ SQ// SQ/ SQ/ SQ//5      n[        X$S-  S5        [         R                  " USS	S9 Vs/ s H  n[         R                  " U5      PM     nn[        USSS/S
S/S
S//S 9u  p#[         R                  " S
S
/S
S
/S
S
//S
S	/S
S
/S	S
//S
S	/S
S
/S
S
//S
S
/S
S
/S
S
///5      n[        X$5        [         R                  " S!5      nS"U[        [        S#5      5      [        [        S#5      5      [        [        S#5      5      4'   [        [         R                  " S#5      [         R                  " S#5      [         R                  " S#5      /S#5      u  p#[        X(5        g s  snf )$N)r   rH   rI   )r   rI   r   )r   r   rH   )rH   rH   rI   )rH   rI   r   )rH   r   r   )r2   r3   r3   r_   r1   r   r3   rU   )r   r1   r   )r   r   r1   )r1   r   r   )r  r   r2   )r   r1   r2   r3   Tr6   rC   g      (@)r2   r3   r4   r4   rW   )r   r1   r   r   )r   r   r1   r   )r1   r   r   r   g      @r!   )r4   r3   r2   r  r2   r   )r   r   r   r7   r   )r$   r:   r   r
   r   allr	   splitsqueezer   listrV   rL   )	r   rw   Hr<   answeredrx   zr-  s	            r   r-   TestHistogramdd.test_simple  sI   HHno~$oH Iq)')1g1v1v%>@Iy)<%y)<> ?1% ,5q48qSL()* q)')1g1v1v%>'+- L,E(,EG H!!b[!4 %'HHQ$:;$:qRZZ]$:;Ir1g1v1v%>@QFQFQF3FQFQF3FQFQF3FQFQF35 6 	1%HHY<>$uQx.$uQx.$uQx.
89		!biilBIIaLI1M1  <s    Ic                     Sn[         R                  R                  SS5      nU H(  n[        X#5      u  pE[	        UR
                  U:H  5        M*     g )N))r   r4   rE   )rE   r4   r   )r   rE   r4   )r4   rE   r   )rE   r   r4   )r4   r   rE   r#   r3   r$   r%   r&   r   r   shaper   r6   rr,   r  r<   s         r   test_shape_3dTestHistogramdd.test_shape_3d  sC    IINN2q!A"1(HAAGGqL! r   c                     Sn[         R                  R                  SS5      nU H(  n[        X#5      u  pE[	        UR
                  U:H  5        M*     g )N))r   r4   r   rE   )r4   r   r   rE   )r   rE   r4   r   )r   rE   r   r4   )r   r   rE   r4   )r4   rE   r   r   )rE   r   r   r4   )r   r   r4   rE   )r   r4   rE   r   )rE   r4   r   r   )rE   r   r   r4   )r4   rE   r   r   )r4   r   r   rE   )r   r4   rE   r   )r   r   r4   rE   )rE   r   r4   r   )rE   r   r4   r   )r4   r   rE   r   )r4   r   rE   r   )r   rE   r4   r   )r   r4   r   rE   )r   rE   r   r4   )rE   r4   r   r   )r   r   rE   r4   r#   r4   r  r  s         r   test_shape_4dTestHistogramdd.test_shape_4d  sF    H IINN2q!A"1(HAAGGqL! r   c                    [         R                  R                  SS5      n[        U5      u  p#[        USS9u  pC[        U[         R                  " S5      S9u  pS[        XR5        [        U[         R                  " S5      S-  SS9u  pS[        XT5        [        U[         R                  " S[        5      S-  S9u  pS[        USU-  5        g )Nr    r2   TrB   rh   r   )r$   r%   r&   r   rm   r
   rn   )r   r*   r;   r<   n_histw_hists         r   r   TestHistogramdd.test_weights  s    IINN3"!!n#At4#Arwws|<6(#Arwws|a/?N6*#ArwwsC/@1/DE61t8,r   c                     [         R                  " S[        5      n[        USS9u  p#[	        US   [         R
                  " / SQ5      5        g )N)r#   r2   r2   r5   r   )r   rG   rH   )r$   r   rn   r   r
   r:   )r   rw   r;   r<   s       r   test_identical_samples&TestHistogramdd.test_identical_samples  s7    HHWc"!!!,58RXXo%>?r   c                     [        / / /SS/SS/4S9u  p[        U[        R                  " S//5      5        [        R                   " / / / /SS9u  p[        U[        R                  " S5      5        g )Nr   r1   r5   rG   r2   )r2   r2   r2   )r   r   r$   r:   r   r   s      r   r   TestHistogramdd.test_empty  sc    B8Aq6Aq6*:;Q2$ 01~~r2rl3Q 34r   c           
      `   [         R                  " S5      R                  SS5      n[        [        [         R
                  U/ SQS9  [        [        [         R
                  U/ SQS9  [        [        [         R
                  USSS/ SQ/S9  [        [         R
                  " USSS/ S	Q/S95        g )
Nr]   r2   r4   )r_   r2   r4   r   r5   )r1   gGz?r1   r1   r1   )r1   r2   r3   r0   )r$   rL   reshaper   r9   r   r   )r   rw   s     r   test_bins_errors TestHistogramdd.test_bins_errors  s}     IIaL  A&j"..!-Hj"..!/JAq-0H	Jq1a'>?@r   c           
      p   [         R                  " SS9   [         R                  " S5      R                  SS5      n[         R                  " SS/SS/SS//5      n[         R
                  " US[         R                  * SS//S	9u  p4[        X25        [         R
                  " US[         R                  " S
S[         R                  /5      /S	9u  p4[        X25        [         R
                  " US[         R                  * S[         R                  //S	9u  p4[        X25        S S S 5        g ! , (       d  f       g = f)Nr   )invalidrE   r3   r2   r1   r   r#   r5   r_   )r$   errstaterL   r  r:   r   rM   r   )r   rw   expectedr=   r>   s        r   test_inf_edgesTestHistogramdd.test_inf_edges  s    [[*		!$$Q*Axx!Q!Q!Q 89H>>!1w2.>*?@DAA(>>!1bhhArvv.G*HIDAA(>>!1w266.B*CDDAA( +**s   D	D''
D5c                    S/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        S/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        S/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        S	/n/ SQ/n[        XS9u  p4[        US   S:H  5        [        US   S:H  5        g )
NgG?)rG   rH   r7   r5   r   rG   r1   r7   g8   ?gqh ?)r   r   )r   rw   r6   r;   _s        r   test_rightmost_binedge&TestHistogramdd.test_rightmost_binedge  s    Na+Q3Q2Ea+Q3Q2Na+Q3Q3Ha+Q3Q3r   c           	         [         R                  R                  S5      n[        USS/SS/SS//S9  [        [        [        USS/SS/S[         R
                  //S9  [        [        [        USS/[         R                  S/SS//S9  g )N)r    r3   rG   r7   rJ   r   rH   rU   )r$   r%   r   r   r9   rM   r   r   s     r   r   !TestHistogramdd.test_finite_range  s    yy)D#sdD\D#; GHj+t!3Z$bff~F	Hj+t!3Z"&&$$E	Gr   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      nSn[        X4X44S9u  pV[         R                  " S/S//5      n[        XW5        g)z9Test that adjacent entries in an edge array can be equal )r   r1   r2   )r   r2   r2   r1   r5   r8   r7   Nr$   r:   r   r   )r   rw   rx   x_edgesy_edgesr;   r<   hist_expecteds           r   test_equal_edges TestHistogramdd.test_equal_edges  sk    HHYHHY((9%!1&/ABDD"
  	T)r   c                     [         R                  " / SQ5      nUS-  n[         R                  " / SQ5      nUS-  n[        X4X44S9u  pV[        US   R                  UR                  5        [        US   R                  UR                  5        g)z;Test that if an edge array is input, its type is preserved )r   r#   r   r#   )r   r   rX   r   r5   r   r1   N)r$   r:   r   r   rj   )r   rw   rx   r  r  r;   r<   s          r   test_edge_dtypeTestHistogramdd.test_edge_dtype  so    HH[!F((>*B,!1&/ABU1X^^W]]3U1X^^W]]3r   c                     Sn[         R                  " S/[         R                  5      n[         R                  " SS/[         R                  5      nX-   nX-   n[        X$4X54S9u  pg[	        US   S5        g )Nl            r   r_   r1   r5   )r   r   )r$   r:   int64r   r   )r   bigrw   r  rx   r  r;   r<   s           r   test_large_integers#TestHistogramdd.test_large_integers)  sd    HHaS"((#((B8RXX.G-!1&/ABT$Z#r   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " SS/SS//5      n[         R                  " S/S/S-  -   S/S-  -   S/S-  -   5      n[         R                  " S/S/S-  -   S/S-  -   S/S-  -   5      n[        XT4X!4S9u  pg[        Xc5        [        XT4X!4SS	9u  pg[        US
5        g )N)r   r2   r]   )r   rE   r]   r3   rT   r1   r   r5   Tr  g      ?r  )r   r  r  relative_areasrw   rx   r;   r<   s           r   test_density_non_uniform_2d+TestHistogramdd.test_density_non_uniform_2d5  s     ((9%((9%FF# 
 HHaSA37]aS1W,sQw67HHaSA37]aS1W,sQw67 "1&/ABT* "1&/A4PT;'r   c                     [         R                  " S5      n[         R                  " / SQ5      n[        XSS9u  p4[	        U4U4SS9u  pV[        X55        [        XFS   5        g )Nr#   rD   TrB   r   )r$   rL   r:   r   r   r   )r   r*   r6   r;   r<   hist_ddedges_dds          r   test_density_non_uniform_1d+TestHistogramdd.test_density_non_uniform_1dP  sU    IIbMxx()6'tgtDT#UQK(r   r   N)r0  r1  r2  r3  r-   r  r  r   r  r   r  r  r  r   r  r  r  r  r  r6  r   r   r   r  r    sQ    #!J""	-@
5A
) .G*	4
$(6)r   r  )r   r   numpyr$   r   r   r   numpy.testingr   r   r   r	   r
   r   r   r   r   r   r8  r  r   r   r   <module>r     sI       = =
 
 
Z" Z"xT8 T8nP) P)r   