
     hz4                        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
 d dlZd dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ  ej        g d                              d          Z ej        d	d
gdd
gddgddgddgddgddgddgddgddgddgg          Z ej        d	d	gddgddgg          Z ej        ddgddgddgg          Z ej        g d          Z  G d d          Z! G d d           Z" G d! d"          Z#dS )#    N)assert_array_equalassert_array_almost_equalassert_allcloseassert_equalassert_suppress_warnings)raises)kmeanskmeans2py_vqvqwhitenClusterError
_krandinit)_vq)matrix(  ggQ?Gz
ףp=
?gRQ gQ@gQgffffff?333333g)\(@zG(\?gGzgQ
@RQgffffff@gQg
ףp=
ףp=
gQ@g      q=
ףp@皙gHzG@g
ףp=
g333333@gQgQ?\(\gQ@gGzzG@g=
ףp={Gz?g      皙@gQg      ?\(\g\(\	@QgQ?=
ףp=gHzGѿ(\ gr!   gq=
ףp?g(\gp=
ף@QgQ?g\(\ףp=
@gQg)\(@gp=
ף Q@g=
ףp=g(\@gQ gp=
ף?gq=
ףpgQ?      )\(?r'   g)\( @g=
ףp=r   =
ףp= g\(\@gGzg333333?ףp=
g(\ҿr    gGz	@gffffffgGz?gQgGz?(\r%   g(\gGz@gffffff(\?gQQgzG\(\@\(\g(\@皙g      @r   (\?g)\(gQ@gp=
ףg=
ףp=?gp=
ף @g(\g(\?GzgQ@gQg\(\@gp=
ף
Q@{Gz gp=
ףg
@Qgffffff@zGg?
ףp=
?g=
ףp=Q?r5   gRQ?Qg)\(?gQg)\(@gRQgQ@r   gQ@p=
ףgRQؿr0   gQ@
ףp=
g\(\?r7   g=
ףp=?q=
ףp      ?333333?r   Q@r   gHzG@g333333gףp=
@gGzg)\(@r/   g333333?r5   g\(\?gRQg(\ @r)   rB   gףp=
	rC   r2   g
ףp=
?gQg?Qg\(\@q=
ףpgq=
ףp@r   g\(\g(\r6   g?g)\(gQ	@gGzg?g\(\gQ@ffffff      @r'   \(\?g=
ףp=
g
ףp=
@ףp=
r(   HzGgQ?Qg
ףp=
?r*   g(\?r   gףp=
rF   (\?g{Gzg@gRQgQ@gQr;   g
ףp=
Gz@gr   g(\gHzG@gGz gGzp=
ףrN   g
ףp=
gp=
ףg      gQ@rL   gq=
ףp?rG   gGz@rK   {Gz?gQۿgp=
ף?g\(\gHzG@g      g(\r9   r   gq=
ףpg333333?gzG r.   {GzQ? gQ{Gz=
ףp=@g)\(gp=
ף
@gQr   gq=
ףpg
ףp=
r"   gHzG?(\g
ףp=
?gQ	g333333?r?   r   g)\(gzG@gQg(\	@Qr@   r8   gQ	@rV   g{Gz?rE   r1   r/   gffffff@r   gGz@r)   rH   g(\g333333r<   gHzG?rA   gffffff?gffffffgRQ?gQgq=
ףp?g      g(\@r3   g{Gz@ggGz?gHzGgQr$   r,   g333333r4   gq=
ףpgffffff?g
ףp=
rH   r#   gףp=
@g333333g\(\@gGzgףp=
?g\(\rR   g)\(g
ףp=
@grU   gffffff=
ףp=@gg?r+   g      @g      gGz@p=
ףr4   gGzr   gHzGgGz?gףp=
r=   rT   g(\@gGz
rM   gQgGz@gGzgRQ@r   g
ףp=
?(\g{Gz?rS         ?QrX   gHzGgQ@rL   gGz?r   g)\(̿r\   g333333?gzGr.   gQg{Gz@RQg333333@rO   {Gz
@gzGg@g
ףp=
r&   g)\( gGz?rY   gQ?r-   g{Gz@rJ   r]   rW   rR   r3   g{GzĿg=
ףp=gQrD   gffffff?rQ   r^   rL   g?gGzrI   r>   g(\?r   g\(\?rZ   r   r   rN   g(\gzG @      g      @      ra   	               g@      @g333333@r:   gUUUUUU@gUUUUUU@g      @g      @g      @r@   )r   rf   ra   ra   ra   ra   rf   ra   rf   rf   rf   c                        e Zd Zd Zd Zd ZdS )
TestWhitenc           	          t          j        ddgddgddgddgd	d
gg          }t           j        t          fD ];} |ddgddgddgddgddgg          }t          t	          |          |d           <d S )Ng&cJ^|Y@g`q@gս	@g}&?J?gUH~
@g?gK=E@gFMp?g|H@gH|?cw&?gbA|?D=?k2?'B?);"~?|d=?z?|?Ry?h㈵>rtol)nparrayr   r   r   )selfdesiredtpobss       W/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/cluster/tests/test_vq.pytest_whitenzTestWhiten.test_whitenK   s    (Z4'4'4'4'4	6 7 7
 (F" 	= 	=B"z:.!:.!:.!:.!:.	0 1 1C
 F3KKt<<<<<	= 	=    c                    t          j        g dg dg dg          }t           j        t          fD ]} |g dg dg dg          }t          j        d          5 }t          j        d	           t          t          |          |d
           t          t          |          d           t          t          |d         j        t                               d d d            n# 1 swxY w Y   d S )N)        r[   gJJ@)r   r[   g I 1?)r   r[   gKX@)r   r[   g/?)r   r[   g@?)r   r[   g?T)recordalwaysrv   rw   rf   )ry   rz   r   warningscatch_warningssimplefilterr   r   r   lenr   
issubclasscategoryRuntimeWarning)r{   r|   r}   r~   ws        r   test_whiten_zero_stdzTestWhiten.test_whiten_zero_stdY   sc   (1111111113 4 4 (F" 	D 	DB"*********, - -C (555 D%h///sW4@@@@SVVQ'''
1R5>>BBCCC	D D D D D D D D D D D D D D D		D 	Ds   A>C&&C*	-C*	c           
          t           j        t          fD ]^}t           j        t           j        t           j         fD ]7} |d|gddgddgddgdd	gg          }t          t          t          |           8_d S )
Nrm   rn   ro   rp   rq   rr   rs   rt   ru   )ry   rz   r   naninfassert_raises
ValueErrorr   )r{   r}   	bad_valuer~   s       r   test_whiten_not_finitez!TestWhiten.test_whiten_not_finiteg   s    (F" 	7 	7BVRVbfW4 7 7	b:y1%z2%z2%z2%z2	4 5 5
 j&#66667	7 	7r   N)__name__
__module____qualname__r   r   r    r   r   rk   rk   J   sD        = = =D D D7 7 7 7 7r   rk   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestVqc                 ,   t          j        t          d         gt          d         gt          d         gg          }t           j        t          fD ]D}t           |t                     ||                    d         }t          |t                     Ed S Nr   rf   ra   )ry   concatenateXrz   r   r   r   LABEL1)r{   initcr}   label1s       r   
test_py_vqzTestVq.test_py_vqs   s    !A$!A$!A$ 8::(F" 	/ 	/B22a55""U)),,Q/Fvv....	/ 	/r   c                    t          j        t          d         gt          d         gt          d         gg          }t           j        t          fD ]p}t          j         |t                     ||                    \  }}t          |t                     t           |t                     ||                    \  }}qd S r   )	ry   r   r   rz   r   r   r   r   r   )r{   r   r}   r   disttlabel1tdists          r   test_vqzTestVq.test_vqy   s    !A$!A$!A$ 8::(F" 	2 	2B6""Q%%E33LFDvv...1rr%yy11NGUU	2 	2r   c                 "   t           d d df         }|d d         }t          j        ||          \  }}t          |d d t          j        f         |d d t          j        f                   \  }}t          ||           t          ||           d S )Nr   rb   )r   r   r   r   ry   newaxisr   )r{   datar   abtatbs          r   
test_vq_1dzTestVq.test_vq_1d   s    AwRaRvdE""1tAAArzM*E!!!RZ-,@AAB1b!!!1b!!!!!r   c                     t          j        ddgt           j                  }|                    t           j                  }t          t          t          j        ||           d S )Nr[   g       @dtype)	ry   rz   float64astypefloat32r   	TypeErrorr   r   )r{   r   r   s      r   test__vq_sametypezTestVq.test__vq_sametype   sK    Hc3Zrz222HHRZ  iA.....r   c                     t          j        ddgt                    }t          t          t
          j        ||           d S )Nrf   ra   r   )ry   rz   intr   r   r   r   )r{   r   s     r   test__vq_invalid_typezTestVq.test__vq_invalid_type   s6    HaV3'''iA.....r   c                 2   t           j                            dd          }t           j                            dd          }t          j        ||          \  }}t          ||          \  }}t          ||d           t          ||           |                    t           j	                  }|                    t           j	                  }t          j        ||          \  }}t          ||          \  }}t          ||d           t          ||           d S )N   rb   rv   )
ry   randomrandr   r   r   r   r   r   r   r{   r   	code_bookcodes0dis0codes1dis1s          r   test_vq_large_nfeatzTestVq.test_vq_large_nfeat   s    INN2r""INN1b))	va++Q	**dD)))66***HHRZ  $$RZ00	va++Q	**dD)))66*****r   c                 *   t           j                            dd          dz  }t           j                            dd          dz  }t          j        ||          \  }}t          ||          \  }}t          ||d           t          ||           d S )N
   re   i@B ra   rv   )ry   r   r   r   r   r   r   r   r   s          r   test_vq_large_featureszTestVq.test_vq_large_features   s    INN2q!!G+INN1a((72	va++Q	**dD)))66*****r   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s}        / / /2 2 2" " "/ / /
/ / /+ + +"+ + + + +r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                            ej        d	k    d
          d             Zd Zd Zd Zd Zd Zd ZdS )	TestKMeanc                 
   d}d}t           j                            |          }t           j                            |          }dt           j                            ||          z  d|z  z
  }dt           j                            ||          z  d|z  z   }t          j        |j        d         |j        d         z   |ft           j                  }||d |j        d         <   |||j        d         d <   t          |d           d S )Ni,  d   i'  i N  r   ra   )ry   r   randnemptyshapedoubler
   )r{   dnm1m2xyr   s           r   test_large_featureszTestKMean.test_large_features   s     Y__QY__QBIOOAq)))EBJ6BIOOAq)))EBJ6xagaj0!4bi@@[agaj[QWQZ[[tQr   c                 n   t           j                            d           t          j        t          d         gt          d         gt          d         gg          }t           j        t          fD ]F}t           |t                     ||          d          d         }t          |t                     Gd S )Ni1  r   rf   ra   iter)
ry   r   seedr   r   rz   r   r
   r   CODET2)r{   r   r}   code1s       r   test_kmeans_simplezTestKMean.test_kmeans_simple   s    
	u!A$!A$!A$ 8::(F" 	5 	5B22a55""U))!444Q7E%eV4444	5 	5r   c                 P   t           }t          j        ddgddgddgg          }t          ||           t	                      5 }|                    t          d           t          ||d	           d d d            n# 1 swxY w Y   t          t          t          ||d
	           d S )Ng5 g!{gL^ @g͛`d?g8}g?kzKOne of the clusters is empty. Re-run kmeans with a different initializationwarn)missingraise)
TESTDATA_2Dry   rz   r
   r   filterUserWarningr   r   r   )r{   r   initksups       r   test_kmeans_lost_clusterz"TestKMean.test_kmeans_lost_cluster   s    :{3$j1%{35 6 6 	tU   	1CJJ{23 3 3 D%0000		1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	lGT5'JJJJJJs   .A==BBc                    t           j                            d           t          j        t          d         gt          d         gt          d         gg          }t           j        t          fD ]}t           |t                     ||          d          d         }t           |t                     ||          d          d         }t          |t                     t          |t                     d S )NiNa r   rf   ra   r   )ry   r   r   r   r   rz   r   r   r   CODET1r   )r{   r   r}   r   code2s        r   test_kmeans2_simplezTestKMean.test_kmeans2_simple   s    
	x   !A$!A$!A$ 8::(F" 	5 	5BBBqEE22e991555a8EBBqEE22e991555a8E%eV444%eV4444	5 	5r   c                     t           }|d d df         }|d d         }|                                }t          ||d          d          t          ||d          d          d S )Nr   rb   rf   r   ra   )r   copyr   )r{   r   data1r   codes        r   test_kmeans2_rank1zTestKMean.test_kmeans2_rank1   sl    QQQT
bqb	zz||t!$$$Q''t!$$$Q''''r   c                 P    t           }|d d df         }t          |dd           d S )Nr   ra   rf   r   )r   r   )r{   r   r   s      r   test_kmeans2_rank1_2zTestKMean.test_kmeans2_rank1_2   s3    QQQT
qq!!!!!!r   c                 n    t           }|                    d          d d         }t          |d           d S )Nr   r   r   ra   )r   reshaper   )r{   r   s     r   test_kmeans2_high_dimzTestKMean.test_kmeans2_high_dim   s9     ||H%%crc*ar   c                    t           j                            d           t          }t	          |dd           t	          |d d d df         dd           t	          |dd           t	          |d d d df         dd           t                      5 }|                    d           t	          |dd	           t	          |d d d df         dd	           d d d            d S # 1 swxY w Y   d S )
Ni90  rb   pointsminitrf   ++z%One of the clusters is empty. Re-run.)messager   )ry   r   r   r   r   r   r   )r{   r   r   s      r   test_kmeans2_initzTestKMean.test_kmeans2_init   sM   
	uax((((QQQUQh////at$$$$QQQUQd++++    	4CJJFJGGGD!8,,,,DBQBK(3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AC))C-0C-win32zFails with MemoryError in Wine.)reasonc                    t           }|                    d          |                    d          d d         g}t          d          }|D ]}t          t          j        d          r t          j                            d          }nt          j                            d          }t          |||          }t	          j	        |d          }t	          j	        |d          }t          ||d	
           d S )Nr_   r   r   g    .Adefault_rng  r   )rowvarrP   )atol)r   r   r   hasattrry   r   r  RandomStater   covr   )r{   r   dataskrnginitorig_covinit_covs           r   test_krandinitzTestKMean.test_krandinit  s     h''h)?)?)DEHH 
	; 
	;Dry-00 2i++D11i++D11dAs++Dvd1---Hvd1---HHhT:::::
	; 
	;r   c                 >    t          t          t          g d           d S )Nra   )r   r   r   r{   s    r   test_kmeans2_emptyzTestKMean.test_kmeans2_empty  s    j'2q11111r   c                     t          t          t          t          d           t          t          t          t          d           t          t          t          t          t          j        g                      d S )Nr   )r   r   r
   r   r   ry   rz   r  s    r   test_kmeans_0kzTestKMean.test_kmeans_0k  sL    j&!Q///j'1a000j'1bhrll;;;;;r   c                     t          j        g dt                    }t          |dd          }t	          |d         t          j        dg                     t	          |d         d           d S )	N)rf   ra   rb   rc   r   r   rf   g 7yAC)threshr   ri   g333333@)ry   rz   floatr
   r   )r{   r   ress      r   test_kmeans_large_thresz!TestKMean.test_kmeans_large_thres!  sj    H%%%U333Q$'''A"///A 233333r   c                     t          j        ddgddgg          }t           j                            d           t	          t
          dd          \  }}t          ||           d S )	NgC:g>g#~j?g'1:	g-'@*   ra   r   r   )ry   rz   r   r   r   r   r   )r{   prev_resr  _s       r   test_kmeans2_kpp_low_dimz"TestKMean.test_kmeans2_kpp_low_dim(  si    8k51'02 3 3
	rat444QX&&&&&r   c           	      &   d}d}t          j        dt          j        |          z  dt          j        |          z  g          }t           j                            d           t          j        t           j                            |d         t          j        |          |          t           j                            |d         t          j        |          |          g          }t          |d	d
          \  }}t          ||d           d S )Nr   r   re   r  r   )sizerf   ra   r   r   )decimal)	ry   vstackonesr   r   multivariate_normaleyer   r   )r{   n_dimr#  centersr   r  r  s          r   test_kmeans2_kpp_high_dimz#TestKMean.test_kmeans2_kpp_high_dim0  s    )Q/"'%..02 3 3
	ryI))'!*bfUmm$)OOI))'!*bfUmm$)OO
   q---Q!#w::::::r   c                    dt           j                            d          g}t          t           j        d          r2|                    t           j                            d                     |D ]}t          t          d|          \  }}t          t          d|          \  }}t          ||           dD ]H}t          t          d||          \  }}t          t          d||          \  }}t          ||           Id S )Nr  r  ra   )r   )r   r   r   )r   r   )
ry   r   r	  r  appendr  r
   r   r   r   )r{   	seed_listr   res1r  res2r   s          r   #test_kmeans_and_kmeans2_random_seedz-TestKMean.test_kmeans_and_kmeans2_random_seed>  s   2900667	 29m,, 	:RY22488999 
	, 
	,D[!$777GD![!$777GD!D$''' 4 , ,!+qDIIIa!+qDIIIad++++,
	, 
	,r   N)r   r   r   r   r   r   r   r   r   r   r   pytestmarkskipifsysplatformr  r  r  r  r   r+  r1  r   r   r   r   r      s.         "5 5 5K K K 5 5 5( ( (" " "
  4 4 4  [/@  B B; ;B B; 2 2 2< < <4 4 4' ' '; ; ;, , , , ,r   r   )$r   r5  numpyry   numpy.testingr   r   r   r   r   r   r2  r	   r   scipy.cluster.vqr
   r   r   r   r   r   r   scipy.clusterr   scipy.sparse._sputilsr   rz   r   r   r   r   r   r   rk   r   r   r   r   r   <module>r<     s    



    . . . . . . . . . . . . . . . .  * * * * * *8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8       ( ( ( ( ( ( bh %
 %
 %
 % %J 78K R BHsAhAA!fq!fq!fq!f!fq!fq!fq!f. / / 
FF#F#F#% 
& 
& 
FE?F#F#% 
& 
& 
333	4	4%7 %7 %7 %7 %7 %7 %7 %7P8+ 8+ 8+ 8+ 8+ 8+ 8+ 8+vc, c, c, c, c, c, c, c, c, c,r   