
ʽXc          @` s  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z e j 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" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d/ d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dF dH dI d& dJ dK dL dM dN dO d- dP dQ dR dS dT dU d; dV dW dX dY dZ d[ d\ d] d^ d_ d` da d db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| dq d} d~ d d d d d d d d d d` d d d du d d d d d d d d d d d d d d^ d dq d d d dJ d d d dg d d d d d d d d d d d ds d d d d d d d d d dF d d d d dG d d d d dN 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 d d d d d d d d d dy d
 d d d d] d d d d d d d d d d& d d d1 d d d d d d d( d d d d d d dw d d d d db d^ d d	 d dJ d d d d~ d d d d d d d d d dk d d d d d d8 dY d dp d d d d d3 ddddddd ddd	d d
ddddU dddddp 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$d d%d&d] d'd(d)d*d d+d,d-d.d? d/d0dd1d[ d2d d)d d dk d3d4d5d d6d d+d d7d8d d d9d	 d:dd d# d d;d<g j dV Z  e j d?d@g dAd@g dAd>g dBd>g dCdDg dEd>g dBdAg dCd>g dCdAg dFdAg dEdCg g  Z! e j d?d?g dGdHg dIdz g g  Z" e j dWdXg dLdMg dNd g g  Z# e j d  dDd>d>d>d>dDd>dDdDdDg  Z$ dOe f dP    YZ% dQe f dR    YZ& dSe f dT    YZ' e( dUk re   n  d S(Y  i    (   t   divisiont   print_functiont   absolute_importN(   t   assert_array_equalt   assert_array_almost_equalt   TestCaset   run_module_suitet   assert_raisest   assert_allcloset   assert_equalt   assert_(   t   skipif(   t   kmeanst   kmeans2t   py_vqt   py_vq2t   vqt   whitent   ClusterErrort
   _krandinit(   t   _vqggQ?gGzg
ףp=
?gRQ gQ@gQgffffff?g333333g)\(@gzGg(\?gGzgQ
@gRQgffffff@gQg
ףp=
gףp=
gQ@g      gq=
ףp@ggHzG@g
ףp=
g333333@gQgQ?g\(\gQ@gGzgzG@g=
ףp=g{Gz?g      g@gQg      ?g\(\g\(\	@gQgQ?g=
ףp=gHzGѿg(\ ggq=
ףp?g(\gp=
ף@gQgQ?g\(\gףp=
@gQg)\(@gp=
ף gQ@g=
ףp=g(\@gQ gp=
ף?gq=
ףpgQ?g      g)\(?g)\( @g=
ףp=g=
ףp= g\(\@gGzg333333?gףp=
g(\ҿgGz	@gffffffgGz?gQgGz?g(\g(\gGz@gffffffg(\?gQgQgzGg\(\@g\(\g(\@gg      @g(\?g)\(gQ@gp=
ףg=
ףp=?ggp=
ף @g(\g(\?gGzgQ@gQg\(\@gp=
ף
gQ@g{Gz ggp=
ףg
@gQgffffff@gzGg?g
ףp=
g?g=
ףp=gQ?gRQ?gQg)\(?gQg)\(@gRQgQ@gQ@gp=
ףgRQؿgQ@g
ףp=
g\(\?g=
ףp=?gq=
ףpg      ?g333333g?gQ@gHzG@g333333gףp=
@gGzg)\(@g333333?g\(\?gRQg(\ @gףp=
	g
ףp=
?gQg?gQg\(\@gq=
ףpgq=
ףp@g\(\g(\gg?g)\(gQ	@gGzg?g\(\gQ@gffffffg      @g\(\?g=
ףp=
g
ףp=
@gףp=
gHzGgQ?gQg
ףp=
?g(\?gףp=
g(\?g{Gzg@gRQgQ@gQg
ףp=
gGz@gg(\gHzG@gGz gGzgp=
ףg
ףp=
gp=
ףg      gQ@gq=
ףp?gGz@g{Gz?gQۿgp=
ף?g\(\gHzG@g      g(\gq=
ףpg333333?gzG g{GzgQ?g gQg{Gzg=
ףp=@g)\(gp=
ף
@gQgq=
ףpg
ףp=
gHzG?g(\g
ףp=
?gQ	g333333?g)\(gzG@gQg(\	@gQgQ	@g{Gz?gffffff@gGz@g(\g333333gHzG?gffffff?gffffffgRQ?gQgq=
ףp?g      g(\@g{Gz@ggGz?gHzGgQg333333gq=
ףpgffffff?g
ףp=
gףp=
@g333333g\(\@gGzgףp=
?g\(\g)\(g
ףp=
@ggffffffg=
ףp=@gg?g      @g      gGz@gp=
ףgGzgHzGgGz?gףp=
g(\@gGz
gQgGz@gGzgRQ@g
ףp=
?g(\g{Gz?g      ?gQgHzGgQ@gGz?g)\(̿g333333?gzGgQg{Gz@gRQg333333@g{Gz
@gzGg@g
ףp=
g)\( gGz?gQ?g{Gz@g{GzĿg=
ףp=gQgffffff?g?gGzg(\?g\(\?g(\gzG @i   i   g      @i   i   i	   i   i   i   i   g@g      @g333333@g      &@g       @g      @g      @g      @t
   TestWhitenc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s   t  j d d g d d g d d g d d g d	 d
 g g  } xl t  j t  j f D]X } | d d g d d g d d g d d g d d g g  } t t |  | d d qO Wd  S(   Ng&cJ^|Y@g`q@gս	@g}&?J?gUH~
@g?gK=E@gFMp?g|H@gH|?gcw&?gbA|?gD=?gk2?g'B?g);"~?g|d=?gz?g|?gRy?t   rtolgh㈵>(   t   npt   arrayt   matrixR   R   (   t   selft   desiredt   tpt   obs(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_whitenK   s    						c      
   C` s   t  j d d d g d d d g d d d g g  } x t  j t  j f D] } | d d d g d d d g d d d g g  } t j d	 t  Z } t j d
  t t |  | d d t	 t
 |  d  t t | d j t   Wd  QXqF Wd  S(   Ng        g      ?gJJ@g I 1?gKX@g/?g@?g?t   recordt   alwaysR   gh㈵>i   i(   R   R   R   t   warningst   catch_warningst   Truet   simplefilterR   R   R	   t   lenR
   t
   issubclasst   categoryt   RuntimeWarning(   R   R   R   R   t   w(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_whiten_zero_stdY   s    c      	   C` s   x t  j t  j f D]s } xj t  j t  j t  j f D]O } | d | g d d g d d g d d g d d	 g g  } t t t |  q3 Wq Wd  S(
   Ngcw&?gD=?gk2?g'B?g);"~?g|d=?gz?g|?gRy?(   R   R   R   t   nant   infR   t
   ValueErrorR   (   R   R   t	   bad_valueR   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_whiten_not_finiteg   s     			(   t   __name__t
   __module__R   R*   R/   (    (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyR   J   s   		t   TestVqc           B` sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C` sz   t  j t d g t d g t d g g  } xF t  j t  j f D]2 } t | t  | |   d } t | t  q@ Wd  S(   Ni    i   i   (   R   t   concatenatet   XR   R   R   R   t   LABEL1(   R   t   initcR   t   label1(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt
   test_py_vqs   s    -c         C` sz   t  j t d g t d g t d g g  } xF t  j t  j f D]2 } t | t  | |   d } t | t  q@ Wd  S(   Ni    i   i   (   R   R3   R4   R   R   R   R   R5   (   R   R6   R   R7   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_py_vq2y   s    -c         C` s   t  j t d g t d g t d g g  } xl t  j t  j f D]X } t j | t  | |   \ } } t | t  t | t  | |   \ } } q@ Wd  S(   Ni    i   i   (	   R   R3   R4   R   R   R   R   R   R5   (   R   R6   R   R7   t   distt   tlabel1t   tdist(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_vq   s
    -$c         C` s   t  d  d   d f } | d  } t j | |  \ } } t | d  d   t j f | d  d   t j f  \ } } t | |  t | |  d  S(   Ni    i   (   R4   R   R   R   R   t   newaxisR   (   R   t   dataR6   t   at   bt   tat   tb(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt
   test_vq_1d   s    
;c         C` sJ   t  j d d g d t  j } | j t  j  } t t t j | |  d  S(   Ng      ?g       @t   dtype(	   R   R   t   float64t   astypet   float32R   t	   TypeErrorR   R   (   R   R@   RA   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test__vq_sametype   s    c         C` s5   t  j d d g d t } t t t j | |  d  S(   Ni   i   RE   (   R   R   t   intR   RI   R   R   (   R   R@   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test__vq_invalid_type   s    c         C` s   t  j j d d  } t  j j d d  } t j | |  \ } } t | |  \ } } t | | d  t | |  | j t  j	  } | j t  j	  } t j | |  \ } } t | |  \ } } t | | d  t | |  d  S(   Ni   i   gh㈵>(
   R   t   randomt   randR   R   R   R   R   RG   RH   (   R   R4   t	   code_bookt   codes0t   dis0t   codes1t   dis1(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_vq_large_nfeat   s    c         C` s   t  j j d d  d } t  j j d d  d } t j | |  \ } } t | |  \ } } t | | d  t | |  d  S(   Ni
   i   i@B i   gh㈵>(   R   RM   RN   R   R   R   R   R   (   R   R4   RO   RP   RQ   RR   RS   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_vq_large_features   s    (
   R0   R1   R8   R9   R=   RD   RJ   RL   RT   RU   (    (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyR2   r   s   								t	   TestKMeanc           B` s   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 e
 e j d k d	  d
    Z d   Z d   Z d   Z d   Z RS(   c         C` s   d } d } t  j j |  } t  j j |  } d t  j j | |  d | } d t  j j | |  d | } t  j | j d | j d | f t  j  } | | | j d *| | | j d )t | d  d  S(   Ni,  id   i'  i N  i    i   (   R   RM   t   randnt   emptyt   shapet   doubleR   (   R   t   dt   nt   m1t   m2t   xt   yR?   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_large_features   s    !!-c         C` s   t  j j d  t  j t d g t d g t d g g  } xL t  j t  j f D]8 } t | t  | |  d d d } t | t	  qP Wd  S(   Ni1  i    i   i   t   iter(
   R   RM   t   seedR3   R4   R   R   R   R   t   CODET2(   R   R6   R   t   code1(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans_simple   s
    -%c      	   C` s   t  } t j d d g d d g d d g g  } t | |  t j   ( t j d t  t | | d d	 Wd  QXt	 t
 t | | d d
 d  S(   Ng5 g!{gL^ @g͛`d?g8}g?kt   ignoret   missingt   warnt   raise(   t   TESTDATA_2DR   R   R   R!   R"   R$   t   UserWarningR   R   R   (   R   R?   t   initk(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans_lost_cluster   s    	c         C` s   t  j j d  t  j t d g t d g t d g g  } x~ t  j t  j f D]j } t | t  | |  d d d } t | t  | |  d d d } t | t	  t | t
  qP Wd  S(   NiNa i    i   i   Rb   (   R   RM   Rc   R3   R4   R   R   R   R   t   CODET1Rd   (   R   R6   R   Re   t   code2(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans2_simple   s    -%%c         C` sd   t  } | d  d   d f } | d  } | j   } t | | d d d t | | d d d d  S(   Ni    i   Rb   i   i   (   Rk   t   copyR   (   R   R?   t   data1R6   t   code(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans2_rank1   s    
c         C` s3   t  } | d  d   d f } t | d d d d  S(   Ni    i   Rb   i   (   Rk   R   (   R   R?   Rs   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans2_rank1_2   s    c         C` s*   t  } | j d  d  } t | d  d  S(   Ni   i
   i   (   i   i   (   Rk   t   reshapeR   (   R   R?   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans2_high_dim   s    c      	   C` s   t  } t | d d d t | d  d   d  d  f d d d t j   T t j d d d t | d d d t | d  d   d  d  f d d d Wd  QXd  S(	   Ni   t   minitt   pointsi   Rg   t   messages$   One of the clusters is empty. Re-runRM   (   Rk   R   R!   R"   t   filterwarnings(   R   R?   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans2_init  s    )t   win32s   Fails with MemoryError in Wine.c         C` s   t  } | j d  | j d  d  g } t d  } xj | D]b } t j j d  t | |  } t j | d d } t j | d d } t | | d	 d
 q; Wd  S(   Ni   i   i   i
   g    .Ai  t   rowvari    t   atolg{Gz?(   i   i   (   i   i   (	   Rk   Rw   RK   R   RM   Rc   R   t   covR   (   R   R?   t   datast   kt   initt   orig_covt   init_cov(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_krandinit  s    "c         C` s   t  t t g  d  d  S(   Ni   (   R   R-   R   (   R   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans2_empty  s    c         C` sF   t  t t t d  t  t t t d  t  t t t t j g    d  S(   Ni    (   R   R-   R   R4   R   R   R   (   R   (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans_0k  s    c         C` sk   t  j d d d d d g d t } t | d d d } t | d	 t  j d
 g   t | d d  d  S(   Ni   i   i   i   i
   RE   t   threshg 7yACi    g      @g333333@(   R   R   t   floatR   R   (   R   R_   t   res(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans_large_thres%  s    $c         C` s   t  j j d  t  j d d d d j d d  } t | d d \ } } t  j d	 d
 g d d g d d g g  } t | |  t | d  d  S(   Ni[  i   i   t   numi   i
   t
   k_or_guessi   g*?gBP^?gȱk?gYDQ^C?gOw]Cy?g8P?gp|?(   R   RM   Rc   t   linspaceRw   R   R   R   (   R   t   featurest   codebookt
   distortiont   expected(    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   test_kmeans_no_duplicates,  s    $	(   R0   R1   Ra   Rf   Rn   Rq   Ru   Rv   Rx   R}   R   t   syst   platformR   R   R   R   R   (    (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyRV      s   				
					!			t   __main__(   i   i   gUUUUUU@gUUUUUU@()   t
   __future__R    R   R   R!   R   t   numpyR   t   numpy.testingR   R   R   R   R   R   R	   R
   t   numpy.testing.decoratorsR   t   scipy.cluster.vqR   R   R   R   R   R   R   R   t   scipy.clusterR   R   Rw   Rk   R4   Ro   Rd   R5   R   R2   RV   R0   (    (    (    s:   /tmp/pip-build-7oUkmx/scipy/scipy/cluster/tests/test_vq.pyt   <module>   sx   ::$!!!!!!!!!!!!!!!$!!!!!!!!$!!$!$!!!!!$-		0(J}