U
    ¿9%e&|  ã                
   @   sN  d dl Z d dlZd dlmZ d dlZd dl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 d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d d	lmZmZ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$d%„ Z4d&d'„ Z5d(d)„ Z6d*d+„ Z7d,d-„ Z8d.d/„ Z9d0d1„ Z:ej/ 0ddddg¡ej/ 0dddg¡ej/ 0dddg¡d2d3„ ƒƒƒZ;ej/ 0dddg¡d4d5„ ƒZ<ej/ 0dddg¡ej/ 0dddg¡d6d7„ ƒƒZ=d8d9„ Z>d:d;„ Z?d<d=„ Z@d>d?„ ZAd@dA„ ZBdBdC„ ZCdDdE„ ZDej/ 0dFdddg¡ej/ 0dGddg¡dHdI„ ƒƒZEej/ 0dFdJdKg¡dLdM„ ƒZFdNdO„ ZGdPdQ„ ZHdRdS„ ZIdTdU„ ZJdVdW„ ZKdXdY„ ZLdZd[„ ZMd\d]„ ZNd^d_„ ZOej/ 0d`dadbdcdddeg¡dfdg„ ƒZPdhdi„ ZQdjdk„ ZRej/ 0dldm¡ej/ 0dnejSejTf¡dodp„ ƒƒZUej/ 0dldm¡dqdr„ ƒZVej/ 0ddm¡ej/ 0dnejSejTf¡dsdt„ ƒƒZWej/ 0dudv¡ej/ 0ddm¡ej/ 0dwejSejSfejTejTfejXejTfejYejTff¡dxdy„ ƒƒƒZZej/ 0dudv¡ej/ 0ddm¡ej/ 0dwejSejSfejTejTfejXejTfejYejTff¡dzd{„ ƒƒƒZ[ej/ 0d|dv¡ej/ 0dwejSejSfejTejTfejXejTfejYejTff¡d}d~„ ƒƒZ\ej/ 0d|dv¡dd€„ ƒZ]ej/ 0d|dv¡ej/ 0dwejSejSfejTejTfejXejTfejYejTff¡dd‚„ ƒƒZ^ej/ 0d|dv¡dƒd„„ ƒZ_ej/j0d…ee)j`ƒeƒ ed†d‡dˆgd‰dŠ„ d‹dŒd„ ƒZadŽd„ Zbdd‘„ ZcdS )’é    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            	      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   úm/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/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_shapes3   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_functionE   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_matrixO   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_iterD   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sŽt‚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_parameter4  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_positivityr  s$    ø

r‘   c                  C   sÌ   d} dd l }ddlm} |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sÈt‚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   )ÚsysÚior’   Ú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 ¡ q€qxt  tt	|jdddk¡r¾t‚t|j|jdd |j|j  krèdksîn 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   ÚrangeZ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 sˆt
‚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_error9  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_sparsityC  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 sŽt‚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_estimatorK  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s”t
‚|j|jks¤t
‚|j|jks´t
‚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+   Útestingr   r/   Zn_components_Ún_features_in_Úrandr.   ÚastypeÚfloat32r9   )r-   r,   r    r»   ZclonedÚdatar1   r1   r2   Ú!test_sparse_coder_estimator_cloneW  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_mmapi  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Ð   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\   ÚFutureWarningr6   r7   )Údepr_msgZestr1   r1   r2   Ú.test_minibatch_dict_learning_n_iter_deprecated’  s    ÿ   ÿrÔ   zarg, val)Ziter_offsetr   )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.4.rd   r    rV   r   )r-   r‰   r5   )r[   r\   rÒ   r   r7   )ÚargÚvalrÓ   r1   r1   r2   Ú)test_dict_learning_online_deprecated_args   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   )Úmsgr1   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   st   t dd||dddd}| t | ¡¡ |jj|ks6t‚| t | ¡¡j|ksPt‚|jj|ks`t‚|j	j|kspt‚d S )Nr   r   rU   r“   r   )r-   r‰   rn   rX   rŠ   r•   r5   )
r   r6   r7   rÁ   r8   rã   r+   r9   Z_AZ_Brë   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_matchP  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sÈt‚t |dk¡t |dk¡ksèt‚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_consistencyi  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sÈt‚t |d	k¡t |d	k¡ksèt‚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  )Z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  )dr&   r^   Ú	functoolsr   Únumpyr#   r[   r  Zsklearn.baser   Zsklearn.decompositionr   r   r   r   r   r	   Z$sklearn.decomposition._dict_learningr
   Zsklearn.exceptionsr   Zsklearn.utilsr   Zsklearn.utils._testingr   r   r   r   r   Zsklearn.utils.estimator_checksr   r   r   Zsklearn.utils.parallelr   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ê   Zint32Zint64rî   rï   rò   rü   rþ   rÿ   rÛ   r  r
  r  r1   r1   r1   r2   Ú<module>   sR   9ýþ
ýþ
5	



ûþ

 ÿ
 ÿ
 ÿ ÿ



üþ	 ÿ



üþ	



üþ	
#



üþ	
%
ýù	
