U
    3ds                  
   @   s  d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" ej#$d Z%d\Z&Z'e%(e&e'Z)dd Z*dd Z+dd Z,dd Z-dd  Z.e j/0d!d"d#d$ge j/0d%d&d'ge j/0d(d&d'gd)d* Z1e j/0d(d&d'gd+d, Z2d-d. Z3d/d0 Z4d1d2 Z5d3d4 Z6d5d6 Z7d7d8 Z8d9d: Z9d;d< Z:e j/0d!d"d#d$ge j/0d%d&d'ge j/0d(d&d'gd=d> Z;e j/0d(d&d'gd?d@ Z<e j/0d%d&d'ge j/0d(d&d'gdAdB Z=dCdD Z>dEdF Z?dGdH Z@dIdJ ZAdKdL ZBdMdN ZCdOdP ZDe j/0dQd"d#d$ge j/0dRd&d'gdSdT ZEe j/0dQdUdVgdWdX ZFdYdZ ZGd[d\ ZHd]d^ ZId_d` ZJdadb ZKdcdd ZLdedf ZMdgdh ZNdidj ZOe j/0dkdldmdngdodp ZPdqdr ZQdsdt ZRe j/0dudvdwdxdydzgd{d| ZSd}d~ ZTdd ZUdd ZVe j/0dde j/0dejWejXfdd ZYe j/0dddd ZZe j/0d!de j/0dejWejXfdd Z[e j/0dde j/0d!de j/0dejWejWfejXejXfej\ejXfej]ejXffdd Z^e j/0dde j/0d!de j/0dejWejWfejXejXfej\ejXfej]ejXffdd Z_e j/0dde j/0dejWejWfejXejXfej\ejXfej]ejXffdd Z`e j/0dddd Zae j/0dde j/0dejWejWfejXejXfej\ejXfej]ejXffdd Zbe j/0dddd Zce j/j0dee)jde edddgdd ddd Zedd Zfdd ZgdS )    N)partial)clone)ConvergenceWarning)check_array)Parallel)assert_allclose)assert_array_almost_equal)assert_array_equal)ignore_warnings)
TempMemmap)DictionaryLearning)MiniBatchDictionaryLearning)SparseCoder)dict_learning)dict_learning_online)sparse_encode)#check_transformer_data_not_an_array)check_transformer_general)check_transformers_unfitted)_update_dict)
      c            	      C   s   t jd} dddddg}tddgdd	gD ]\\}}| |t}| |t}t|dd
gD ]*\}}t||||d}|j||fks^t	q^q.d S )Nr   omp
lasso_larslasso_cdlars	threshold      	      )	algorithmn_jobs)
nprandomRandomState	itertoolsproductrandn
n_featuresr   shapeAssertionError)	rngZ
algorithmsn_components	n_samplesZX_
dictionaryr!   r"   code r1   R/tmp/pip-unpacked-wheel-zrfo1fqw/sklearn/decomposition/tests/test_dict_learning.pytest_sparse_encode_shapes_omp)   s    r3   c                  C   sv   d} t | ddt}|jj| tfks*td} t | ddt}|jj| tfksTt|tjtjd | fksrtd S )Nr   r   random_stater   )r   fitXcomponents_r*   r)   r+   	transformr-   dicor1   r1   r2   test_dict_learning_shapes4   s    r<   c                  C   s.   d} t | ddt}|jj| tfks*td S )N   r   r4   )r   r6   r7   r8   r*   r)   r+   r:   r1   r1   r2   test_dict_learning_overcomplete?   s    r>   c               	      s   dd fddd} dd}|  t jt fdd	d
D  }t dd }|d k }d||< d|t |< |dd}tt t	|| dd}|
| W 5 Q R X t * tdt t	|| dd}|
| W 5 Q R X d S )Nc                 S   sj   t d| d | }dt d| t jd   d|| d |d    t || d  d|d    }|S )z1Discrete sub-sampled Ricker (Mexican hat) waveletr   r      r    g      ?)r#   linspacesqrtpiexp)
resolutioncenterwidthxr1   r1   r2   ricker_functionF   s    z&test_max_iter.<locals>.ricker_functionc                    sp   t d|d |}t ||f}t|D ]\}} ||| ||< q(|t t j|d ddddt jf  }|S )z+Dictionary of Ricker (Mexican hat) waveletsr   r   r?   ZaxisN)r#   r@   empty	enumeraterA   sumnewaxis)rF   rD   r-   ZcentersDirE   )rH   r1   r2   ricker_matrixP   s    *z$test_max_iter.<locals>.ricker_matrixr   i   r    c                 3   s    | ]}| d  dV  qdS )r   )rF   rD   r-   Nr1   ).0w)r-   rD   rP   r1   r2   	<genexpr>`   s     z test_max_iter.<locals>.<genexpr>)r   2   d   i  i  r   r      g      @g      )transform_algorithmZtransform_max_itererrori  )r#   Zr_tupler@   Zlogical_notZreshapepytestwarnsr   r   fit_transformwarningscatch_warningssimplefilter)rX   ZsubsamplingZD_multir7   Zfirst_quartermodelr1   )r-   rD   rH   rP   r2   test_max_iterE   s>    
		  
  rb   c               	   C   s:   d} d}d}t jt|d tt| |dd W 5 Q R X d S )Nr   r   ;Positive constraint not supported for 'lars' coding method.matchT)alphapositive_code)r[   raises
ValueErrorr   r7   )r-   rf   err_msgr1   r1   r2   *test_dict_learning_lars_positive_parameter~   s
    rk   rX   r   r   r   rg   FTpositive_dictc                 C   s|   d}t || d||ddt}|t}|r@|jdk sRtn|jdk  sRt|rh|dk sxtn|dk  sxtd S )Nr   r   cd)rX   r5   rg   rl   fit_algorithm)r   r6   r7   r9   r8   allr+   anyrX   rg   rl   r-   r;   r0   r1   r1   r2   test_dict_learning_positivity   s$    	
rr   c                 C   sJ   d}t |dd| ddt}| r4|jdk sFtn|jdk  sFtd S )Nr   r   r   rm   )rX   r5   rl   rn   )r   r6   r7   r8   ro   r+   rp   rl   r-   r;   r1   r1   r2   'test_dict_learning_lars_dict_positivity   s    rt   c               	   C   sR   d} t | dddddt}d}|d}tjt|d |t W 5 Q R X d S )	Nr   r   r   Trm   )rX   r5   rg   rn   9Positive constraint not supported for '{}' coding method.rd   )r   r6   r7   formatr[   rh   ri   r9   )r-   r;   rj   r1   r1   r2   'test_dict_learning_lars_code_positivity   s    
rw   c                  C   sj   d} t | dddd}|tt}tt||jt |jdd |t}tt||jtdd	 d S )
Nr=   r   MbP?r   )rX   transform_alphar5   r   rX   r?   decimal	r   r6   r7   r9   r   r#   dotr8   
set_paramsr-   r;   r0   r1   r1   r2   !test_dict_learning_reconstruction   s       
r   c                  C   sl   d} t | ddddd}|tt}tt||jt |jdd |t}tt||jtd	d
 d S )Nr=   r   rx   r   rV   rX   ry   r5   r"   r   rz   r?   r{   r}   r   r1   r1   r2   *test_dict_learning_reconstruction_parallel   s    
r   c               
   C   sl   d} t tV}t| ddddd}ttd |||}W 5 Q R X tt	||j
|dd	 W 5 Q R X d S )
Nr=   r   rx   r   rV   r   )categoryr?   r{   )r   r7   r   r
   r   r6   r9   r   r#   r~   r8   )r-   ZX_read_onlyr;   r0   r1   r1   r2   (test_dict_learning_lassocd_readonly_data   s     
  r   c                  C   s~   d} t | dddd}|tttjdf }tt|dksDt|j	dd |ttjdf }tt|dksztd S )	NrV   r   r    r   )rX   Ztransform_n_nonzero_coefsr5   r   r   rz   )
r   r6   r7   r9   r#   rM   lenZflatnonzeror+   r   r   r1   r1   r2    test_dict_learning_nonzero_coefs   s    r   c                  C   sd   d} t | ddd}|tt}d|_|t}t|d d d | f |d d | d f  | d S )Nr   r   r   )rX   r5   T)r   r6   r7   r9   Z
split_signr   )r-   r;   r0   Z
split_coder1   r1   r2   test_dict_learning_split
  s      
& r   c               	   C   s   t jd} d}tt|ddd| dd\}}|jt|fks<t|j|tfksNtt 	||jtjksfttt|ddd| dd}|j|tfkstd S )	Nr   r   rV   r   rm   T)r-   
batch_sizemax_itermethodr5   Zreturn_codeF)
r#   r$   r%   r   r7   r*   r.   r+   r)   r~   )r,   r-   r0   r/   r1   r1   r2    test_dict_learning_online_shapes  s0    
		r   c               	   C   s2   d} t jt| d ttdddd W 5 Q R X d S )Nrc   rd   rV   r   T)r   r   rg   r[   rh   ri   r   r7   )rj   r1   r1   r2   1test_dict_learning_online_lars_positive_parameter5  s    r   c              
   C   s   d}t |dd| d||ddt}|t}|rD|jdk sVtn|jdk  sVt|rl|dk s|tn|dk  s|td S )Nr   rV   r   r   rm   )r   r   rX   r5   rg   rl   rn   )r   r6   r7   r9   r8   ro   r+   rp   rq   r1   r1   r2   -test_minibatch_dictionary_learning_positivity;  s(    	
r   c              	   C   sN   d}t |dddd| ddt}| r8|jdk sJtn|jdk  sJtd S )Nr   rV   r   r   r   rm   )r   r   rX   r5   rl   rn   )r   r6   r7   r8   ro   r+   rp   rs   r1   r1   r2   'test_minibatch_dictionary_learning_lars_  s    
r   c              
   C   s|   t jd}d}tt|ddd||| d\}}|rB|dk sRtn|dk  sRt| rh|dk sxtn|dk  sxtd S )Nr   r   rV   rm   r   )r-   r   r   rf   r5   rl   rg   )r#   r$   r%   r   r7   ro   r+   rp   )rg   rl   r,   r-   r0   r/   r1   r1   r2   $test_dict_learning_online_positivitys  s$    

r   c                  C   s   d} ddl m} dd l}|j}z| |_t| dddddd}|t t| dddddd	}|t t| ddddd
}|t tt| ddddd tt| ddddd W 5 ||_X |jj	| t
fkstd S )Nr   r   )StringIOrV   r   皙?)r   r   verbosetolr5   r?   )r   r   r   max_no_improvementr5   )r   r   r   r5   )r-   r   rf   r   r5   )ior   sysstdoutr   r6   r7   r   r8   r*   r)   r+   )r-   r   r   Z
old_stdoutr;   r1   r1   r2   #test_dict_learning_online_verbosity  sd         

    

	r   c                  C   s6   d} t | dddd}|t |jj| tfks2td S )Nr   rV   r   r   r   r5   r   r6   r7   r8   r*   r)   r+   r:   r1   r1   r2   *test_dict_learning_online_estimator_shapes  s       
r   c                  C   s2   d} t | ddddt}|jj| tfks.td S )Nr=   rV   r   r   r   r   r:   r1   r1   r2   &test_dict_learning_online_overcomplete  s       r   c                  C   sD   d} t jd}|| t}t| dd|ddt}t|j	| d S )Nr=   r   rV   )r   r   	dict_initr5   )
r#   r$   r%   r(   r)   r   r6   r7   r	   r8   )r-   r,   Vr;   r1   r1   r2   (test_dict_learning_online_initialization  s        r   c                  C   sF   d} t jd}|| t}|jdd t| dd|dddt d S )Nr=   r   F)writerV   r   )r   r   r   r5   shuffle)	r#   r$   r%   r(   r)   Zsetflagsr   r6   r7   r-   r,   r   r1   r1   r2   1test_dict_learning_online_readonly_initialization  s    r   c                  C   s   d} t jd}|| t}|t j|d ddd d t jf  }t| dddd|d ddd		t	}t| d|dd
}t
dD ]&}t	D ]}||t jd d f  qqxt tt	|jdddkrtt|j|jdd |j|j  krdksn td S )Nr=   r   r?   r   rI   r   F        )r   r   rf   r   r   r   r   r5   )rf   r   r5   rf   r{   rU   )r#   r$   r%   r(   r)   rL   rM   r   r6   r7   rangepartial_fitro   r   r8   r+   r   Zn_steps_)r-   r,   r   Zdict1Zdict2rO   sampler1   r1   r2   %test_dict_learning_online_partial_fit  s:    $
   r   c                  C   sn   d} t jd}|| t}|t j|d ddd d t jf  }dD ]$}tt||d}|j	t
| fksDtqDd S )Nr=   r   r?   r   rI   r   r   r   r   r   r!   )r#   r$   r%   r(   r)   rL   rM   r   r7   r*   r.   r+   )r-   r,   r   algor0   r1   r1   r2   test_sparse_encode_shapes
  s    $r   r   positivec                 C   sz   d}t jd}||t}|t j|d ddd d t jf  }tt|| |d}|rf|dk	 svt
n|dk  svt
d S )Nr=   r   r?   r   rI   r!   r   )r#   r$   r%   r(   r)   rL   rM   r   r7   ro   r+   rp   )r   r   r-   r,   r   r0   r1   r1   r2   test_sparse_encode_positivity  s    $r   r   r   c              	   C   s|   d}t jd}||t}|t j|d ddd d t jf  }d}|| }tj	t
|d tt|| dd	 W 5 Q R X d S )
Nr=   r   r?   r   rI   ru   rd   Tr   )r#   r$   r%   r(   r)   rL   rM   rv   r[   rh   ri   r   r7   )r   r-   r,   r   rj   r1   r1   r2   )test_sparse_encode_unavailable_positivity"  s    $
r   c                  C   s   d} t jd}|| t}|t j|d ddd d t jf  }ttdd}dD ]*}t	t||d	}t	|||d	}t
|| qPd S )
NrU   r   r?   r   rI   F)orderr   r   )r#   r$   r%   r(   r)   rL   rM   r   r7   r   r   )r-   r,   r   ZXfr   abr1   r1   r2   test_sparse_encode_input.  s    $r   c                  C   s   d} t jd}|| t}|t j|d ddd d t jf  }tt|dd}t 	|dkr`t
t t t ||t d dk st
d S )	Nr=   r   r?   r   rI   rx   r   r   )r#   r$   r%   r(   r)   rL   rM   r   r7   ro   r+   rA   r~   )r-   r,   r   r0   r1   r1   r2   test_sparse_encode_error:  s    $r   c                  C   sJ   t jd} | dd}| dd}tt||dd d}|jdksFtd S )Nr   rU   @   r?   r   )r!   Zn_nonzero_coefs)rU   r?   )r#   r$   r%   r(   r
   r   r*   r+   )r,   r7   rN   r0   r1   r1   r2   )test_sparse_encode_error_default_sparsityD  s
    r   c               	   C   sD   d} t jd}|| t}tt tt	|dd W 5 Q R X d S )Nr=   r   z	<unknown>r   )
r#   r$   r%   r(   r)   r[   rh   ri   r   r7   r   r1   r1   r2   test_unknown_methodL  s
    r   c                  C   s   d} t jd}|| t}|t j|d ddd d t jf  }t|dddt	}t 
|dkrftt t t ||t	 d d	k std S )
Nr=   r   r?   r   rI   r   rx   r/   rX   ry   r   )r#   r$   r%   r(   r)   rL   rM   r   r9   r7   ro   r+   rA   r~   )r-   r,   r   coderr1   r1   r2   test_sparse_coder_estimatorT  s    $  r   c                  C   s   d} t jd}|| t}|t j|d ddd d t jf  }t|ddd}t|}t	|t	|ksjt
t j|j|j t	|jt	|jkst
|j|jkst
|j|jkst
t jttt j}t j|||| d S )	Nr=   r   r?   r   rI   r   rx   r   )r#   r$   r%   r(   r)   rL   rM   r   r   idr+   Ztestingr   r/   Zn_components_n_features_in_randr.   astypefloat32r9   )r-   r,   r   r   Zcloneddatar1   r1   r2   !test_sparse_coder_estimator_clone`  s"    $  r   c                  C   sb   t jd} d\}}| ||}tdd|  }t j||t j}t|ddd}|| d S )N	  )(   r   g    >ArV   r   r?   )rX   r"   )	r#   r$   r%   r   intr   r   r   r]   )r,   r-   r)   	init_dictr.   r   scr1   r1   r2   test_sparse_coder_parallel_mmapr  s    r   c                  C   sp   t jd} d\}}| ||}t|}t|jj| t|jj| t	tdd}||jj| t
|jj| d S )Nr   )r   r    T)Zreadonly_memmap)r#   r$   r%   r   r   r   	__class____name__r   r   r   )r,   r-   r)   r   r   Z check_transformer_general_memmapr1   r1   r2   $test_sparse_coder_common_transformer  s     r   c                  C   s:   t dddgdddgg} t| }|j| jd ks6td S )Nr   r?   r    )r#   arrayr   r   r*   r+   )dr   r1   r1   r2   test_sparse_coder_n_features_in  s    r   attrZiter_offset_Zinner_stats_Zrandom_state_c              	   C   sN   d|  d}t ddddd}|t tjt|d t||  W 5 Q R X d S )	NzThe attribute `z2` is deprecated in 1.1 and will be removed in 1.3.r?   rV   r   r   )r-   r   r   r5   rd   )r   r6   r7   r[   r\   FutureWarninggetattr)r   depr_msgestr1   r1   r2   2test_minibatch_dict_learning_deprecated_attributes  s    
   
r   c               	   C   s>   d} t dddd}tjt| d |jtdd W 5 Q R X d S )NzM'iter_offset' is deprecated in version 1.1 and will be removed in version 1.3r?   rV   r   r-   r   r5   rd   )iter_offset)r   r[   r\   r   r   r7   r   r   r1   r1   r2   ?test_minibatch_dict_learning_partial_fit_iter_offset_deprecated  s
    r   c               	   C   s<   d} t ddddd}tjt| d |t W 5 Q R X d S )NzH'n_iter' is deprecated in version 1.1 and will be removed in version 1.4r?   rV   r   r   )r-   r   n_iterr5   rd   )r   r[   r\   r   r6   r7   r   r1   r1   r2   .test_minibatch_dict_learning_n_iter_deprecated  s       r   zarg, val)r   r   )Zinner_statsN)return_inner_statsF)Zreturn_n_iterF)r   r   c              	   C   sF   d|  d}t jt|d" ttfdddd| |i W 5 Q R X d S )N'zB' is deprecated in version 1.1 and will be removed in version 1.3.rd   r?   rV   r   r   )r[   r\   r   r   r7   )argvalr   r1   r1   r2   )test_dict_learning_online_deprecated_args  s    
  r   c               	   C   s\   d} t jt| d ttddd W 5 Q R X t jt| d tdddt W 5 Q R X d S )Nz+The default value of batch_size will changerd   r?   r   )r-   r5   )r[   r\   r   r   r7   r   r6   msgr1   r1   r2   ,test_batch_size_default_value_future_warning  s
    r   c                  C   s   t jd} t ddgddgg}t ddgdd	gg}t ||| d
d
 }| }t||| t |j|}t |j|}| }t||||| t	|| d S )Nr   g      ?g      r   g?g      ?r   g333333?g?r?   )
r#   r$   r%   r   r~   r(   copyr   Tr   )r,   r0   r/   r7   Z
newd_batchABZnewd_onliner1   r1   r2   test_update_dict  s    r   c               	   C   s0   d} t jt| d ttddd W 5 Q R X d S )Nz8The following arguments are incompatible with 'max_iter'rd   r   T)r   r   r   r   r1   r1   r2   +test_dict_learning_online_n_iter_deprecated  s    r   r!   )r   r   r   r   r   	data_typec                 C   sH   d}t jd}||t}tt| || |d}|j| ksDt	d S )N   r   r   )
r#   r$   r%   r(   r)   r   r7   r   dtyper+   )r   r!   r-   r,   r/   r0   r1   r1   r2   test_sparse_encode_dtype_match	  s      r   c                 C   sn   d}d}t jd}||t}ttt j|t j| d}ttt j	|t j	| d}t
|||d d S )N-C6?r   r   r   rtol)r#   r$   r%   r(   r)   r   r7   r   r   float64r   )r!   r   r-   r,   r/   Zcode_32Zcode_64r1   r1   r2   (test_sparse_encode_numerical_consistency  s    
 
 
 
 r   c                 C   sP   d}t jd}||t}t|| |d}|t| }|j	| ksLt
d S )Nr   r   rz   )r#   r$   r%   r(   r)   r   r   r9   r7   r   r+   )r   rX   r-   r,   r/   r   r0   r1   r1   r2   test_sparse_coder_dtype_match+  s     r   rn   )r   rm   zdata_type, expected_typec                 C   sN   t d||dd}|t|  |jj|ks0t|t| j|ksJtd S )Nr   r   )r-   rn   rX   r5   )r   r6   r7   r   r8   r   r+   r9   r   expected_typern   rX   dict_learnerr1   r1   r2   $test_dictionary_learning_dtype_match=  s    r   c              	   C   s|   t dd||dddd}|t|  |jj|ks6t|t| j|ksPt|jd j|ksdt|jd j|ksxtd S )Nr   r   rU   r   r   )r-   r   rn   rX   r   r   r5   r   )	r   r6   r7   r   r8   r   r+   r9   Z_inner_statsr   r1   r1   r2   .test_minibatch_dictionary_learning_dtype_match\  s    	r   r   c                 C   sN   t jd}d}tt| |d||d\}}}|j|ks<t|j|ksJtd S )Nr   r   r   r-   rf   r5   r   )r#   r$   r%   r   r7   r   r   r+   )r   r   r   r,   r-   r0   r/   _r1   r1   r2   test_dict_learning_dtype_match  s    r   c           	      C   s   d}d}d}t ttj||d| d\}}}t ttj||d| d\}}}tt||t|||d ttt	|tt	||d tt|d t|d |d t
|dkdkstt|dkt|dkkstd S )	Ngư>rV   r?   r   r   r   r   皙?)r   r7   r   r#   r   r   r   matmulrL   absmeanr+   count_nonzero)	r   r   r-   rf   U_64V_64r   U_32V_32r1   r1   r2   (test_dict_learning_numerical_consistency  s,    

&"r  c                 C   sN   t jd}d}tt| |dd||d\}}|j|ks<t|j|ksJtd S )Nr   r   r   r   r-   rf   r   r5   r   )r#   r$   r%   r   r7   r   r   r+   )r   r   r   r,   r-   r0   r/   r1   r1   r2   %test_dict_learning_online_dtype_match  s    
r
  c                 C   s   d}d}d}t ttj||dd| d\}}t ttj||dd| d\}}tt||t|||d ttt	|tt	||d tt|d t|d |d t
|d	kd
kstt|d	kt|d	kkstd S )Nr   rV   r   r   r   r	  r   r?   r   r   )r   r7   r   r#   r   r   r   r   rL   r  r  r+   r  )r   r   r-   rf   r  r  r  r  r1   r1   r2   /test_dict_learning_online_numerical_consistency  s0    



&"r  	estimatorrV   r   )r   r   c                 C   s   | j jS )N)r   r   )rG   r1   r1   r2   <lambda>      r  )idsc                    sH   |  t tjd }|  }| jj  t| fddt|D  dS )z1Check feature names for dict learning estimators.r   c                    s   g | ]}  | qS r1   r1   )rQ   rO   Zestimator_namer1   r2   
<listcomp>  s     z.test_get_feature_names_out.<locals>.<listcomp>N)	r6   r7   r*   Zget_feature_names_outr   r   lowerr	   r   )r  r-   Zfeature_names_outr1   r  r2   test_get_feature_names_out  s    

r  c                 C   sT   |  tjjdttdd tjd}|	dd}t
ddddd	d
d}|| d S )Nr   rU   )Z
max_nbytesr   r   r   r?   rm   rT   T)r-   r5   r"   rn   r   r   )setattrsklearndecompositionZ_dict_learningr   r   r#   r$   r%   r(   r   r6   )Zmonkeypatchr,   ZX_trainr   r1   r1   r2   %test_cd_work_on_joblib_memmapped_data  s     

r  c               	   C   sD   d} t jt| d tddddt}W 5 Q R X |jdks@tdS )znCheck that we always raise a warning when `n_iter` is set even if it is
    ignored if `max_iter` is set.
    z%'n_iter' is deprecated in version 1.1rd      r?   )r   r   r   N)r[   r\   r   r   r6   r7   Zn_iter_r+   )Zwarn_msgra   r1   r1   r2   :test_minibatch_dictionary_learning_warns_and_ignore_n_iter,  s    r  )hr[   r^   Znumpyr#   	functoolsr   r&   r  Zsklearn.baser   Zsklearn.exceptionsr   Zsklearn.utilsr   Zsklearn.utils.parallelr   Zsklearn.utils._testingr   r   r	   r
   r   Zsklearn.decompositionr   r   r   r   r   r   Zsklearn.utils.estimator_checksr   r   r   Z$sklearn.decomposition._dict_learningr   r$   r%   Z
rng_globalr.   r)   r(   r7   r3   r<   r>   rb   rk   markZparametrizerr   rt   rw   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   r   r   r   r   r   r   Zint32Zint64r   r   r   r  r
  r  r   r  r  r  r1   r1   r1   r2   <module>   sr  9

5	






 
 
  



	 



	



	
#



	
%
	
