
    -i{w              
       j   S SK r S SKrS SKJr  S SKrS SKrS SKrS SKJ	r	  S SK
JrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJrJr  S S	KJrJrJ r   S S
K!J"r"  \RF                  RI                  S 5      r%Su  r&r'\%RQ                  \&\'5      r)S r*S r+S r,S r-S r.\R^                  Ra                  S/ SQ5      \R^                  Ra                  SSS/5      \R^                  Ra                  SSS/5      S 5       5       5       r1\R^                  Ra                  SSS/5      S 5       r2S r3S r4S r5S r6S r7S r8S r9S  r:\R^                  Ra                  S/ SQ5      \R^                  Ra                  SSS/5      \R^                  Ra                  SSS/5      S! 5       5       5       r;\R^                  Ra                  SSS/5      S" 5       r<\R^                  Ra                  SSS/5      \R^                  Ra                  SSS/5      S# 5       5       r=S$ r>S% r?S& r@S' rAS( rBS) rCS* rD\R^                  Ra                  S+/ SQ5      \R^                  Ra                  S,SS/5      S- 5       5       rE\R^                  Ra                  S+S.S//5      S0 5       rFS1 rGS2 rHS3 rIS4 rJS5 rKS6 rLS7 rMS8 rNS9 rO\R^                  Ra                  S:S;5      \R^                  Ra                  S<\R                  \R                  45      S= 5       5       rR\R^                  Ra                  S:S;5      S> 5       rS\R^                  Ra                  SS;5      \R^                  Ra                  S<\R                  \R                  45      S? 5       5       rT\R^                  Ra                  S@SA5      \R^                  Ra                  SS;5      \R^                  Ra                  SB\R                  \R                  4\R                  \R                  4\R                  \R                  4\R                  \R                  445      SC 5       5       5       rW\R^                  Ra                  S@SA5      \R^                  Ra                  SS;5      \R^                  Ra                  SB\R                  \R                  4\R                  \R                  4\R                  \R                  4\R                  \R                  445      SD 5       5       5       rX\R^                  Ra                  SESA5      \R^                  Ra                  SB\R                  \R                  4\R                  \R                  4\R                  \R                  4\R                  \R                  445      SF 5       5       rY\R^                  Ra                  SESA5      SG 5       rZ\R^                  Ra                  SESA5      \R^                  Ra                  SB\R                  \R                  4\R                  \R                  4\R                  \R                  4\R                  \R                  445      SH 5       5       r[\R^                  Ra                  SESA5      SI 5       r\\R^                  Ra                  SJ\" \)R                  5      \" 5       \" SKSLSM9/SN SO9SP 5       r^SQ r_g)R    N)partial)clone)DictionaryLearningMiniBatchDictionaryLearningSparseCoderdict_learningdict_learning_onlinesparse_encode)_update_dict)ConvergenceWarning)check_array)
TempMemmapassert_allcloseassert_array_almost_equalassert_array_equalignore_warnings)#check_transformer_data_not_an_arraycheck_transformer_generalcheck_transformers_unfitted)Parallel)
      c            	      h   [         R                  R                  S5      n / SQn[        R                  " SS/SS/5       Hp  u  p#U R                  U[        5      nU R                  U[        5      n[        R                  " USS/5       H"  u  pg[        XEXgS9nUR                  X24:X  a  M"   e   Mr     g )Nr   )omp
lasso_larslasso_cdlars	threshold      	      )	algorithmn_jobs)	nprandomRandomState	itertoolsproductrandn
n_featuresr
   shape)	rng
algorithmsn_components	n_samplesX_
dictionaryr#   r$   codes	            a/var/www/html/venv/lib/python3.13/site-packages/sklearn/decomposition/tests/test_dict_learning.pytest_sparse_encode_shapes_ompr5   (   s    
))


"CGJ#,#4#4aVaV#DYYy*-YY|Z8
!*!2!2:1v!FI 9TD::)!:::: "G $E    c                  x   Sn [        U SS9R                  [        5      nUR                  R                  U [
        4:X  d   eSn [        U SS9R                  [        5      nUR                  R                  U [
        4:X  d   eUR                  [        5      R                  [        R                  S   U 4:X  d   eg )Nr    r   random_stater   )r   fitXcomponents_r,   r+   	transformr/   dicos     r4   test_dict_learning_shapesr@   3   s    Ll;??BD!!lJ%????Ll;??BD!!lJ%????>>!""qwwqz<&@@@@r6   c                      Sn [        U SS9R                  [        5      nUR                  R                  U [
        4:X  d   eg )N   r   r8   )r   r:   r;   r<   r,   r+   r>   s     r4   test_dict_learning_overcompleterC   >   s=    Ll;??BD!!lJ%????r6   c                    ^^^^	 S mU4S jm	Sn SmSnTU-  m[         R                  [        UUU	4S jS 5       5         n[         R                  " STS	-
  T5      nUTS
-  :  nSX4'   SU[         R                  " U5      '   UR                  S	S5      n[        R                  " [        5         [        X S	S9nUR                  U5        S S S 5        [        R                  " 5          [        R                  " S[        5        [        X SS9nUR                  U5        S S S 5        g ! , (       d  f       Nc= f! , (       d  f       g = f)Nc                 
   [         R                  " SU S-
  U 5      nS[         R                  " SU-  5      [         R                  S-  -  -  SX1-
  S-  US-  -  -
  -  [         R                  " X1-
  S-  * SUS-  -  -  5      -  nU$ )z1Discrete sub-sampled Ricker (Mexican hat) waveletr   r   r"      g      ?)r%   linspacesqrtpiexp)
resolutioncenterwidthxs       r4   ricker_function&test_max_iter.<locals>.ricker_functionE   s    KK:>:6"''!e)$ruud{23AJ1$uax//1ff
q()Q\:;< 	

 r6   c                 2  > [         R                  " SUS-
  U5      n[         R                  " X!45      n[        U5       H  u  pVT" XU 5      XE'   M     U[         R                  " [         R
                  " US-  SS95      SS2[         R                  4   -  nU$ )z+Dictionary of Ricker (Mexican hat) waveletsr   r   r"   axisN)r%   rG   empty	enumeraterH   sumnewaxis)rM   rK   r/   centersDirL   rO   s          r4   ricker_matrix$test_max_iter.<locals>.ricker_matrixO   s}    ++aa>HHl/0"7+IA":u=AD ,	RWWRVVAqDq)*1bjj=99r6   r   i   rF   c              3   :   >#    U  H  nT" UTTS -  S9v   M     g7f)r    )rM   rK   r/   N ).0wr/   rK   r[   s     r4   	<genexpr> test_max_iter.<locals>.<genexpr>_   s-      
 . J\Q=N .s   )r   2   d   i    r   r      g      @g      )transform_algorithmtransform_max_itererrori  )r%   r_tuplerG   logical_notreshapepytestwarnsr   r   fit_transformwarningscatch_warningssimplefilter)
rh   subsamplingD_multir;   first_quartermodelr/   rK   rO   r[   s
         @@@@r4   test_max_iterry   D   s.    %JK,L ee 
 .	
 	
G 	AzA~z2A
Q&MA'+Abnn]#$			!RA 
(	)QR
 	A	 
* 
	 	 	"g'9:QU
 	A 
#	" 
*	) 
#	"s   -D&&7D7&
D47
Ec                      Sn SnSn[         R                  " [        US9   [        [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr    r   ;Positive constraint not supported for 'lars' coding method.matchT)alphapositive_code)ro   raises
ValueErrorr   r;   )r/   r~   err_msgs      r4   *test_dict_learning_lars_positive_parameterr   }   s7    LEKG	z	1a$G 
2	1	1s	   9
Arh   )r   r   r   r   FTpositive_dictc           	         Sn[        UU SUUSS9R                  [        5      nUR                  [        5      nU(       a%  UR                  S:  R                  5       (       d   eO$UR                  S:  R                  5       (       d   eU(       a  US:  R                  5       (       d   eg US:  R                  5       (       d   eg )Nr    r   cd)rh   r9   r   r   fit_algorithm)r   r:   r;   r=   r<   allanyrh   r   r   r/   r?   r3   s         r4   test_dict_learning_positivityr      s     L/## 
c!f 	 >>!D  A%**,,,,  1$))++++	    q~~r6   c                     Sn[        USSU SS9R                  [        5      nU (       a%  UR                  S:  R	                  5       (       d   eg UR                  S:  R                  5       (       d   eg )Nr    r   r   r   )rh   r9   r   r   )r   r:   r;   r<   r   r   r   r/   r?   s      r4   'test_dict_learning_lars_dict_positivityr      ss    L"# 
c!f 	   A%**,,,,  1$))++++r6   c                      Sn [        U SSSSS9R                  [        5      nSnUR                  S5      n[        R
                  " [        US9   UR                  [        5        S S S 5        g ! , (       d  f       g = f)	Nr    r   r   Tr   )rh   r9   r   r   9Positive constraint not supported for '{}' coding method.r|   )r   r:   r;   formatro   r   r   r=   )r/   r?   r   s      r4   'test_dict_learning_lars_code_positivityr      sj    L" 
c!f 	 JGnnV$G	z	1q 
2	1	1s   A..
A<c                     Sn [        U SSSS9nUR                  [        5      R                  [        5      n[	        [
        R                  " X!R                  5      [        5        [	        UR                  U5      [        5        UR                  SS9  UR                  [        5      n[	        [
        R                  " X!R                  5      [        SS	9  [	        UR                  U5      [        SS	9  [        R                  " [        S
S9   UR                  US S 2S S24   5        S S S 5        g ! , (       d  f       g = f)NrB   r   MbP?r   )rh   transform_alphar9   r   rh   r"   decimalzExpected 12, got 11.r|   rg   )r   r:   r;   r=   r   r%   dotr<   inverse_transform
set_paramsro   r   r   r/   r?   r3   s      r4   !test_dict_learning_reconstructionr      s    L%UVD 88A;  #DbffT+;+;<a@d44T:A>OOO5>>!DbffT+;+;<aKd44T:AqI 
z)?	@tAssF|, 
A	@	@s   D00
D>c                  p   Sn [        U SSSSS9nUR                  [        5      R                  [        5      n[	        [
        R                  " X!R                  5      [        5        UR                  SS9  UR                  [        5      n[	        [
        R                  " X!R                  5      [        S	S
9  g )NrB   r   r   r   rf   rh   r   r9   r$   r   r   r"   r   )	r   r:   r;   r=   r   r%   r   r<   r   r   s      r4   *test_dict_learning_reconstruction_parallelr      s    L!D 88A;  #DbffT+;+;<a@OOO5>>!DbffT+;+;<aKr6   c            	      V   Sn [        [        5       n[        U SSSSS9n[        [        S9   UR                  U5      R                  U5      nS S S 5        [        [        R                  " WUR                  5      USS	9  S S S 5        g ! , (       d  f       NA= f! , (       d  f       g = f)
NrB   r   r   r   rf   r   )categoryr"   r   )r   r;   r   r   r   r:   r=   r   r%   r   r<   )r/   X_read_onlyr?   r3   s       r4   (test_dict_learning_lassocd_readonly_datar      s    L	A+! *!
 &8988K(22;?D :!FF4))*K	
 
 :9 
s"   B!B	2B	
B	B
B(c                     Sn [        U SSSS9nUR                  [        5      R                  [        [        R
                  S4   5      n[        [        R                  " U5      5      S:X  d   eUR                  SS9  UR                  [        [        R
                  S4   5      n[        [        R                  " U5      5      S:X  d   eg )	Nrf   r   rF   r   )rh   transform_n_nonzero_coefsr9   r   r   r   )	r   r:   r;   r=   r%   rW   lenflatnonzeror   r   s      r4    test_dict_learning_nonzero_coefsr      s    L""#	D 88A;  2::q=!12Dr~~d#$)))OOO.>>!BJJM*+Dr~~d#$)))r6   c                  B   Sn [        U SSS9nUR                  [        5      R                  [        5      nUR	                  U5      nSUl        UR                  [        5      n[        US S 2S U 24   US S 2U S 24   -
  U5        UR	                  U5      n[        X55        g )Nr    r   r   )rh   r9   T)r   r:   r;   r=   r   
split_signr   )r/   r?   r3   Xr
split_codeXr2s         r4   test_dict_learning_splitr     s    L+AD 88A;  #D				%BDO"J1m|m#$z!\]2B'CCT 
 
 
,Cb&r6   c            
         [         R                  R                  S5      n Sn[        [        USSSU SS9u  p#UR
                  [        U4:X  d   eUR
                  U[        4:X  d   e[         R                  " X#5      R
                  [        R
                  :X  d   e[        [        USSSU SS9nUR
                  U[        4:X  d   eg )	Nr   r   rf   r   r   T)r/   
batch_sizemax_itermethodr9   return_codeF)	r%   r&   r'   r	   r;   r,   r0   r+   r   )r-   r/   r3   r2   s       r4    test_dict_learning_online_shapesr   "  s    
))


"CL+	!D ::)\2222j999966$#))QWW444%	!J j9999r6   c                      Sn [         R                  " [        U S9   [        [        SSSS9  S S S 5        g ! , (       d  f       g = f)Nr{   r|   rf   r   T)r   r   r   )ro   r   r   r	   r;   )r   s    r4   1test_dict_learning_online_lars_positive_parameterr   ?  s/    KG	z	1Q1rN 
2	1	1s	   6
Ac                    Sn[        USSU SUUSS9R                  [        5      nUR                  [        5      nU(       a%  UR                  S:  R                  5       (       d   eO$UR                  S:  R                  5       (       d   eU(       a  US:  R                  5       (       d   eg US:  R                  5       (       d   eg )Nr   rf   r   r   r   )r   r   rh   r9   r   r   r   )r   r:   r;   r=   r<   r   r   r   s         r4   -test_minibatch_dictionary_learning_positivityr   E  s     L&/##	 
c!f 	 >>!D  A%**,,,,  1$))++++	    q~~r6   c           
          Sn[        USSSSU SS9R                  [        5      nU (       a%  UR                  S:  R	                  5       (       d   eg UR                  S:  R                  5       (       d   eg )Nr   rf   r   r   r   r   )r   r   rh   r9   r   r   )r   r:   r;   r<   r   r   r   s      r4   'test_minibatch_dictionary_learning_larsr   i  sy    L&"# 
c!f 	   A%**,,,,  1$))++++r6   c                 b   [         R                  R                  S5      nSn[        [        USSSUUU S9u  pEU(       a  US:  R                  5       (       d   eOUS:  R                  5       (       d   eU (       a  US:  R                  5       (       d   eg US:  R                  5       (       d   eg )Nr   r   rf   r   r   )r/   r   r   r~   r9   r   r   )r%   r&   r'   r	   r;   r   r   )r   r   r-   r/   r3   r2   s         r4   $test_dict_learning_online_positivityr   }  s     ))


"CL+	!##	D a$$&&&&Q##%%%%	    q~~r6   c            	         Sn SS K nSSKJn  UR                  n U" 5       Ul        [	        U SSSSSS9nUR                  [        5        [	        U SSSSSS	9nUR                  [        5        [	        U SSSSS
9nUR                  [        5        [        [        U SSSSS9  [        [        U SSSSS9  X1l        UR                  R                  U [        4:X  d   eg ! X1l        f = f)Nr    r   )StringIOrf   r   皙?)r   r   verbosetolr9   r"   )r   r   r   max_no_improvementr9   )r   r   r   r9   )r/   r   r~   r   r9   )sysior   stdoutr   r:   r;   r	   r<   r,   r+   )r/   r   r   
old_stdoutr?   s        r4   #test_dict_learning_online_verbosityr     s    LJ) Z
 +QA3UV
 	* 
 	*QAA
 	 	%	
 	%	
  
!!lJ%????  
s   BC C#c                      Sn [        U SSSS9nUR                  [        5        UR                  R                  U [
        4:X  d   eg )Nr    rf   r   r   r   r9   r   r:   r;   r<   r,   r+   r>   s     r4   *test_dict_learning_online_estimator_shapesr     sF    L&QQD 	HHQK!!lJ%????r6   c                      Sn [        U SSSS9R                  [        5      nUR                  R                  U [
        4:X  d   eg )NrB   rf   r    r   r   r   r>   s     r4   &test_dict_learning_online_overcompleter     sG    L&QQ	c!f 	 !!lJ%????r6   c                      Sn [         R                  R                  S5      nUR                  U [        5      n[        U SSUSS9R                  [        5      n[        UR                  U5        g )NrB   r   rf   )r   r   	dict_initr9   )
r%   r&   r'   r*   r+   r   r:   r;   r   r<   )r/   r-   Vr?   s       r4   (test_dict_learning_online_initializationr     s^    L
))


"C		,
+A&Q!!	c!f 	 t''+r6   c            	          Sn [         R                  R                  S5      nUR                  U [        5      nUR                  SS9  [        U SSUSSS9R                  [        5        g )NrB   r   F)writerf   r   )r   r   r   r9   shuffle)	r%   r&   r'   r*   r+   setflagsr   r:   r;   )r/   r-   r   s      r4   1test_dict_learning_online_readonly_initializationr     s^    L
))


"C		,
+AJJUJ 
c!fr6   c                     Sn [         R                  R                  S5      nUR                  U [        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  n[        U SSSSUS SSS	9	R                  [        5      n[        U SUSS
9n[        S5       H6  n[         H)  nUR                  U[         R                  S S 24   5        M+     M8     [         R                  " [        [        UR                  SS9S:H  5      (       a   e[        UR                  UR                  SS9  UR                   UR                   s=:X  a  S:X  d   e   eg )NrB   r   r"   r   rR   r   F        )r   r   r~   r   r   r   r   r9   )r~   r   r9   r~   r   rd   )r%   r&   r'   r*   r+   rV   rW   r   r:   r;   rangepartial_fitr   r
   r<   r   n_steps_)r/   r-   r   dict1dict2rZ   samples          r4   %test_dict_learning_online_partial_fitr     s4   L
))


"C		,
+A11	am	,,A'
 
c!f 
 (AE 2YFfRZZ]34   vvmAu'8'8BaGHHHHe//1B1BAN >>U^^2s22222r6   c                  0   Sn [         R                  R                  S5      nUR                  U [        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  nS H)  n[        [        X#S9nUR                  [        U 4:X  a  M)   e   g )NrB   r   r"   r   rR   r   r   r   r   r   r#   )r%   r&   r'   r*   r+   rV   rW   r
   r;   r,   r0   )r/   r-   r   algor3   s        r4   test_sparse_encode_shapesr     s    L
))


"C		,
+A11	am	,,AFQ2zzi6666 Gr6   r   positivec                 h   Sn[         R                  R                  S5      nUR                  U[        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  n[        [        X@US9nU(       a  US:  R                  5       (       d   eg US:  R                  5       (       d   eg )NrB   r   r"   r   rR   r#   r   )r%   r&   r'   r*   r+   rV   rW   r
   r;   r   r   )r   r   r/   r-   r   r3   s         r4   test_sparse_encode_positivityr     s     L
))


"C		,
+A11	am	,,AAAD	    q~~r6   r   r   c                 |   Sn[         R                  R                  S5      nUR                  U[        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  nSnUR                  U 5      n[        R                  " [        US9   [        [        X0SS	9  S S S 5        g ! , (       d  f       g = f)
NrB   r   r"   r   rR   r   r|   Tr   )r%   r&   r'   r*   r+   rV   rW   r   ro   r   r   r
   r;   )r   r/   r-   r   r   s        r4   )test_sparse_encode_unavailable_positivityr   ,  s    L
))


"C		,
+A11	am	,,AIGnnT"G	z	1aT: 
2	1	1s   B--
B;c                  F   Sn [         R                  R                  S5      nUR                  U [        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  n[        [        SS9nS H&  n[        [        X$S	9n[        X2US	9n[        XV5        M(     g )
Nrd   r   r"   r   rR   F)orderr   r   )r%   r&   r'   r*   r+   rV   rW   r   r;   r
   r   )r/   r-   r   Xfr   abs          r4   test_sparse_encode_inputr   8  s    L
))


"C		,
+A11	am	,,A	Qc	"BF!Q/"40!!' Gr6   c                     Sn [         R                  R                  S5      nUR                  U [        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  n[        [        USS9n[         R                  " US:H  5      (       a   e[         R                  " [         R
                  " [         R                  " X25      [        -
  S-  5      5      S:  d   eg )	NrB   r   r"   r   rR   r   r   r   )r%   r&   r'   r*   r+   rV   rW   r
   r;   r   rH   r   )r/   r-   r   r3   s       r4   test_sparse_encode_errorr   D  s    L
))


"C		,
+A11	am	,,AAU+Dvvdai    77266266$?Q.1456<<<r6   c                      [         R                  R                  S5      n U R                  SS5      nU R                  SS5      n[	        [
        5      " XSS S9nUR                  S:X  d   eg )Nr   rd   @   r"   r   )r#   n_nonzero_coefs)rd   r"   )r%   r&   r'   r*   r   r
   r,   )r-   r;   rY   r3   s       r4   )test_sparse_encode_error_default_sparsityr   N  s\    
))


"C		#rA		!RA=)!%QUVD::!!!r6   c                  x   Sn [         R                  R                  S5      nUR                  U [        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  n[        USSS9nUR                  [        5      nUR                  U5      n[         R                  " US:H  5      (       a   e[         R                  " [         R
                  " [         R                  " XB5      [        -
  S-  5      5      S	:  d   e[         R                  R                  U[         R                  " XB5      5        g )
NrB   r   r"   r   rR   r   r   r2   rh   r   r   )r%   r&   r'   r*   r+   rV   rW   r   rq   r;   r   r   rH   r   testingr   )r/   r-   r   coderr3   r   s         r4   test_sparse_coder_estimatorr   V  s    L
))


"C		,
+A11	am	,,A,E q!D		 	 	&Bvvdai    77266266$?Q.1456<<<JJr266$?3r6   c                  l   Sn [         R                  R                  S5      nUR                  U [        5      nU[         R
                  " US-  SS9S S 2[         R                  4   -  n[        USSS9n[        U5      n[        U5      [        U5      :w  d   e[         R                  R                  UR                  UR                  5        [        UR                  5      [        UR                  5      :w  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   e[         R                  R                  [         [        5      R#                  [         R$                  5      n[         R                  R                  UR'                  U5      UR'                  U5      5        g )	NrB   r   r"   r   rR   r   r   r   )r%   r&   r'   r*   r+   rV   rW   r   r   idr   r   r2   n_components_n_features_in_randr0   astypefloat32r=   )r/   r-   r   r   cloneddatas         r4   !test_sparse_coder_estimator_cloner  e  sF   L
))


"C		,
+A11	am	,,A,E 5\Ff:E"""JJv00%2B2BCf Bu'7'7$88885#6#6666  E$8$888899>>)Z077

CDJJv//5ut7LMr6   c                  >   [         R                  R                  S5      n Su  pU R                  X5      n[	        S5      SU-  -  n[         R                  R                  XB5      R                  [         R                  5      n[        USSS9nUR                  U5        g )N	  )(   r   g    >Arf   r   r"   )rh   r$   )	r%   r&   r'   r  intr  r  r   rq   )r-   r/   r+   	init_dictr0   r  scs          r4   test_sparse_coder_parallel_mmapr  w  s     ))


$C%L2I CQ^,I99>>)077

CD	YE!	DBTr6   c                     [         R                  R                  S5      n Su  pU R                  X5      n[	        U5      n[        UR                  R                  U5        [        UR                  R                  U5        [        [        SS9nU" UR                  R                  U5        [        UR                  R                  U5        g )Nr
  )r  rF   T)readonly_memmap)r%   r&   r'   r  r   r   	__class____name__r   r   r   )r-   r/   r+   r  r   check_transformer_general_memmaps         r4   $test_sparse_coder_common_transformerr    s    
))


$C$L2I	Y	B'(=(=rBbll33R8'.!4($ %R\\%:%:B? 5 5r:r6   c                      [         R                  " / SQ/ SQ/5      n [        U 5      nUR                  U R                  S   :X  d   eg )N)r   r"   rF   r   )r%   arrayr   r  r,   )dr  s     r4   test_sparse_coder_n_features_inr    s:    
)Y'(A	QB
***r6   c                     [         R                  R                  S5      n [         R                  " SS/SS//5      n[         R                  " SS/SS	//5      n[         R                  " X5      U R                  S
S
5      -   nUR                  5       n[        XCU5        [         R                  " UR                  U5      n[         R                  " UR                  U5      nUR                  5       n[        XsXU5        [        XG5        g )Nr   g      ?g      r   g?g      ?r   g333333?g?r"   )
r%   r&   r'   r  r   r*   copyr   Tr   )r-   r3   r2   r;   
newd_batchABnewd_onlines           r4   test_update_dictr!    s     ))


"C88c4[3*-.DC:Sz23J
t 399Q?2A "J% 	tvvtA
qssDA//#K!,J,r6   r#   )r   r   r   r   r   	data_typec                     Sn[         R                  R                  S5      nUR                  U[        5      n[        [        R                  U 5      UR                  U 5      US9nUR                  U :X  d   eg )N   r   r   )	r%   r&   r'   r*   r+   r
   r;   r  dtype)r"  r#   r/   r-   r2   r3   s         r4   test_sparse_encode_dtype_matchr&    sf     L
))


"C<4J	Z..y9YD ::"""r6   c                    SnSn[         R                  R                  S5      nUR                  U[        5      n[        [        R                  [         R                  5      UR                  [         R                  5      U S9n[        [        R                  [         R                  5      UR                  [         R                  5      U S9n[        XVUS9  g )N-C6?r$  r   r   rtol)r%   r&   r'   r*   r+   r
   r;   r  r  float64r   )r#   r*  r/   r-   r2   code_32code_64s          r4   (test_sparse_encode_numerical_consistencyr.    s    
 DL
))


"C<4J	j//

;yG 	j//

;yG G40r6   c                    Sn[         R                  R                  S5      nUR                  U[        5      n[        UR                  U 5      US9nUR                  [        R                  U 5      5      nUR                  U :X  d   eg )Nr$  r   r   )
r%   r&   r'   r*   r+   r   r  r=   r;   r%  )r"  rh   r/   r-   r2   r   r3   s          r4   test_sparse_coder_dtype_matchr0    ss     L
))


"C<4J)$:ME ??188I./D::"""r6   r   )r   r   zdata_type, expected_typec                    [        SUUSS9nUR                  [        R                  U 5      5        UR                  R
                  U:X  d   eUR                  [        R                  U 5      5      R
                  U:X  d   eg )Nr   r   )r/   r   rh   r9   )r   r:   r;   r  r<   r%  r=   r"  expected_typer   rh   dict_learners        r4   $test_dictionary_learning_dtype_matchr5    su    ( &#/	L QXXi()##))]:::!!!((9"56<<MMMr6   c           
      z   [        SSUUSSSS9nUR                  [        R                  U 5      5        UR                  R
                  U:X  d   eUR                  [        R                  U 5      5      R
                  U:X  d   eUR                  R
                  U:X  d   eUR                  R
                  U:X  d   eg )Nr   r   rd   r   r   )r/   r   r   rh   r   r   r9   )	r   r:   r;   r  r<   r%  r=   _A_Br2  s        r4   .test_minibatch_dictionary_learning_dtype_matchr9  
  s    ( /#/L QXXi()##))]:::!!!((9"56<<MMM??  M111??  M111r6   r   c                     [         R                  R                  S5      nSn[        [        R                  U 5      USUUS9u  pVnUR                  U:X  d   eUR                  U:X  d   eg )Nr   r   r   r/   r~   r9   r   )r%   r&   r'   r   r;   r  r%  )r"  r3  r   r-   r/   r3   r2   _s           r4   test_dict_learning_dtype_matchr=  /  sl     ))


"CL'	!Da ::&&&},,,r6   c                    SnSnSn[        [        R                  [        R                  5      UUSU S9u  pEn[        [        R                  [        R
                  5      UUSU S9u  pxn[        [        R                  " XE5      [        R                  " Xx5      US9  [        [        R                  " [        R                  " U5      5      [        R                  " [        R                  " U5      5      US9  [        [        R                  " US-  5      [        R                  " US-  5      US9  [        R                  " US:g  5      S:  d   e[        R                  " US:g  5      [        R                  " US:g  5      :X  d   eg )	Ngư>rf   r"   r   r;  r)  r   皙?)r   r;   r  r%   r+  r  r   matmulrV   absmeancount_nonzero)	r   r*  r/   r~   U_64V_64r<  U_32V_32s	            r4   (test_dict_learning_numerical_consistencyrH  H  s"    DLE!	!MD "	!MD BIId)299T+@tLBFF266$<("&&*>TJBFF47ORVVD!G_4@7743;$&&&DCK(B,<,<TS[,IIIIr6   c           	          [         R                  R                  S5      nSn[        [        R                  U 5      USSUUS9u  pVUR                  U:X  d   eUR                  U:X  d   eg )Nr   r   r   r   )r/   r~   r   r9   r   )r%   r&   r'   r	   r;   r  r%  )r"  r3  r   r-   r/   r3   r2   s          r4   %test_dict_learning_online_dtype_matchrJ  l  sm     ))


"CL+	!D ::&&&},,,r6   c                    SnSnSn[        [        R                  [        R                  5      USUSSU SS S9	u  pE[        [        R                  [        R
                  5      USUSSU SS S9	u  pg[        [        R                  " XE5      [        R                  " Xg5      US	9  [        [        R                  " [        R                  " U5      5      [        R                  " [        R                  " U5      5      US	9  [        [        R                  " US
-  5      [        R                  " US
-  5      US	9  [        R                  " US:g  5      S:  d   e[        R                  " US:g  5      [        R                  " US:g  5      :X  d   eg )Nr(  rf   r   re   r   r   r   )r/   r   r~   r   r9   r   r   r   r)  r"   r?  )r	   r;   r  r%   r+  r  r   r@  rV   rA  rB  rC  )r   r*  r/   r~   rD  rE  rF  rG  s           r4   /test_dict_learning_online_numerical_consistencyrL    s6    DLE%	!
JD &	!
JD$ BIId)299T+@tLBFF266$<("&&*>TJBFF47ORVVD!G_4@7743;$&&&DCK(B,<,<TS[,IIIIr6   	estimatorrf   r   )r   r   c                 .    U R                   R                  $ )N)r  r  )rN   s    r4   <lambda>rO    s    !++&&r6   )idsc                    U R                  [        5        [        R                  S   nU R                  5       nU R                  R
                  R                  5       n[        U[        U5       Vs/ s H  oC U 3PM
     sn5        gs  snf )z1Check feature names for dict learning estimators.r   N)	r:   r;   r,   get_feature_names_outr  r  lowerr   r   )rM  r/   feature_names_outestimator_namerZ   s        r4   test_get_feature_names_outrV    su     MM!771:L!779((11779N).|)<=)<AA3	)<==s   0B
c           	         U R                  [        R                  R                  S[	        [
        SS95        [        R                  R                  S5      nUR                  SS5      n[        SSSSS	S
S9nUR                  U5        g )Nr   rd   )
max_nbytesr   r   r    r"   r   rc   T)r/   r9   r$   r   r   r   )setattrsklearndecomposition_dict_learningr   r   r%   r&   r'   r*   r   r:   )monkeypatchr-   X_trainr4  s       r4   %test_cd_work_on_joblib_memmapped_datar_    s~    ,,S) ))


"CiiBG%L Wr6   )`r(   rr   	functoolsr   numpyr%   ro   rZ  sklearn.baser   sklearn.decompositionr   r   r   r   r	   r
   $sklearn.decomposition._dict_learningr   sklearn.exceptionsr   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r   sklearn.utils.estimator_checksr   r   r   sklearn.utils.parallelr   r&   r'   
rng_globalr0   r+   r*   r;   r5   r@   rC   ry   r   markparametrizer   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   r  r  r  r  r!  r  r+  r&  r.  r0  int32int64r5  r9  r=  rH  rJ  rL  r  rV  r_  r^   r6   r4   <module>ro     s           > 1 %  
 ,YY""1%
 	:Y
+;A@6rH  5$-85$-8  9 9 , 5$-8, 9,  -,L$
"* '&::O  5$-85$-8  9 9 4 5$-8, 9,& 5$-85$-8  9 9 02@j@@,3<7 !HIeT]3	  4 J	  &%1; 2;	(="4N$&; +-. G rzz2::&>?# @# G11 Q rzz2::&>?	# @	# .9Q 	RZZ 	RZZ 	2::	2::	N :N$ .9Q 	RZZ 	RZZ 	2::	2::	2 :20 >2	RZZ 	RZZ 	2::	2::	- 3- >2 J 3 JF >2	RZZ 	RZZ 	2::	2::	- 3-  >2(J 3(JV ACC#q2>
 	'  

r6   