
    gi                         d dl Z d dlZd dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZ  G d d      Z G d d      Z G d d	      Zy)
    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                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"e#jH                  jK                  d!"      d#        Z&d$ Z'd% Z(y&)'TestHistogramc                      y N selfs    W/var/www/html/audio_env/lib/python3.12/site-packages/numpy/lib/tests/test_histograms.pysetup_methodzTestHistogram.setup_method           c                      y r   r   r   s    r   teardown_methodzTestHistogram.teardown_method   r   r   c                    d}t         j                  j                  |      }t        |      \  }}t	        t        j
                  |d      |       t        t        j                  ddd            \  }}t        |d       y )Nd   r   axis
   )nprandomrandr   r   sumlinspacer
   )r   nvabs        r   test_simplezTestHistogram.test_simple   sb    IINN11ARVVAA&* 2;;q"c23A1b!r   c                 8   t        g dddg      \  }}t        |dg       t        |ddg       t        t        t         ddgd       t        ddgd      \  }}t	        |t        j                  dg             t        |t        j                  ddg             y )N            r-   r.   r   bins      ?       @)r   r
   r   
ValueErrorr   r!   arrayr   )r   histedgeshes        r   test_one_binzTestHistogram.test_one_bin'   s    q!f5e4!'51a&)j)aV!<!Qa(1Q!&288RH-.r   c                    d}t         j                  j                  |      }t        |d      \  }}t        j                  |t        j
                  |      z        }t        |d       t        j                  d      }g d}t        ||d      \  }}t        |d       t        t        j                  |t        j
                  |      z        d       t        ||d      \  }}t        |g d	       t        j                  d      }d
dddt         j                  g}t        ||d      \  }}t        |g d       t        j                  g d	ddt         j                  gd      \  }}t        |dd
g       y )Nr   Tdensityr-   r    r   r-   r/      r    皙?Fr,   r   r/   r@   )rA   rA   rA                 ?      ?      ?)r!   r"   r#   r   r$   diffr   aranger
   r   inf)	r   r&   r'   r(   r)   arear2   countsdmys	            r   test_densityzTestHistogram.test_density1   s.   IINN1D)1vva"''!*n%D!$ IIbMD$/11b!RVVA
N+Q/ D%011l+ IIbM1aBFF#D$/11./ ll3RVV,d<Vc1X&r   c                 l   t        j                  d      dz   }t        |ddg      \  }}t        |j	                         d       t        |ddg      \  }}t        |j	                         d       t        |ddgd      \  }}t        |t        j                  |      z  j	                         dd	
       t        j                  d      dz   }t        |ddg|d      \  }}t        |t        j                  |      z  j	                         d       t        |dddg|      \  }}t        ||dd        y )Nr    rC   r   	   ranger-   TrP   r>      decimalrP   weightsr>      r2   rP   rV   )r!   rG   r   r   r$   r   rF   )r   r(   r9   r)   ws        r   test_outlierszTestHistogram.test_outliersQ   s   IIbMB 1a&)1QUUWa  1b'*1QUUWa  1a&$71Q^002ArB IIbMB1a&!TB1a"''!*n))+Q/1a&!<1Q!B r   c                     t        j                  d      dz   }t        j                  d      dz   }t        t        d      5  t	        |ddg|d      \  }}d d d        y # 1 sw Y   y xY w)	Nr    rC      zsame shape asr-   rN   TrU   )r!   rG   r   r5   r   )r   r(   rZ   r9   r)   s        r   test_arr_weights_mismatchz'TestHistogram.test_arr_weights_mismatchi   sa    IIbMBIIbMB _= 	GQq!faFDAq	G 	G 	Gs   AA(c                    t        j                  d      dz   }t        |      \  }}t        t        j                  |j
                  t         j                               t        |d      \  }}t        t        j                  |j
                  t         j                               t        |t        j                  dt                    \  }}t        t        j                  |j
                  t         j                               t        |t        j                  dt                    \  }}t        t        j                  |j
                  t         j                               y )Nr    rC   Tr=   rV   )r!   rG   r   r   
issubdtypedtypeintegerfloatingonesintfloat)r   r(   r9   r)   s       r   	test_typezTestHistogram.test_typeo   s    IIbMB|1aggrzz23D)1aggr{{34BGGB$451aggrzz23BGGB$671aggr{{34r   c                    t        j                  g dt         j                        }t        j                  g dt         j                        }t        j                  ||d      \  }}}t	        |j                         d       y )N)g2VEq@gx>fQg-VT5@rb   )g!@gS@g^z@r   r1         @)r!   r6   float32histogram2dr   r$   )r   xycounts_histxedgesyedgess         r   test_f32_roundingzTestHistogram.test_f32_rounding~   sV    HH8

KHH<BJJO&(nnQ&D#VV[__&+r   c                 F   t        j                  g dt         j                        }t        j                  |      \  }}t	        j
                  t        d      5  t        j                  g d      \  }}t        ||       t        ||       d d d        y # 1 sw Y   y xY w)N)r-   r-   r   rj   zConverting input from .*match)TTF)r!   r6   uint8r   pytestwarnsRuntimeWarningr
   )r   r(   int_hist	int_edgesr7   r8   s         r   test_bool_conversionz"TestHistogram.test_bool_conversion   sw     HHYbhh/ ll1o)
 \\.0JK 	1,,':;KD%tX.ui0		1 	1 	1s   3BB c                 b   t         j                  j                  d      }t        j                  d      dz  }t	        |      \  }}t	        |d      \  }}t	        ||      \  }}t	        ||d      \  }	}
t        |dz  |       t        ||	       t        j                  ddd      }t        j                  t        j                  d      t        j                  d      f      }t	        |t        j                  d	      |
      \  }}t        ||       t	        g ddg d
      \  }}t        |g d       t	        g ddg dd      \  }}t        |t        j                  g d      dz  dz  dz         t	        t        j                  d      g dg dd      \  }}t        |g d       y )Nr      Tr=   r`   rV   r>   r   r    r]   r2   rV   )r-   r.   r.   r0   r0   )r0   r/   r.   r-   )r0   r   r   r-   )r2   rV   r>   g      $@rk   rN   r?   )	r.   r-   r-   r-   r-   r-   r-   r-   r-   )皙?rA   rA   g333333?)r!   r"   r#   re   r   r	   r%   concatenatezerosrG   r
   r6   r   )r   r'   rZ   r(   r)   nanbwawbnwanwbs              r   test_weightszTestHistogram.test_weights   s`   IINN3GGCL1|11d+B1a(BQ48S!!a%,!"c* KK2r"NNBHHQK451299R=!<B!"a( <aFB2|,q,FB!"bhh|&<s&BR&G!&KL IIaL*/?1 	A12r   c           	         t        j                  g d      }t        j                  g d      dt        j                  g d      z  z   }t        |g d|      \  }}t        |t        j                  ddg      dt        j                  dd	g      z  z          t        |ddd	g|
      \  }}t        |t        j                  ddg      dt        j                  dd	g      z  z          ddlm} t        j                  g d      }t        j                   |d       |d       |d	      g      }t        |g d|      \  }}t        | |d       |d      g       t        |ddd	g|
      \  }}t        | |d       |d      g       y )Ng?      @gffffff@)r-   rY   r.   y              ?)r.   r-   r.   )r   r.   r/   r   r-   r.   r/   rX   r   )Decimalr   )r!   r6   r   r	   rT   r   )r   valuesrV   r   r   r   s         r   test_exotic_weightsz!TestHistogram.test_exotic_weights   sM    /*((:&bhhy.A)AA 6	7CB!"bhh1v&6bhh1v>N9N&NO 6!QIB!"bhh1v&6bhh1v>N9N&NO 	$/*((GAJ
GAJ?@ 6	7CB!"wqz71:&>? 6!QIB!"wqz71:&>?r   c                     t        j                  g d      }t        j                  |ddgd       t        |g d       y )Nr   r    r   )rP   r2   )r!   r6   r   r	   )r   r   s     r   test_no_side_effectsz"TestHistogram.test_no_side_effects   s0     /*
VC937!&/:r   c                     t        g ddg      \  }}t        |t        j                  dg             t        |t        j                  ddg             y )Nr   r-   r1   r   r
   r!   r6   r   r(   r)   s      r   
test_emptyzTestHistogram.test_empty   sA    Aq6+11bhhsm,1bhh1v./r   c                 x    t        j                  ddd      }t        |d       t        t        t        |d       y )NrB   r3   r   numr   g333333@)r!   r%   r   r   	TypeErrorr   valss     r   test_error_binnum_typez$TestHistogram.test_error_binnum_type   s,    {{3-$iD#6r   c                     t        j                  ddd      }t        |ddg       t        t        t        |t         j
                  dg       t        t        t        |dt         j                  g       y )NrB   r3   r   r   rE         ?rO   )r!   r%   r   r   r5   nanrH   r   s     r   test_finite_rangezTestHistogram.test_finite_range   sN    {{3-$tTl+j)T"&&$Hj)T$Hr   c                     t        j                  ddd      }t        t        d      5  t        j                  |ddg       d d d        y # 1 sw Y   y xY w)	NrB   r3   r   r   zmax must be larger thanrA   g{Gz?rO   )r!   r%   r   r5   r   r   s     r   test_invalid_rangez TestHistogram.test_invalid_range   sF    {{3- -FG 	2LLc4[1	2 	2 	2s   AAc                     t        j                  g d      }t        j                  |dd      \  }}|dkD  }|d d |   }|dd  |   }t        |||      D ]"  \  }}}	t	        ||k\         t	        ||	k         $ y )N)iQ  i  i  i&  i  i  i  ih   )r.   i  r2   rP   r   rY   r-   )r!   r6   r   zipr   )
r   arrr7   r8   mask
left_edgesright_edgesrn   leftrights
             r   test_bin_edge_casesz!TestHistogram.test_bin_edge_cases   s    hh=>ll3TCeax3BZ%
ABio!#z;? 	NAtUAIAI	r   c                     t        j                  g d      }t        j                  |dd      \  }}t        |d   d       y )N	rB   rB   rB   r3   r4   rk   rk   g      @g      @         r   r   rY   r-   )r!   r6   r   r   )r   r   r7   r8   s       r   test_last_bin_inclusive_rangez+TestHistogram.test_last_bin_inclusive_range   s5    hhCDll3RyAeT"Xq!r   c                     t        j                  ddd      }t        j                  ddgddgg      }t        t        d      5  t        j
                  ||	       d d d        y # 1 sw Y   y xY w)
NrB   r3   r   r   r   rC   g333333?z
must be 1dr1   )r!   r%   r6   r   r5   r   )r   r   r2   s      r   test_bin_array_dimsz!TestHistogram.test_bin_array_dims   s\    {{3-xx!SC:./ \: 	*LLD)	* 	* 	*s   A%%A.c                     t        j                  dg      }t        j                  g dd      }t        t              5  t        j                  ||      \  }}d d d        y # 1 sw Y   y xY w)Nr.   )r-   r/   r-   uint64rj   r1   )r!   r6   r   r5   r   )r   r   r2   r7   r8   s        r    test_unsigned_monotonicity_checkz.TestHistogram.test_unsigned_monotonicity_check  sT     hhsmxx	2:& 	7,,s6KD%	7 	7 	7s   A##A,c           
      ~   t        t        t        t        d      D cg c]  }t	        j
                  d       c}t        j                   gz          t        t        t        t        d      D cg c]  }t	        j
                  d       c}t        j                  gz          t	        j                  t        d      D cg c]  }t	        j
                  d       c}dgz          t	        j                  t        d      D cg c]  }t	        j
                  d       c}dgz          y c c}w c c}w c c}w c c}w )Nr    g?rC   g     ?)r   r5   r   rP   r!   r6   rH   )r   is     r   test_object_array_of_0dz%TestHistogram.test_object_array_of_0d  s    juRy9!9bffWIE	GjuRy9!9RVVHD	F 	U2Y7bhhsm7;K:LLM
U2Y7bhhsm72$>? :9 87s   D+/D0 D5D:c                    t        j                  ddt         j                  g      }t        j                  t         j                  t         j                  g      }t        j                         5  t        j
                  dt               t        t        t        |d       t        t        t        |d       t        |dd      \  }}t        |j                         d       t        |dd      \  }}t        |j                         d       t        |ddg      \  }}t        |j                         d       t        |ddg      \  }}t        |j                         d       d d d        y # 1 sw Y   y xY w)	Nr   r-   ignoreautor1   r   r-   r   r.   )r!   r6   r   warningscatch_warningssimplefilterrz   r   r5   r   r   r$   )r   one_nanall_nanr9   r)   s        r   test_some_nan_valuesz"TestHistogram.test_some_nan_values  s   ((Aq"&&>*((BFFBFF+, $$& 	%!!(N;*ivF*ivF W6@DAq!$W6@DAq!$ WAq62DAq!$WAq62DAq!$!	% 	% 	%s   .C7E..E7c                    t        j                  dd      }t        j                  g d      }t        j                  g d      }||z   }||z   }t        j                  d      }t	        ||      \  }}t	        |j                  |      |j                  |            \  }	}
t	        ||      \  }}t        ||       t        |	|       t        ||z
  j                  t              |       t        |
j                  t              |       t        |j                  |j                         t        |
j                  |       y )Nz
2000-01-01D)	r   r   r-   r-   r.   r/   r   r       )r   r.      r   ztimedelta64[D]r1   )r!   
datetime64r6   rb   r   astyper   rf   )r   beginoffsetsr2   dates	date_binstdd_countd_edget_countt_edgei_counti_edges                r   test_datetimezTestHistogram.test_datetime0  s    lC0((89xx&DL	XX&'
 $E	:#GNN2$6T[[_M#G$7Wg&Wg&fun,,S16:V]]3'0V\\5;;/V\\2&r   c                    dt        j                  |      j                  z  dz
  }t        j                  d|z   dz   d|z  dz
  g|      }t	        |d      \  }}t        |d|z   dz   dd|z  dz
  g       t        |ddg       y )NrW   r-   r.   r0   rj   r1   r   )r!   rb   itemsizer6   r   r   )r   rb   exponentr   r7   r:   s         r   do_signed_overflow_boundsz'TestHistogram.do_signed_overflow_boundsI  s    rxx///!3hhHq(!X+/:%HCa(aQ!X+)1akAo>?TAq6"r   c                 :   | j                  t        j                         | j                  t        j                         | j                  t        j                         | j                  t        j
                         | j                  t        j                         y r   )r   r!   byteshortintcint_longlongr   s    r   test_signed_overflow_boundsz)TestHistogram.test_signed_overflow_boundsP  s\    &&rww/&&rxx0&&rww/&&rww/&&r{{3r   c                 R   t        j                  |      j                  }t        j                  dg|      }t        j                  d|z   dg|      }|j	                  |      d   dk7  ry t        j
                  |d|      \  }}t        |dg       t        |j                  |       y )Nr3   r4   r   r-   r   r!   finfoepsr6   r   r   r   rb   r   float_smallfloat_larger   r   rP   countx_locs           r   do_precision_lower_boundz&TestHistogram.do_precision_lower_boundW  s    hh{#''hhuk*#)S);7 <<$Q'1, ||Cau=uUQC U[[+.r   c                 R   t        j                  |      j                  }t        j                  dg|      }t        j                  dd|z
  g|      }|j	                  |      d   dk7  ry t        j
                  |d|      \  }}t        |dg       t        |j                  |       y )Nr3   rB   rY   r-   r   r   r   r   s           r   do_precision_upper_boundz&TestHistogram.do_precision_upper_boundf  s    hh{#''hhuk*#sSy);7 <<$R(A- ||Cau=uUQC U[[+.r   c                 L    | j                  ||       | j                  ||       y r   )r   r   )r   r   r   s      r   do_precisionzTestHistogram.do_precisionv  s"    %%k;?%%k;?r   c                 ,   | j                  t        j                  t        j                         | j                  t        j                  t        j                         | j                  t        j                  t        j
                         | j                  t        j                  t        j                         | j                  t        j                  t        j
                         | j                  t        j                  t        j
                         y r   )r   r!   halfsingledouble
longdoubler   s    r   test_precisionzTestHistogram.test_precisionz  s    "''299-"''299-"''2==1"))RYY/"))R]]3"))R]]3r   c                 <   t        g dddg      \  }}t        g dddg      }t        ||       t        j                  g d      }t        |dd      \  }}t        |dd      }t        ||       t        |dd	      \  }}t        |dd	      }t        ||       y )
Nr,   r-   r.   r   r   r   r   r   r   )r   r   r
   r!   r6   )r   r7   r:   r8   r   s        r   test_histogram_bin_edgesz&TestHistogram.test_histogram_bin_edges  s    L1a&1a#L1a&95!$hhCDCb	:a#Cb	B5!$CfF;a#CfFC5!$r   c                     t        j                  ddgdz        }t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nr-   g     ?r    zToo many bins for data rangeru   r1   )r!   r6   rx   raisesr5   r   )r   r   s     r   test_small_value_rangez$TestHistogram.test_small_value_range  sG    hh9~*+]]:-KL 	$c#	$ 	$ 	$s   AAz,Bad memory reports lead to OOM in ci testing)reasonc                     t        j                  ddg      }d}d}t        j                  d      }t        j                  ||||f      }t	        t        |      t        d             y )Ni r/   i  i>  )sampler2   )r-   r.   )r!   r   rG   r   r   type)r   r   xbinsybinszbinsr7   s         r   test_big_arrayszTestHistogram.test_big_arrays  sU    9a.)		% ~~V5%2GHT$Zf.r   c                     t        j                  t        j                  dgd      dd      \  }}t        j                  ddg      }t        ||       y )	Ng$xz>f8rj   r.   )gx0gel	  r   r-   r   )r!   r   r6   r
   )r   r7   r:   expected_hists       r   test_gh_23110zTestHistogram.test_gh_23110  sG    ,,rxx5A$%%79a !Q(4/r   c                     d}dddddd||||||dg}t        j                  |d      \  }}t        |      dk  sJ |d   |d   k(  sJ |d   |d   k(  sJ y )	Ng    ?r   r-   r.   r   r1   r    rY   )r!   r   len)r   r:   ZrJ   r8   s        r   test_gh_28400zTestHistogram.test_gh_28400  sy    1aAq!Q1a3QV46{RQx1Q4RyAbE!!!r   N))__name__
__module____qualname__r   r   r*   r;   rL   r[   r^   rh   rs   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   markskipr  r  r  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                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zd Zd Zy)TestHistogramOptimBinNumsz]
    Provide test coverage when using provided estimators for optimal number of
    bins
    c                     g d}|D ]S  }t        g |      \  }}t        |t        j                  dg             t        |t        j                  ddg             U y )Nfdscottricesturgesdoanesqrtr   stoner1   r   r-   r   )r   estimator_list	estimatorr(   r)   s        r   r   z$TestHistogramOptimBinNums.test_empty  sU    < ( 	4IRi0DAqq"((A3-0q"((Aq6"23	4r   c                    ddddddddddddddd	dd
ddddddddddd}|j                         D ]  \  }}t        j                  dd|dz  dz        }t        j                  dd|dz  dz        }t        j                  ||f      }|j                         D ];  \  }}t        j                  ||      \  }	}
t        t        |	      |d| d|        =  y)z
        Straightforward testing with a mixture of linspace data (for
        consistency). All test values have been precomputed and the values
        shouldn't change
        r0   rW   r   r.   r     r          rN      #      G   r   2   i  i  r   rY   r   r-   r/   For the  estimator with datasize of err_msgN)itemsr!   r%   r   r   r   r
  )r   
basic_testtestlenexpectedResultsx1x2rn   r  numbinsr(   r)   s              r   r*   z%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Bx(A&5&;&;&= <"	7||Ay11SVW L118	7; <<		<r   c           
      \   ddddddddddddddddddddddddd}|j                         D ]{  \  }}t        j                  |      j                  t              }|j                         D ];  \  }}t        j
                  ||      \  }}t        t        |      |d| d|        = } y	)
z
        Smaller datasets have the potential to cause issues with the data
        adaptive methods, especially the FD method. All bin numbers have been
        precalculated.
        r-   )r  r  r  r  r  r  r  r.   r/   r-   r.   r/   r)  r*  r+  N)r-  r!   rG   r   rg   r   r   r
  )	r   	small_datr/  r0  testdatr  expbinsr(   r)   s	            r   
test_smallz$TestHistogramOptimBinNums.test_small  s      !1aA"#Q< 1aA"#Q< 1aA"#Q<	=	 )2(9 	<$G_ii(//6G&5&;&;&= <"	7||GY71SVW L118	7; <<	<r   c                 J    g d}|D ]  }t        t        t        g d|        y)zS
        Check a Value Error is thrown when an unknown string is passed in
        )madfreeman
histogramsIQRr5  N)r   r5   r   )r   
check_listr  s      r   test_incorrect_methodsz0TestHistogramOptimBinNums.test_incorrect_methods  s(     =
# 	GI*iIF	Gr   c           	          t        j                  d      }ddddddddd}|j                         D ]8  \  }}t        j                  ||      \  }}t	        t        |      || d       : y)z
        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   r-   r  z estimator, No Variance testr+  N)r!   re   r-  r   r   r
  )r   novar_datasetnovar_resultdictr  r3  r(   r)   s          r   test_novariancez)TestHistogramOptimBinNums.test_novariance  s}    
 "#aq%&1qJ #3"8"8": 	MIw<<y9DAqQ$-;.J!KM	Mr   c                 j   t        j                  d      }d|dd d|dd t        |d      }t        |d   d       t        |d   d	       t	        |      dk  sJ t        |d
      }t        |t        j
                  ddg             t        |d      }t        |t        j                  ddd             y)zY
        Check when IQR is 0, but variance exists, we return a reasonable value.
          r   Nr/   r   r   rY   g      Y@r  r  r!  )r!   re   r   r   r
  r6   r%   )r   lim_var_data
edges_autoedges_fdedges_sturgess        r   test_limited_variancez/TestHistogramOptimBinNums.test_limited_variance  s     wwt}RaRS(v>
Z]A&Z^T*:$$$&|T:XrxxC12+L)D]BKK3$;<r   c                 $   t        j                  ddd      }t        j                  t        j                  ddd      |f      }dddd	d
}|j                         D ]3  \  }}t        j                  ||      \  }}t        t        |      |       5 y)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    r(  ir      r]   r@   )r  r  r  r  N)r!   r%   hstackr-  r   r   r
  )r   xcenteroutlier_datasetoutlier_resultdictr  r3  r(   r)   s           r   test_outlierz&TestHistogramOptimBinNums.test_outlier  s     ++c2r*))R[[tQ%?$IJ$&R!L"4":":"< 	*Iw<<;DAqQ)	*r   c                 V   d }t        j                  ddd      j                         j                  t              }t        d      D cg c]  }|D cg c]  } |||       c} }}}t        t        j                  |d      dz
        }t        |g d	d
       y c c}w c c}}w )Nc                     t         j                  j                  |       }|j                  dd|      }t	        t        j
                  |d      d         t	        t        j
                  |d      d         }}|||z   z  S )Nr   r.   )locscalesizer  r  )r!   r"   RandomStatenormalr
  r   )seedrY  rngrn   r(   r)   s         r   nbins_ratiozBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratio.  sl    ))''-C

q
5Ar||Aw/23Sa9QRS9T5UqAA;r   r    r   r0   )startstopr   r   r   rC   )g333333?g
ףp=
?g{Gz?gQ?r.   rS   )	r!   	geomspaceroundr   rf   rP   absmeanr   )r   r^  
geom_spacer\  rY  llavgs          r   test_scott_vs_stonez-TestHistogramOptimBinNums.test_scott_vs_stone*  s    	 \\!<BBDKKCP
KPQS9U4:>4{4&>UU "''"1%+,C!91E ?Us   	B%B $B% B%c           	         ddddddddddddddd	d	d
dd	ddd}|j                         D ]  \  }}t        j                  dd|dz  dz        }t        j                  dd|dz  dz        }t        j                  dd|      }t        j                  |||f      }|j                         D ]E  \  }}	t        j                  ||d      \  }
}d| d}|d| z  }t        t        |
      |	|       G  y)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.
        rW   rR   r%  )r  r  r  r  r   r  r       r   P   !   E      r'  r   rY   r   r.   r-   r    r/   rN  i)ir   rO   r)  z
 estimatorz with datasize of r+  N)r-  r!   r%   rP  r   r   r
  )r   r.  r/  r0  r1  r2  x3rn   r  r3  r(   r)   msgs                r   test_simple_rangez+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		2r2,'A&5&;&;&= ;"	7||Ay	B1 :6+G955SVWc:	;	;r   r2   )r   r  r  r  r  r  r  c                 $   t        j                  g dt         j                        }t        j                  ||      \  }}t        j                  |j	                  t         j
                        |      \  }}t        ||       t        ||       y )N)r      rj   r1   )r!   r6   int8r   r   int32r
   )r   r2   r(   r7   r8   hist32edges32s          r   test_signed_integer_dataz2TestHistogramOptimBinNums.test_signed_integer_data[  sa     HH\1ll140e,,qxx'9E4(5'*r   c           
      H   t        j                         5  |dk(  rt        j                  dt               t	        t        j                  t        j                  t        j                  d      d      |      t        j                  d             ddd       y# 1 sw Y   yxY w)zE
        Test that bin width for integer data is at least 1.
        r  r   rN   rF  N)	r   r   r   rz   r   r!   r   tilerG   )r   r2   s     r   test_integerz&TestHistogramOptimBinNums.test_integere  sr     $$& 	w%%h?&&rwwryy|T'BDI		!	 	 	s   A:BB!c           	      T   t        t        j                  t        j                  t        j                  d      d      d      t        j                  d      dz         t        t        j                  t        j                  t        j                  d      d      ddg      ddg       y)	zX
        Test that the bin-width>=1 requirement *only* applies to auto binning.
        rN   rF  r   r#  r.   rA   r   N)r   r!   r   r{  rG   r   s    r   test_integer_non_autoz/TestHistogramOptimBinNums.test_integer_non_autor  sw     	""277299Q<#>CIIbMA	 	""277299Q<#>RIH	r   c           	      R    g d}|D ]  }t        t        t        g d|g d         y)z=
        Check that weighted data raises a TypeError
        )r  r  r  r  r   r5  r`   N)r   r   r   )r   r  r  s      r   test_simple_weightedz.TestHistogramOptimBinNums.test_simple_weighted}  s,     D' 	8I)Y	#Y8	8r   N)r  r  r  __doc__r   r*   r9  r@  rD  rL  rT  rh  rq  rx   r  parametrizery  r|  r~  r  r   r   r   r  r    s    
4<4<(GM=&*(F$;> [[V &B C+C+ [[V &B C	C		8r   r  c                   f    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)TestHistogramddc           	         t        j                  g dg dg dg dg dg dg      }t        |ddd	gd
dgd
dgg      \  }}t        j                  g dg dg dgg dg dg dgg      }t        ||       g dg dg dg}t        ||d      \  }}t	        t        j
                  ||dz  k(               t        |ddd	gd
dgd
dggd      \  }}t        j                  g dg dg dgg dg dg dgg      }t        ||dz  d       t        j                  |dd	      D cg c]  }t        j                  |       }}t        |dddgd
dgd
dgg       \  }}t        j                  d
d
gd
d
gd
d
ggd
d	gd
d
gd	d
ggd
d	gd
d
gd
d
ggd
d
gd
d
gd
d
ggg      }t        ||       t        j                  d!      }d"|t        t        d#            t        t        d#            t        t        d#            f<   t        t        j                  d#      t        j                  d#      t        j                  d#      gd#      \  }}t        ||       y c c}w )$N)r   rC   rD   )r   rD   r   )r   r   rC   )rC   rC   rD   )rC   rD   r   )rC   r   r   )r.   r/   r/   rY   r-   r   r/   rO   )r   r-   r   )r   r   r-   )r-   r   r   )rs  r   r.   )r   r-   r.   r/   Tr2   r>   g      (@)r.   r/   r0   r0   rQ   )r   r-   r   r   )r   r   r-   r   )r-   r   r   r   g      @r   )r0   r/   r.   rs  r.   r   )r   r   r   r3   r   )r!   r6   r   r
   r   allr	   splitsqueezer   listrP   rG   )	r   rn   Hr8   answeredro   zr  s	            r   r*   zTestHistogramdd.test_simple  s\   HHno~$oH Iq)')1g1v1v%>@5Iy)<%y)<> ?1f% ,5qr485qFSL()* q)')1g1v1v%>'+-5 L,E(,EG H!!Vb[!4 %'HHQ$:;qRZZ];;Ir1g1v1v%>@5QFQFQF3FQFQF3FQFQF3FQFQF35 6 	1f%HHY<>$uQx.$uQx.$uQx.
89		!biilBIIaLI1M51a  <s   %Ic                     d}t         j                  j                  dd      }|D ])  }t        ||      \  }}t	        |j
                  |k(         + y )N))r   r0   r@   )r@   r0   r   )r   r@   r0   )r0   r@   r   )r@   r   r0   )r0   r   r@   r    r/   r!   r"   r#   r   r   shaper   r2   rr)   r  r8   s         r   test_shape_3dzTestHistogramdd.test_shape_3d  sL    IINN2q! 	"A"1a(HAuAGGqL!	"r   c                     d}t         j                  j                  dd      }|D ])  }t        ||      \  }}t	        |j
                  |k(         + y )N))r   r0   r   r@   )r0   r   r   r@   )r   r@   r0   r   )r   r@   r   r0   )r   r   r@   r0   )r0   r@   r   r   )r@   r   r   r0   )r   r   r0   r@   )r   r0   r@   r   )r@   r0   r   r   )r@   r   r   r0   )r0   r@   r   r   )r0   r   r   r@   )r   r0   r@   r   )r   r   r0   r@   )r@   r   r0   r   )r@   r   r0   r   )r0   r   r@   r   )r0   r   r@   r   )r   r@   r0   r   )r   r0   r   r@   )r   r@   r   r0   )r@   r0   r   r   )r   r   r@   r0   r    r0   r  r  s         r   test_shape_4dzTestHistogramdd.test_shape_4d  sO    H IINN2q! 	"A"1a(HAuAGGqL!	"r   c                    t         j                  j                  dd      }t        |      \  }}t        |d      \  }}t        |t        j                  d            \  }}t        ||       t        |t        j                  d      dz  d      \  }}t        ||       t        |t        j                  dt              dz        \  }}t        |d|z         y )Nr   r.   Tr=   r`   r   )r!   r"   r#   r   re   r
   rf   )r   r'   r7   r8   n_histw_hists         r   r   zTestHistogramdd.test_weights  s    IINN3"!!ne#At4#Arwws|<64(#Arwws|a/?N66*#ArwwsC/@1/DE61t8,r   c                     t        j                  dt              }t        |d      \  }}t	        |d   t        j
                  g d             y )N)r    r.   r.   r1   r   )r   rB   rC   )r!   r   rf   r   r
   r6   )r   rn   r7   r8   s       r   test_identical_samplesz&TestHistogramdd.test_identical_samples  s9    HHWc"!!!,e58RXXo%>?r   c                     t        g g gddgddgf      \  }}t        |t        j                  dgg             t        j                   g g g gd      \  }}t        |t        j                  d             y )Nr   r-   r1   rB   r.   )r.   r.   r.   )r   r   r!   r6   r   r   s      r   r   zTestHistogramdd.test_empty  sg    B8Aq6Aq6*:;1Q2$ 01~~r2rl31Q 34r   c           
      t   t        j                  d      j                  dd      }t        t        t         j
                  |g d       t        t        t         j
                  |g d       t        t        t         j
                  |dddg dg       t        t        j
                  |dddg d	g             y )
NrW   r.   r0   )rY   r.   r0   r   r1   )r-   gGz?r-   r-   r-   )r-   r.   r/   r,   )r!   rG   reshaper   r5   r   r   )r   rn   s     r   test_bins_errorsz TestHistogramdd.test_bins_errors  s}     IIaL  A&j"..!-Hj"..!/JAq-0H	Jq1a'>?@r   c           
      |   t        j                  d      5  t        j                  d      j                  dd      }t        j                  ddgddgddgg      }t        j
                  |dt         j                   ddgg	      \  }}t        ||       t        j
                  |dt        j                  d
dt         j                  g      g	      \  }}t        ||       t        j
                  |dt         j                   dt         j                  gg	      \  }}t        ||       d d d        y # 1 sw Y   y xY w)Nr   )invalidr@   r/   r.   r-   r   r    r1   rY   )r!   errstaterG   r  r6   r   rH   r   )r   rn   expectedr9   r:   s        r   test_inf_edgeszTestHistogramdd.test_inf_edges  s    [[* 	)		!$$Q*Axx!Q!Q!Q 89H>>!1w2.>*?@DAqAx(>>!1bhhArvv.G*HIDAqAx(>>!1w266.B*CDDAqAx(	) 	) 	)s   DD22D;c                    dg}g dg}t        ||      \  }}t        |d   dk(         t        |d   dk(         dg}g dg}t        ||      \  }}t        |d   dk(         t        |d   dk(         dg}g dg}t        ||      \  }}t        |d   dk(         t        |d   dk(         d	g}g dg}t        ||      \  }}t        |d   dk(         t        |d   dk(         y )
NgG?)rB   rC   r3   r1   r   rB   r-   r3   g8   ?gqh ?)r   r   )r   rn   r2   r7   _s        r   test_rightmost_binedgez&TestHistogramdd.test_rightmost_binedge  s    Nad+aQ3Q2Ead+aQ3Q2Nad+aQ3Q3Had+aQ3Q3r   c           	      &   t         j                  j                  d      }t        |ddgddgddgg       t        t        t        |ddgddgdt         j
                  gg       t        t        t        |ddgt         j                  dgddgg       y )N)r   r/   rB   r3   rE   r   rC   rO   )r!   r"   r   r   r5   rH   r   r   s     r   r   z!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                    t        j                  g d      }t        j                  g d      }t        j                  g d      }d}t        ||f||f      \  }}t        j                  dgdgg      }t        ||       y)z: Test that adjacent entries in an edge array can be equal )r   r-   r.   )r   r.   r.   r-   r1   r4   r3   Nr!   r6   r   r   )r   rn   ro   x_edgesy_edgesr7   r8   hist_expecteds           r   test_equal_edgesz TestHistogramdd.test_equal_edges  ss    HHYHHY((9%!1a&/ABeDD"
  	T=)r   c                 (   t        j                  g d      }|dz  }t        j                  g d      }|dz  }t        ||f||f      \  }}t        |d   j                  |j                         t        |d   j                  |j                         y)z< Test that if an edge array is input, its type is preserved )r   r    r   r    )r   r   rR   r   r1   r   r-   N)r!   r6   r   r   rb   )r   rn   ro   r  r  r7   r8   s          r   test_edge_dtypezTestHistogramdd.test_edge_dtype  su    HH[!F((>*B,!1a&/ABeU1X^^W]]3U1X^^W]]3r   c                     d}t        j                  dgt         j                        }t        j                  ddgt         j                        }||z   }||z   }t        ||f||f      \  }}t	        |d   d       y )Nl            r   rY   r-   r1   )r   r   )r!   r6   int64r   r   )r   bigrn   r  ro   r  r7   r8   s           r   test_large_integersz#TestHistogramdd.test_large_integers)  sn    HHaS"((#((B8RXX.!G-!1a&/ABeT$Z#r   c                    t        j                  g d      }t        j                  g d      }t        j                  ddgddgg      }t        j                  dgdgdz  z   dgdz  z   dgdz  z         }t        j                  dgdgdz  z   dgdz  z   dgdz  z         }t        ||f||f      \  }}t        ||       t        ||f||fd	      \  }}t        |d
       y )N)r   r.   rW   )r   r@   rW   r/   rN   r-   r   r1   Tr  g      ?r  )r   r  r  relative_areasrn   ro   r7   r8   s           r   test_density_non_uniform_2dz+TestHistogramdd.test_density_non_uniform_2d5  s     ((9%((9%FF# 
 HHaSA37]aS1W,sQw67HHaSA37]aS1W,sQw67 "1a&/ABeT>* "1a&/A4PeT;'r   c                     t        j                  d      }t        j                  g d      }t        ||d      \  }}t	        |f|fd      \  }}t        ||       t        ||d          y )Nr    r?   Tr=   r   )r!   rG   r6   r   r   r   )r   r'   r2   r7   r8   hist_ddedges_dds          r   test_density_non_uniform_1dz+TestHistogramdd.test_density_non_uniform_1dP  s_    IIbMxx()46e'tgtDT7#UHQK(r   N)r  r  r  r*   r  r  r   r  r   r  r  r  r   r  r  r  r  r  r   r   r   r  r    sQ    #!J""	-@
5A
) .G*	4
$(6)r   r  )r   rx   numpyr!   r   r   r   numpy.testingr   r   r   r	   r
   r   r   r   r   r   r  r  r   r   r   <module>r     sI       = =
 
 
Z" Z"xT8 T8nP) P)r   