Ë
    êÿæiÛ}  ã                   óh  — 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mZmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZ ej:                  j=                  ddgeddigeddigei gg«      d„ «       Zd„ Z ej:                  jC                  d«      d„ «       Z"d„ Z#d„ Z$ej:                  jC                  d«      ej:                  j=                  ddgeddigeddigei gg«      ej:                  j=                  dd«      ej:                  j=                  dd«      ej:                  j=                  dd«      d„ «       «       «       «       «       Z%ej:                  j=                  ddgeddigeddigei gg«      d„ «       Z&d„ Z'ej:                  j=                  dddg«      d„ «       Z(d„ Z)ej:                  j=                  ddgeddigeddigei gg«      d „ «       Z*ej:                  j=                  dd!«      d"„ «       Z+d#„ Z,ej:                  j=                  deeg«      d$„ «       Z-ej:                  j=                  ddgeddigeddigei gg«      ej:                  j=                  d%eez   «      ej:                  j=                  dd«      ej:                  j=                  dd«      d&„ «       «       «       «       Z.ej:                  j=                  ddgeddigeddigei gg«      ej:                  j=                  d'e«      d(„ «       «       Z/ej:                  j=                  dd)d*g«      ej:                  j=                  dd!«      ej:                  j=                  dd«      ej:                  j=                  dd«      d+„ «       «       «       «       Z0d,„ Z1d-„ Z2ej:                  j=                  d.e«      d/„ «       Z3ej:                  j=                  d.e«      d0„ «       Z4ej:                  jC                  d1«      ej:                  j=                  d.e«      d2„ «       «       Z5ej:                  j=                  d.e«      d3„ «       Z6ej:                  j=                  d4d5d6g«      d7„ «       Z7ej:                  j=                  ddgeddigeddigei gg«      d8„ «       Z8ej:                  jC                  d1«      ej:                  j=                  dd!«      d9„ «       «       Z9d:„ Z:ej:                  j=                  d;ejv                  ejv                  fejx                  ejx                  fejz                  ejx                  fej|                  ejx                  fg«      ej:                  j=                  ddgeddigeddigei gg«      d<„ «       «       Z?ej:                  j=                  ddgeddigeddigei gg«      d=„ «       Z@ej:                  j=                  deeg«      d>„ «       ZAej:                  j=                  d4g d?¢«      d@„ «       ZBdA„ ZCdB„ ZDdC„ ZEej:                  j=                  deeg«      dD„ «       ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJy)Ié    N)ÚStringIO)Úlinalg)Úclone)ÚNMFÚMiniBatchNMFÚnon_negative_factorization)Ú_nmf)ÚConvergenceWarning)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)Úsquared_norm)ÚCSC_CONTAINERSÚCSR_CONTAINERSÚ	EstimatorÚsolverÚcdÚmuc                 óÆ   — d}t        j                  d«      }t        j                  t        |¬«      5   | ddddœ|¤Žj                  |«       d d d «       y # 1 sw Y   y xY w)NzKMaximum number of iterations 1 reached. Increase it to improve convergence.©é   r   ©Úmatché   Úauto)Úmax_iterÚn_components© )ÚnpÚonesÚpytestÚwarnsr
   Úfit)r   r   Úconvergence_warningÚAs       úy/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sklearn/decomposition/tests/test_nmf.pyÚtest_convergence_warningr(      sV   € ð 	Vð ô 	�‰�‹€AÜ	�‰Ô(Ð0CÖ	DÙÐ<˜1¨6Ñ<°VÑ<×@Ñ@ÀÔC÷ 
E×	DÑ	Dús   ³AÁA c                  ó6  — t         j                  j                  j                  d«      } t        j                  | j                  dd«      «      }dD ]F  }t        j                  |d|d¬«      \  }}|dk  j                  «       s|dk  j                  «       sŒFJ ‚ y )Né*   é
   )ÚrandomÚnndsvdÚnndsvdaÚnndsvdarr   ©ÚinitÚrandom_state)	r    r,   ÚmtrandÚRandomStateÚabsÚrandnÚnmfÚ_initialize_nmfÚany)ÚrngÚdatar1   ÚWÚHs        r'   Útest_initialize_nn_outputr>   $   sx   € ä
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ�6‰6�#—)‘)˜B Ó#Ó$€DÛ;ˆÜ×"Ñ" 4¨°$ÀQÔG‰ˆˆ1Ø˜‘U—K‘K”M a¨!¡e§[¡[¥]Ð3Ð3ñ <ó    zbignore:The multiplicative update \('mu'\) solver cannot update zeros present in the initializationc                  óÌ  — t        j                  d«      } d}t        j                  t        |¬«      5  t        dd¬«      j                  | «       d d d «       d}t        j                  t        |¬«      5  t        «       j                  |  «       d d d «       t        dd	¬
«      j                  | «      }t        j                  t        |¬«      5  |j                  |  «       d d d «       t        j                  t        |¬«      5  t        j                  |  dd«       d d d «       dD ]á  }t        j                  dj                  |«      «      }t        j                  t        |¬«      5  t        d|¬«      j                  | «       d d d «       t        j                  t        |¬«      5  t        d|¬«      j                  | «       d d d «       t        j                  t        |¬«      5  t        j                  | d|«       d d d «       Œã y # 1 sw Y   �Œ¿xY w# 1 sw Y   �ŒŒxY w# 1 sw Y   �ŒGxY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ»xY w# 1 sw Y   Œ‡xY w# 1 sw Y   �Œ;xY w)Nr   zHInvalid beta_loss parameter: solver 'cd' does not handle beta_loss = 1.0r   r   ç      ð?)r   Ú	beta_lossz!Negative values in data passed tor   çš™™™™™¹?)Útolr-   )r-   r.   r/   zLinit = '{}' can only be used when n_components <= min(n_samples, n_features)é   ©r1   )r    r!   r"   ÚraisesÚ
ValueErrorr   r$   Ú	transformr7   r8   ÚreÚescapeÚformatr   )r&   ÚmsgÚclfr1   s       r'   Útest_parameter_checkingrO   -   sž  € ô 	�‰�‹€Aà
T€CÜ	�‰”z¨Ö	-Ü�4 3Ô'×+Ñ+¨AÔ.÷ 
.à
-€CÜ	�‰”z¨Ö	-Ü‹�	‰	�1�"Œ÷ 
.ä
ˆa�SŒ/×
Ñ
˜aÓ
 €CÜ	�‰”z¨Ö	-Ø�‰�q�bÔ÷ 
.ä	�‰”z¨Ö	-Ü×Ñ˜Q˜B  8Ô,÷ 
.ó 2ˆÜ�i‰ið9ß9?¹À»ó
ˆô �]‰]œ:¨SÖ1Ü�˜Ô×!Ñ! !Ô$÷ 2ä�]‰]œ:¨SÖ1Ü˜ Ô&×*Ñ*¨1Ô-÷ 2ä�]‰]œ:¨SÖ1Ü×Ñ  1 dÔ+÷ 2Ð1ñ 2÷ 
.Ñ	-ú÷ 
.Ñ	-ú÷ 
.Ñ	-úç	-Ñ	-ú÷ 2Ð1úç1Ð1úç1Ñ1úsS   ³HÁ5HÃH'ÄH4Å*IÆ*IÇ*IÈHÈH$È'H1È4H>ÉI
	ÉI	ÉI#	c                  óˆ  — t         j                  j                  j                  d«      } t        j                  | j                  dd«      «      }t        j                  |dd¬«      \  }}t        j                  t        j                  ||«      |z
  «      }t        j                  ||j                  «       z
  «      }||k  sJ ‚y )Nr*   r+   r-   rF   )r    r,   r3   r4   r5   r6   r7   r8   r   ÚnormÚdotÚmean)r:   r&   r<   r=   ÚerrorÚsdevs         r'   Útest_initialize_closerV   P   s�   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜RÓ Ó!€AÜ×Ñ˜q "¨8Ô4�D€A€qÜ�K‰KœŸ™˜q !› qÑ(Ó)€EÜ�;‰;�q˜1Ÿ6™6›8‘|Ó$€DØ�DŠ=Ð‰=r?   c                  ó   — t         j                  j                  j                  d«      } t        j                  | j                  dd«      «      }t        j                  |dd¬«      \  }}t        j                  |dd¬«      \  }}t        j                  |ddd¬«      \  }}||f||f||f||ffD ]  \  }}	t        |	|dk7     ||dk7     «       Œ y )	Nr*   r+   r-   rF   r.   r/   r   r0   )	r    r,   r3   r4   r5   r6   r7   r8   r   )
r:   r;   ÚW0ÚH0ÚWaÚHaÚWarÚHarÚrefÚevls
             r'   Útest_initialize_variantsr`   \   sÂ   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ�6‰6�#—)‘)˜B Ó#Ó$€DÜ× Ñ   r°Ô9�F€BˆÜ× Ñ   r°	Ô:�F€BˆÜ×"Ñ" 4¨°*È1ÔM�H€Cˆà˜"�X  C˜y¨2¨r¨(°R¸°IÓ>‰ˆˆSÜ˜C  q¡™M¨3¨s°a©x©=Õ9ñ ?r?   r1   )Nr-   r.   r/   r,   Úalpha_W)ç        rA   Úalpha_H)rb   rA   Úsamec           	      ó,  — t         j                  dt        j                  dd«      z
  dt        j                  dd«      z   f   } | dd|||ddœ|¤Ž}|j                  |«      }|j                  dk  j                  «       s|dk  j                  «       rJ ‚y )Ng      @r   é   r   r   )r   r1   ra   rc   r2   r   )r    Úc_ÚarangeÚfit_transformÚcomponents_r9   )r   r   r1   ra   rc   r&   ÚmodelÚtransfs           r'   Útest_nmf_fit_nn_outputrm   k   sž   € ô 	�‰ˆc”B—I‘I˜a “OÑ# S¬2¯9©9°Q¸«?Ñ%:Ð:Ñ;€AÙð ØØØØØñð ñ€Eð × Ñ  Ó#€FØ×"Ñ" QÑ&×+Ñ+Ô-°&¸1±*×1AÑ1AÔ1CÐDÐDÐ1Cr?   c                 óú   — t         j                  j                  j                  d«      } | 	 d	ddddœ|¤Ž}t        j                  |j                  dd«      «      }|j                  |«      j                  dk  sJ ‚y )
Nr*   é   r/   r   iX  )r1   r2   r   rf   rC   )ro   )r    r,   r3   r4   r5   r6   r$   Úreconstruction_err_)r   r   r:   ÚpnmfÚXs        r'   Útest_nmf_fit_closers   …   sy   € ô
 �)‰)×
Ñ
×
&Ñ
& rÓ
*€CáØ	ðàØØñ	ð
 ñ€Dô 	�‰ˆs�y‰y˜˜A‹Ó€AØ�8‰8�A‹;×*Ñ*¨SÒ0Ð0Ñ0r?   c                  ó‚  — d} d}d}d}d}d}t         j                  j                  j                  d«      }t        j                  | |g«      }t        j
                  |j                  | «      «      }t        |«      D ]  }	||	| z     ||	| z  |	f<   Œ t        j                  ||g«      }
t        j
                  |j                  |«      «      }t        |«      D ]  }	||	|z     |
|	|z  |	f<   Œ t        j                  ||
«      }t        |d||d	¬
«      }|j                  |«      }t        j                  ||j                  «      }|j                  dk  sJ ‚t        ||«       t        |||d	|¬«      }|j                  |«      }t        j                  ||j                  «      }|j                  dk  sJ ‚t        ||d¬«       y )Né   r+   ro   r   rE   éè  r*   r   r   )r   r   rB   r   r2   rC   )r   rB   Ú
batch_sizer2   r   ©Úatol)r    r,   r3   r4   Úzerosr5   r6   ÚrangerR   r   ri   rj   rp   r   r   )Ú	n_samplesÚ
n_featuresr   rB   rw   r   r:   ÚW_trueÚW_arrayÚjÚH_trueÚH_arrayrr   rk   rl   ÚX_calcÚmbmodels                    r'   Útest_nmf_true_reconstructionr…   —   s¸  € ð €IØ€JØ€LØ€IØ€JØ€Hä
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ�X‰X�y ,Ð/Ó0€FÜ�f‰f�S—Y‘Y˜yÓ)Ó*€GÜ�<Ö ˆØ#*¨1¨y©=Ñ#9ˆˆq�9‰}˜aÐÒ ð !ä�X‰X�| ZÐ0Ó1€FÜ�f‰f�S—Y‘Y˜|Ó,Ó-€GÜ�:ÖˆØ&-¨a°,Ñ.>Ñ&?ˆˆq�<Ñ Ð"Ò#ð ä
�‰ˆv�vÓ€AäØ!ØØØØô€Eð × Ñ  Ó#€FÜ�V‰V�F˜E×-Ñ-Ó.€Fà×$Ñ$ sÒ*Ð*Ð*Ü�A�vÔäØ!ØØØØô€Gð ×"Ñ" 1Ó%€FÜ�V‰V�F˜G×/Ñ/Ó0€Fà×&Ñ&¨Ò,Ð,Ð,Ü�A�v AÖ&r?   c                 ó   — t         j                  j                  j                  d«      }t        j                  |j                  dd«      «      }t        | dddd¬«      }|j                  |«      }|j                  |«      }t        ||d	¬
«       y )Nr*   rf   ro   rE   r,   r   ç�íµ ÷Æ°>)r   r   r1   r2   rD   rC   rx   )
r    r,   r3   r4   r5   r6   r   ri   rI   r   )r   r:   r&   ÚmÚftÚts         r'   Útest_nmf_transformr‹   Ç   sx   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜A‹Ó€AÜØØØØØô	€Að 
�‰˜Ó	€BØ	�‰�A‹€AÜ�B˜ Ö%r?   c                  ó  — t         j                  j                  j                  d«      } t        j                  | j                  dd«      «      }t        dddd¬«      }|j                  |«      }|j                  |«      }t        ||«       y )	Nr*   rf   ro   rE   r   çü©ñÒMbP?T)r   r2   rD   Úfresh_restarts)
r    r,   r3   r4   r5   r6   r   ri   rI   r   )r:   r&   rˆ   r‰   rŠ   s        r'   Útest_minibatch_nmf_transformr�   Ù   ss   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜A‹Ó€AÜØØØØô		€Að 
�‰˜Ó	€BØ	�‰�A‹€AÜ�B˜Õr?   c                 óà  — t         j                  j                  d«      }t        j                  |j	                  dd«      «      }d}t        j
                  |j                  «       |z  «      }t        j                  ||j	                  |d«      z  «      }t        j                  ||j	                  d|«      z  «      } | d	|ddddœ|¤Ž}|j                  |||¬«       |j                  |«       y )
Nr   rf   ro   é   Úcustomr�   ©r   r1   r2   rD   ©r<   r=   r   )	r    r,   r4   r5   r6   ÚsqrtrS   ri   rI   )	r   r   r2   r&   r   ÚavgÚH_initÚW_initrˆ   s	            r'   Útest_nmf_transform_custom_initr™   é   sÐ   € ô —9‘9×(Ñ(¨Ó+€LÜ
�‰ˆ|×!Ñ! ! QÓ'Ó(€AØ€LÜ
�'‰'�!—&‘&“(˜\Ñ)Ó
*€CÜ�V‰V�C˜,×,Ñ,¨\¸1Ó=Ñ=Ó>€FÜ�V‰V�C˜,×,Ñ,¨Q°Ó=Ñ=Ó>€Fáð 	Ø!¨¸qÀdñ	ØNTñ	€Að ‡O�O�A˜ 6€OÔ*Ø‡K�K�…Nr?   )r   r   c                 ó  — t         j                  j                  d«      }t        j                  |j	                  dd«      «      }t        | dddd¬«      }|j                  |«      }|j                  |«      }t        ||d¬«       y )	Nr   rf   r‘   r,   rv   )r   r   r1   r2   r   r   ©Údecimal)	r    r,   r4   r5   r6   r   ri   Úinverse_transformr   )r   r2   r&   rˆ   r‰   ÚA_news         r'   Útest_nmf_inverse_transformrŸ   ý   sx   € ô —9‘9×(Ñ(¨Ó+€LÜ
�‰ˆ|×!Ñ! ! QÓ'Ó(€AÜØØØØØô	€Að 
�‰˜Ó	€BØ×Ñ Ó#€EÜ˜a °Ö2r?   c                  ó  — t         j                  j                  d«      } t        j                  | j	                  dd«      «      }t        | ddd¬«      } |j                  |«      } |j                  |«      }t        ||dd	¬
«       y )Nr   rf   r‘   éô  r/   T)r2   r   r1   rŽ   r�   ç{®Gáz„?)Úrtolry   )	r    r,   r4   r5   r6   r   ri   r�   r   )r:   r&   r7   r‰   rž   s        r'   Útest_mbnmf_inverse_transformr¤     sz   € ô �)‰)×
Ñ
 Ó
"€CÜ
�‰ˆs�y‰y˜˜A‹Ó€AÜ
ØØØØô	€Cð 
ˆ×	Ñ	˜1Ó	€BØ!ˆC×!Ñ! "Ó%€EÜ�A�u 4¨dÖ3r?   c                 óÔ   — t         j                  j                  j                  d«      }t        j                  |j                  dd«      «      } | ddd¬«      j                  |«       y )Nr*   é   r+   ru   r   r¢   )r   r2   rD   )r    r,   r3   r4   r5   r6   r$   )r   r:   r&   s      r'   Ú$test_n_components_greater_n_featuresr§     sN   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜RÓ Ó!€AÙ˜2¨A°4Ô8×<Ñ<¸QÕ?r?   Úsparse_containerc                 óÈ  — t         j                  j                  j                  d«      }t        j                  |j                  dd«      «      }d|d d …dt        j                  d«      z  f<    ||«      } | d	dd||ddddœ|¤Ž}t        |«      }	|j                  |«      }
|	j                  |«      }|j                  }|	j                  }t        |
|«       t        ||«       y )
Nr*   r+   r   r   ro   r,   éd   )r   r1   ra   rc   r2   rD   r   r   )r    r,   r3   r4   r5   r6   rh   r   ri   rj   r   )r   r   r¨   ra   rc   r:   r&   ÚA_sparseÚest1Úest2ÚW1ÚW2ÚH1ÚH2s                 r'   Útest_nmf_sparse_inputr²   &  sà   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜RÓ Ó!€AØ€A‚aˆŒR�Y‰Y�q‹\Ñ	ÐÑÙ Ó"€Háð 	ØØØØØØØñ	ð ñ	€Dô �‹;€Dà	×	Ñ	˜AÓ	€BØ	×	Ñ	˜HÓ	%€BØ	×	Ñ	€BØ	×	Ñ	€Bä�B˜ÔÜ�B˜Õr?   Úcsc_containerc                 ó2  — t         j                  j                  j                  d«      }t        j                  |j                  dd«      «      }d|d<    ||«      } | d
ddddœ|¤Ž}|j                  |«      }|j                  |«      }t        ||d¬	«       y )Nr*   rE   r   r   )r   r   i�  )r2   r   r   rC   rx   r   )	r    r,   r3   r4   r5   r6   ri   rI   r   )r   r   r³   r:   r&   rk   ÚA_fit_trÚA_trs           r'   Útest_nmf_sparse_transformr·   I  s‰   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜A‹Ó€AØ€A€d�GÙ�aÓ€AáÐM 1°1¸sÑMÀfÑM€EØ×"Ñ" 1Ó%€HØ�?‰?˜1Ó€DÜ�H˜d¨Ö.r?   r,   r-   c                 óÚ  — d}t         j                  j                  j                  d«      }t        j                  |j                  dd«      «      }d|d d …dt        j                  d«      z  f<   t        || ||||dd¬	«      \  }}}	t        ||d
| ||||dd¬«
      \  }
}}	t        | ||||dd¬	«      }|j                  |«      }|j                  |«      }t        ||«       t        |
|«       y )Nr¡   r*   r+   r   r   ro   r   r¢   )r1   r   r   ra   rc   r2   rD   F)	r=   Úupdate_Hr1   r   r   ra   rc   r2   rD   )r    r,   r3   r4   r5   r6   rh   r   r   ri   rI   r   )r1   r   ra   rc   r   r:   r&   ÚW_nmfr=   Ú_ÚW_nmf_2Úmodel_classÚW_clsÚW_cls_2s                 r'   Ú+test_non_negative_factorization_consistencyrÀ   [  s  € ð €HÜ
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜RÓ Ó!€AØ€A‚aˆŒR�Y‰Y�q‹\Ñ	ÐÑä,Ø	ØØØØØØØô	�K€Eˆ1ˆaô /Ø	Ø
ØØØØØØØØô�M€GˆQ�ô ØØØØØØØô€Kð ×%Ñ% aÓ(€EØ×#Ñ# AÓ&€Gä�E˜5Ô!Ü�G˜WÕ%r?   c                  ó0  — t        j                  d«      } t        }t        j                  d«      }t        j                  t        |¬«      5   || | |  dd¬«       d d d «       t        j                  d«      }t        j                  t        |¬«      5   || |  | dd¬«       d d d «       t        j                  d«      }t        j                  t        |¬«      5   || | d	| z  dd¬«       d d d «       y # 1 sw Y   ŒšxY w# 1 sw Y   Œ_xY w# 1 sw Y   y xY w)
Nr   z/Negative values in data passed to NMF (input H)r   r   r’   rF   z/Negative values in data passed to NMF (input W)z.Array passed to NMF (input H) is full of zerosr   )r    r!   r   rJ   rK   r"   rG   rH   )r&   ÚnnmfrM   s      r'   Ú(test_non_negative_factorization_checkingrÃ   Ž  sÒ   € ô 	�‰�‹€Aä%€DÜ
�)‰)ÐEÓ
F€CÜ	�‰”z¨Ö	-ÙˆQ��A�2�q˜xÕ(÷ 
.ä
�)‰)ÐEÓ
F€CÜ	�‰”z¨Ö	-ÙˆQ���A�q˜xÕ(÷ 
.ä
�)‰)ÐDÓ
E€CÜ	�‰”z¨Ö	-ÙˆQ��1�q‘5˜! (Õ+÷ 
.Ð	-÷ 
.Ð	-ú÷ 
.Ð	-ú÷ 
.Ð	-ús$   ÁC4ÂD ÃDÃ4C=Ä D	ÄDc                 óÀ  — t        j                  ||«      }|dk(  rt        | |z
  «      dz  S || dk7     }| | dk7     }t        j                  |d|¬«       |dk(  rTt        j                  |t        j
                  ||z  «      z  «      }||j	                  «       | j	                  «       z
  z  }|S |dk(  rR||z  }t        j                  |«      | j                  z
  t        j                  t        j
                  |«      «      z
  }|S ||z  j	                  «       }||dz
  ||z  j	                  «       z  z  }|||||dz
  z  z  j	                  «       z  z  }|||dz
  z  z  }|S )z~Compute the beta-divergence of X and W.H for dense array only.

    Used as a reference for testing nmf._beta_divergence.
    r   r   ç•Ö&è.>©Úoutr   )r    rR   r   ÚmaximumÚsumÚlogÚsize)	rr   r<   r=   ÚbetaÚWHÚWH_XnonzeroÚ	X_nonzeroÚresÚdivs	            r'   Ú_beta_divergence_denserÒ   ¢  sX  € ô
 
�‰��1‹€Bàˆq‚yÜ˜A ™FÓ# aÑ'Ð'à�Q˜!‘V‘*€KØ�!�q‘&‘	€IÜ‡J�Jˆ{˜D kÕ2àˆq‚yÜ�f‰f�Y¤§¡¨	°KÑ(?Ó!@Ñ@ÓAˆØˆr�v‰v‹x˜!Ÿ%™%›'Ñ!Ñ!ˆð €Jð 
�ŠØ˜+Ñ%ˆÜ�f‰f�S‹k˜AŸF™FÑ"¤R§V¡V¬B¯F©F°3«KÓ%8Ñ8ˆð €Jð ˜$‰×#Ñ#Ó%ˆØ��q‘˜R ™XŸN™NÓ,Ñ,Ñ,ˆØˆt�y K°D¸1±HÑ$=Ñ>×CÑCÓEÑEÑEˆØˆt�t˜a‘xÑ Ñ ˆà€Jr?   Úcsr_containerc                 óÊ  — d}d}d}g d¢}t         j                  j                  j                  d«      }|j	                  ||«      }t        j
                  |dd |¬«        | |«      }t        j                  ||dd¬	«      \  }}	|D ]\  }
t        |||	|
«      }t        j                  |||	|
«      }t        j                  |||	|
«      }t        ||d
¬«       t        ||d
¬«       Œ^ y )Né   r+   ro   )rb   ç      à?rA   ç      ø?ç       @g      @r*   r   rÆ   r,   r0   é   r›   )r    r,   r3   r4   r6   Úclipr7   r8   rÒ   Ú_beta_divergencer   )rÓ   r|   r}   r   Úbeta_lossesr:   rr   ÚX_csrr<   r=   rÌ   r^   ÚlossÚloss_csrs                 r'   Útest_beta_divergencerà   À  sØ   € ð €IØ€JØ€LÚ0€Kô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CØ�	‰	�)˜ZÓ(€AÜ‡G�GˆAˆq�$˜AÕÙ˜!Ó€EÜ×Ñ˜q ,°XÈBÔO�D€A€qãˆÜ$ Q¨¨1¨dÓ3ˆÜ×#Ñ# A q¨!¨TÓ2ˆÜ×'Ñ'¨¨q°!°TÓ:ˆä˜C ¨qÕ1Ü˜C °1Ö5ñ r?   c                 ó  — d}d}d}t         j                  j                  j                  d«      }|j	                  ||«      }t        j
                  |dd |¬«        | |«      }t        j                  |j	                  ||«      «      }t        j                  |j	                  ||«      «      }t        j                  |||«      }	t        j                  |||«      }
|j                  «       \  }}t        j                  |	||f   «      j                  «       }t        ||
||f   d¬«       t        |	j                  |j                  «       t        |	j                  |j                  «       t        |	j                   |j                   «       y )Nr+   ro   rE   r*   r   rÆ   r›   )r    r,   r3   r4   r6   rÚ   r5   r7   Ú_special_sparse_dotÚnonzeroÚasarrayÚravelr   r   ÚindicesÚindptrÚshape)rÓ   r|   r}   r   r:   rr   rÝ   r<   r=   ÚWH_saferÍ   ÚiiÚjjÚWH_safe_datas                 r'   Útest_special_sparse_dotrí   Ø  s/  € ð €IØ€JØ€LÜ
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CØ�	‰	�)˜ZÓ(€AÜ‡G�GˆAˆq�$˜AÕÙ˜!Ó€Eä
�‰ˆs�y‰y˜ LÓ1Ó2€AÜ
�‰ˆs�y‰y˜ zÓ2Ó3€Aä×%Ñ% a¨¨EÓ2€GÜ	×	 Ñ	   A qÓ	)€Bð �]‰]‹_�F€BˆÜ—:‘:˜g b¨" f™oÓ.×4Ñ4Ó6€LÜ˜l¨B¨r°2¨v©JÀÕCô �w—‘¨¯©Ô6Ü�w—~‘~ u§|¡|Ô4Ü�w—}‘} e§k¡kÕ2r?   z-ignore::sklearn.exceptions.ConvergenceWarningc                 óî  — d}d}d}d}d}d}t         j                  j                  j                  d«      }|j	                  ||«      }t        j
                  |«      } | |«      }	t        j                  ||dd¬	«      \  }
}d
D ]ð  }|
j                  «       |j                  «       }}t        ||||ddd||||d¬«      \  }}}|
j                  «       |j                  «       }}t        |	|||ddd||||d¬«      \  }}}t        ||d¬«       t        ||d¬«       |dz  }|
j                  «       |j                  «       }}t        |	|||ddd||||d¬«      \  }}}t        ||d¬«       t        ||d¬«       Œò y )NrÕ   r+   ro   rC   rÖ   i9  r,   r*   r0   ©g333333ó¿r   çš™™™™™É?rA   rØ   ç      @r’   Tr   )r1   r¹   r   rB   r   ra   Úl1_ratior2   gH¯¼šò×z>rx   çñhãˆµøä>g-Cëâ6?)r    r,   r3   r4   r6   r5   r7   r8   Úcopyr   r   )rÓ   r|   r}   r   Úalpharò   Ún_iterr:   rr   rÝ   rX   rY   rB   r<   r=   r®   r°   r»   r¯   r±   ÚW3ÚH3s                         r'   Ú%test_nmf_multiplicative_update_sparserù   ô  s§  € ð
 €IØ€JØ€LØ€EØ€HØ€Fô �)‰)×
Ñ
×
&Ñ
& tÓ
,€CØ�	‰	�)˜ZÓ(€AÜ
�‰ˆq‹	€AÙ˜!Ó€EÜ× Ñ   L°xÈbÔQ�F€Bˆã2ˆ	à�w‰w‹y˜"Ÿ'™'›)ˆ1ˆÜ.ØØØØØØØØØØØØô
‰	ˆˆB�ð  �w‰w‹y˜"Ÿ'™'›)ˆ1ˆÜ.ØØØØØØØØØØØØô
‰	ˆˆB�ô 	˜˜B TÕ*Ü˜˜B TÕ*ð 	�VÑˆ	Ø�w‰w‹y˜"Ÿ'™'›)ˆ1ˆÜ.ØØØØØØØØØØØØô
‰	ˆˆB�ô 	˜˜B TÕ*Ü˜˜B TÖ*ñu 3r?   c                 ó¢  ‡	— d}d}dŠ	t         j                  j                  j                  d«      }|j	                  ||«      }t        j
                  |dd |¬«        | |«      }ˆ	fd„}d}d	D ];  }t        j                  t        |¬
«      5   |||«       d d d «        ||dz   |«       Œ= dD ]  } |||«        |||«       Œ y # 1 sw Y   Œ1xY w)Nrf   ro   rE   r*   r   rÆ   c           	      óÚ   •— t        | d‰d|dd¬«      \  }}}t        j                  t        j                  |«      «      rJ ‚t        j                  t        j                  |«      «      rJ ‚y )Nr,   r   r   rv   )r1   r   r   rB   r2   r   )r   r    r9   Úisnan)rr   rB   r<   r=   r»   r   s        €r'   Ú_assert_nmf_no_nanz7test_nmf_negative_beta_loss.<locals>._assert_nmf_no_nanQ  sa   ø€ Ü,ØØØ%ØØØØô
‰ˆˆ1ˆaô —6‘6œ"Ÿ(™( 1›+Ô&Ð&Ð&Ü—6‘6œ"Ÿ(™( 1›+Ô&Ð&Ð&Ð&r?   úAWhen beta_loss <= 0 and X contains zeros, the solver may diverge.)g333333ã¿rb   r   rÅ   )rð   rA   g333333ó?rØ   rñ   )	r    r,   r3   r4   r6   rÚ   r"   rG   rH   )
rÓ   r|   r}   r:   rr   rÝ   rý   rM   rB   r   s
            @r'   Útest_nmf_negative_beta_lossrÿ   D  sÅ   ø€ ð €IØ€JØ€Lä
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CØ�	‰	�)˜ZÓ(€AÜ‡G�GˆAˆq�$˜AÕÙ˜!Ó€Eô'ð N€CÛ ˆ	Ü�]‰]œ:¨SÖ1Ù˜q )Ô,÷ 2á˜1˜t™8 YÕ/ð !ó
 /ˆ	Ù˜1˜iÔ(Ù˜5 )Õ,ñ /÷	 2Ð1ús   Â
CÃC	rB   ç      à¿rb   c                 ó  — t         j                  j                  d«      }|j                  d¬«      }d||dk  <   t	        | d¬«      }d}t        j                  t        |¬«      5   |j                  |«       ddd«       y# 1 sw Y   yxY w)zDCheck that an error is raised if beta_loss < 0 and X contains zeros.r   ©rf   ro   )rË   )rB   r2   rþ   r   N)	r    r,   r4   Únormalr   r"   rG   rH   r$   )rB   r:   rr   r7   rM   s        r'   Ú%test_minibatch_nmf_negative_beta_lossr  i  sm   € ô �)‰)×
Ñ
 Ó
"€CØ�
‰
˜ˆ
Ó€AØ€A€aˆ!�e�Hä
 ¸Ô
;€Cà
M€CÜ	�‰”z¨Ö	-Øˆ�‰�Œ
÷ 
.×	-Ñ	-ús   Á$B Â B	c                 óÔ  — d}d}d}t         j                  j                  j                  d«      }t        j                  |j                  ||«      «      }d} | d
|d|ddœ|¤Ž} | d
|d|ddœ|¤Ž}	|j                  |«      }
|	j                  |«      }|j                  }|	j                  }t        j                  t         j                  «      j                  }|
|
|k     j                  }|||k     j                  }|||k     j                  }|||k     j                  }||kD  sJ ‚||kD  sJ ‚d} | d
|d|ddœ|¤Ž} | d
|d|ddœ|¤Ž}	|j                  |«      }
|	j                  |«      }|j                  }|	j                  }t        j                  |«      d	z  t        j                  |«      d	z  z   t        j                  |
«      d	z  t        j                  |«      d	z  z   kD  sJ ‚y )Nrf   ro   rE   r*   rA   rÖ   )r   ra   rò   r2   rb   rØ   r   )r    r,   r3   r4   r5   r6   ri   rj   ÚfinfoÚfloat64ÚepsrË   r   rQ   )r   r   r|   r}   r   r:   rr   rò   Úregulrk   ÚW_regulÚW_modelÚH_regulÚH_modelr  ÚW_regul_n_zerosÚW_model_n_zerosÚH_regul_n_zerosÚH_model_n_zeross                      r'   Útest_nmf_regularizationr  w  s?  € ð €IØ€JØ€LÜ
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜ JÓ/Ó0€Að €HÙð Ø!ØØØñ	ð
 ñ€Eñ ð Ø!ØØØñ	ð
 ñ€Eð ×!Ñ! !Ó$€GØ×!Ñ! !Ó$€Gà×Ñ€GØ×Ñ€Gä
�(‰(”2—:‘:Ó
×
"Ñ
"€CØ˜g¨™nÑ-×2Ñ2€OØ˜g¨™nÑ-×2Ñ2€OØ˜g¨™nÑ-×2Ñ2€OØ˜g¨™nÑ-×2Ñ2€Oà˜_Ò,Ð,Ð,Ø˜_Ò,Ð,Ð,ð €HÙð Ø!ØØØñ	ð
 ñ€Eñ ð Ø!ØØØñ	ð
 ñ€Eð ×!Ñ! !Ó$€GØ×!Ñ! !Ó$€Gà×Ñ€GØ×Ñ€Gä�K‰K˜Ó  SÑ(¬F¯K©K¸Ó,@ÀSÑ+HÑHÜ�‰�GÓØ	ñLä—‘˜GÓ$¨Ñ,ñL-ò -ð -ñ -r?   c                 óæ  — d}d}d}d}d}d}t         j                  j                  j                  d«      }|j	                  ||«      }t        j
                  ||«       t        j                  ||dd¬	«      \  }	}
d
D ]ó  }| dk7  r|dk7  rŒ|	j                  «       |
j                  «       }}d }t        d«      D ]¶  }t        ||||d|d|| ||ddd¬«      \  }}}t        j                  ||||«      ||z  |z  |j                  «       z  z   ||z  |z  |j                  «       z  z   |d|z
  z  |z  |dz  j                  «       z  z   |d|z
  z  |z  |dz  j                  «       z  z   }|�||kD  sJ ‚|}Œ¸ Œõ y )NrÕ   ru   r+   rC   rÖ   rb   r*   r,   r0   rï   r   r   r¦   r’   r   r   T)rB   r1   r   r   ra   r   rD   rò   Úverboser2   r¹   )r    r,   r3   r4   r6   r5   r7   r8   rô   r{   r   rÛ   rÉ   )r   r|   r}   r   rõ   rò   rD   r:   rr   rX   rY   rB   r<   r=   Úprevious_lossr»   rÞ   s                    r'   Útest_nmf_decreasingr  À  s±  € ð €IØ€JØ€LØ€EØ€HØ
€Cô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CØ�	‰	�)˜ZÓ(€AÜ‡F�Fˆ1ˆa„LÜ× Ñ   L°xÈbÔQ�F€Bˆã2ˆ	Ø�TŠ>˜i¨1šnàØ�w‰w‹y˜"Ÿ'™'›)ˆ1ˆØˆÜ�r–ˆAä0ØØØØ#ØØ)ØØØØØ!ØØØô‰GˆAˆq�!ô$ ×$Ñ$ Q¨¨1¨iÓ8Ø˜(Ñ" ZÑ/°!·%±%³'Ñ9ñ:à˜(Ñ" YÑ.°·±³Ñ8ñ9ð ˜1˜x™<Ñ(¨:Ñ5¸¸A¹¿
¹
»ÑDñEð ˜1˜x™<Ñ(¨9Ñ4¸¸1¹·z±z³|ÑCñ	Dð ð Ð(Ø$ tÒ+Ð+Ð+Ø ‰Mñ9 ñ 3r?   c                  óÈ  — t         j                  j                  d«      } d\  }}}t        j                  | j	                  ||«      «      dz  }t        j                  | j	                  ||«      «      dz  }t        j                  | j	                  ||«      «      }d|d<   t        j                  |||d¬«      }d|d<   t        j                  |||d¬«      }t        ||«       y )Nr   )r+   r   r   r+   )r   r   rA   )rÌ   g       )r    r,   r4   r5   r6   r7   rÛ   r   )	r:   r|   r}   r   rr   r<   r=   r^   rÐ   s	            r'   Útest_nmf_underflowr  ö  s¿   € ä
�)‰)×
Ñ
 Ó
"€CØ*2Ñ'€Iˆz˜<Ü
�‰ˆs�y‰y˜ JÓ/Ó0°2Ñ5€AÜ
�‰ˆs�y‰y˜ LÓ1Ó2°RÑ7€AÜ
�‰ˆs�y‰y˜ zÓ2Ó3€Aà€A€d�GÜ
×
Ñ
˜q ! Q¨SÔ
1€CØ€A€d�GÜ
×
Ñ
˜q ! Q¨SÔ
1€CÜ˜˜SÕ!r?   zdtype_in, dtype_outc                 ó¤  — t         j                  j                  d«      j                  dd«      j	                  |d¬«      }t        j
                  ||¬«        | d
ddddd	œ|¤Ž} |j                  |«      j                  |«      j                  |k(  sJ ‚ |j                  |«      j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚y )Nr   rÕ   ru   F)rô   rÆ   rA   r¢   )ra   rc   rD   r2   r   )r    r,   r4   r6   Úastyper5   r$   rI   Údtyperi   rj   )r   r   Údtype_inÚ	dtype_outrr   r7   s         r'   Útest_nmf_dtype_matchr    sÌ   € ô 	�	‰	×Ñ˜aÓ ×&Ñ& r¨2Ó.×5Ñ5°hÀUÐ5ÓK€AÜ‡F�Fˆ1�!Õá
ð ØØØØñ	ð
 ñ€Cð ˆ3�7‰7�1‹:×Ñ Ó"×(Ñ(¨IÒ5Ð5Ð5Øˆ3×Ñ˜QÓ×%Ñ%¨Ò2Ð2Ð2Ø�?‰?× Ñ  IÒ-Ð-Ñ-r?   c                 óV  — t         j                  j                  d«      j                  dd«      }t        j                  ||¬«        | d	dddœ|¤Ž}|j                  |j                  t         j                  «      «      } | d	dddœ|¤Ž}|j                  |«      }t        ||d¬«       y )
Nr   é2   rÙ   rÆ   r�   )r2   rD   ró   rx   r   )	r    r,   r4   r6   r5   ri   r  Úfloat32r   )r   r   rr   Únmf32ÚW32Únmf64ÚW64s          r'   Ú$test_nmf_float32_float64_consistencyr&  $  s”   € ô 	�	‰	×Ñ˜aÓ ×&Ñ& r¨1Ó-€AÜ‡F�Fˆ1�!ÕÙÐ9 1¨$Ñ9°&Ñ9€EØ
×
Ñ
˜aŸh™h¤r§z¡zÓ2Ó
3€CÙÐ9 1¨$Ñ9°&Ñ9€EØ
×
Ñ
˜aÓ
 €Cä�C˜ 4Ö(r?   c                 óô  — t         j                  j                  d«      }|j                  d«      }|j                  d«      j	                  t         j
                  «      }|j                  d«      }t        j                  t        d¬«      5   | d¬«      j                  |||¬«       d d d «       t        j                  t        d¬«      5  t        ||d	¬
«       d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY w)Nr   )rÕ   ru   )ru   ru   zshould have the same dtype as Xr   r’   rF   ©r=   r<   F)r=   r¹   )r    r,   r4   Úrandom_sampler  r!  r"   rG   Ú	TypeErrorr$   r   )r   r:   rr   r=   r<   s        r'   Ú test_nmf_custom_init_dtype_errorr+  4  sÀ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#€AØ×Ñ˜(Ó#×*Ñ*¬2¯:©:Ó6€AØ×Ñ˜(Ó#€Aä	�‰”yÐ(IÖ	JÙ�xÔ ×$Ñ$ Q¨!¨qÐ$Ô1÷ 
Kô 
�‰”yÐ(IÖ	JÜ" 1¨°EÕ:÷ 
KÐ	J÷ 
KÐ	Jú÷ 
KÐ	Jús   ÂC"Ã
C.Ã"C+Ã.C7)r   r   rÖ   r   r×   r   rñ   c           	      ó\  — t         j                  j                  j                  d«      }t        j                  |j                  dd«      «      }t        d| ddd¬«      }t        d| ddd |j                  d   d¬«      } |j                  |«      }|j                  |«      }t        ||«       y )	Nr*   é0   ro   r   r   )r   rB   r   r2   rD   rb   )r   rB   r2   rD   Úmax_no_improvementrw   Úforget_factor)r    r,   r3   r4   r5   r6   r   r   rè   ri   r   )rB   r:   rr   r7   Úmbnmfr<   ÚmbWs          r'   Ú!test_nmf_minibatchnmf_equivalencer2  D  s§   € ô �)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜QÓÓ €Aä
ØØØØØô€Cô ØØØØØØ—7‘7˜1‘:Øô€Eð 	ˆ×Ñ˜!Ó€AØ
×
Ñ
˜aÓ
 €CÜ�A�sÕr?   c            
      ó>  — t         j                  j                  j                  d«      } t        j                  | j                  dd«      «      }d}d}d}t        |dd||dd d¬	«      }t        |dd¬
«      }t        j                  ||dd¬
«      \  }}|j                  |||¬«       t        |«      D ]/  }	t        |«      D ]  }
|j                  ||
|
|z    |d | |¬«       Œ! Œ1 |j                  |j                  k(  sJ ‚t        |j                  |j                  «       y )Nr*   rª   ro   r+   r   r’   r   F)r   r1   r2   r   rw   rD   r.  rŽ   ©r   r1   r2   r,   r”   )r    r,   r3   r4   r5   r6   r   r7   r8   r$   r{   Úpartial_fitÚn_steps_r   rj   )r:   rr   r   rw   r   Úmbnmf1Úmbnmf2r<   r=   Úir€   s              r'   Útest_minibatch_nmf_partial_fitr:  `  s  € ä
�)‰)×
Ñ
×
&Ñ
& rÓ
*€CÜ
�‰ˆs�y‰y˜˜aÓ Ó!€Aà€LØ€JØ€HäØ!ØØØØØØØô	€Fô  |¸(ÐQRÔS€Fô ×ÑØ	˜¨8À!ô�D€A€qð ‡J�Jˆq�A˜€JÔÜ�8Ž_ˆÜ�zÖ"ˆAØ×Ñ˜q  Q¨¡^Ð4¸¸+¸:¸È!ÐÕLñ #ð ð �?‰?˜fŸo™oÒ-Ð-Ð-Ü�F×&Ñ&¨×(:Ñ(:Õ;r?   c                  ó:  — t         j                  j                  d«      } t        j                  | j	                  dd«      «      }t        d¬«      j                  |«      } |j                  «       }t        t        d«      D �cg c]  }d|› �‘Œ	 c}|«       yc c}w )z Check feature names out for NMF.r   r+   r‘   rE   )r   r7   N)
r    r,   r4   r5   r6   r   r$   Úget_feature_names_outr   r{   )r2   rr   r7   Únamesr9  s        r'   Útest_feature_names_outr>  ƒ  s|   € ä—9‘9×(Ñ(¨Ó+€LÜ
�‰ˆ|×!Ñ! " aÓ(Ó)€AÜ
˜1Ô
×
!Ñ
! !Ó
$€Cà%ˆC×%Ñ%Ó'€EÜ¬5°¬8Ó4©8 a˜#˜a˜Sš	¨8Ñ4°eÕ<ùÒ4s   ÂBc                  ó  — t         j                  j                  d«      j                  d«      } t	        ddd¬«      }t
        j                  }t        «       t
        _        	  |j                  | «       |t
        _        y # |t
        _        w xY w)Nr   )rª   r+   r¢   r   )rD   r2   r  )	r    r,   r4   r)  r   ÚsysÚstdoutr   r$   )r&   r7   Ú
old_stdouts      r'   Útest_minibatch_nmf_verboserC  �  sb   € ä
�	‰	×Ñ˜aÓ ×.Ñ.¨yÓ9€AÜ
˜4¨a¸Ô
;€CÜ—‘€JÜ“„C„Jð Øˆ�‰�Œ
àŒ�
ø�ZŒ�
ús   Á!A? Á?Bc                 ó$  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      } | dddd¬«      }|j	                  |||¬	«       |j
                  |j                  d   k(  sJ ‚y )
Nr   r  ©rf   r   ©r   ro   r   r’   r‡   r“   r”   )r    r,   r4   r)  ri   Ú_n_componentsrè   )r   r:   rr   r<   r=   Úests         r'   Útest_nmf_n_components_autorI  ™  s‘   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ
ØØØØô	€Cð ×Ñ�a˜1 ÐÔ"Ø×Ñ §¡¨¡
Ò*Ð*Ñ*r?   c                  ó<  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }| j                  d«      }t	        |||dd¬«      \  }}}|j
                  |j
                  k(  sJ ‚|j
                  |j
                  k(  sJ ‚y )Nr   r  rE  rF  r’   r   )r<   r=   r1   r   )r    r,   r4   r)  r   rè   )r:   rr   r˜   r—   r<   r=   r»   s          r'   Ú5test_nmf_non_negative_factorization_n_components_autorK  «  s‘   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜vÓ&€FØ×Ñ˜vÓ&€FÜ(Ø	ˆV�v H¸6ô�G€A€qˆ!ð �7‰7�f—l‘lÒ"Ð"Ð"Ø�7‰7�f—l‘lÒ"Ð"Ñ"r?   c                  ó  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||dd¬«      \  }}}t        ||«       |j                  |j                  d   |j                  d   fk(  sJ ‚y )Nr   r  rF  r   F)r=   r   r¹   )r    r,   r4   r)  r   r   rè   )r:   rr   r�   r<   r=   r»   s         r'   Ú&test_nmf_n_components_auto_no_h_updaterM  ¹  s„   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜vÓ&€FÜ(Ø	ˆV &°5ô�G€A€qˆ!ô �A�vÔØ�7‰7�q—w‘w˜q‘z 6§<¡<°¡?Ð3Ò3Ð3Ñ3r?   c                  ó&  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }| j                  d«      }t	        j
                  t        d¬«      5  t        ||dd¬	«       d d d «       t	        j
                  t        d¬«      5  t        |||dd¬
«       d d d «       t	        j
                  t        d¬«      5  t        |||dd¬
«       d d d «       y # 1 sw Y   ŒrxY w# 1 sw Y   ŒJxY w# 1 sw Y   y xY w)Nr   r  rE  rF  z0When init!='custom', provided W or H are ignoredr   Tr   )r=   r¹   r   )r<   r=   r¹   r   z8When update_H=False, the provided initial W is not used.F)r    r,   r4   r)  r"   r#   ÚRuntimeWarningr   )r:   rr   r˜   r—   s       r'   Útest_nmf_w_h_not_used_warningrP  Ç  sñ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜vÓ&€FØ×Ñ˜vÓ&€FÜ	�‰ÜØ@ö
ô 	# 1¨¸ÈFÕS÷	
ô 
�‰ÜØ@ö
ô 	#Ø�˜6¨D¸võ	
÷	
ô 
�‰ÜÐXö
ô
 	#Ø�˜6¨EÀõ	
÷
ð 
÷
ð 
ú÷
ð 
ú÷
ð 
ús$   Á.C/Â!C;ÃDÃ/C8Ã;DÄDc                  óò  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ddd¬«      }t        j                  t        d¬«      5   |j                  ||| j                  d	«      ¬
«       d d d «       t        j                  t        d¬«      5   |j                  ||| j                  d«      ¬
«       d d d «       y # 1 sw Y   ŒRxY w# 1 sw Y   y xY w)Nr   r  rF  r   r’   r4  z'Array with wrong first dimension passedr   )ro   r   r(  z(Array with wrong second dimension passed)rf   rE   )	r    r,   r4   r)  r   r"   rG   rH   r$   )r:   rr   r=   r7   s       r'   Ú test_nmf_custom_init_shape_errorrR  æ  sÃ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ
˜1 8¸!Ô
<€Cä	�‰”zÐ)RÖ	SØˆ�‰��Q˜#×+Ñ+¨FÓ3Õ4÷ 
Tô 
�‰”zÐ)SÖ	TØˆ�‰��Q˜#×+Ñ+¨FÓ3Õ4÷ 
UÐ	T÷ 
TÐ	Sú÷ 
UÐ	Tús   Á+%C!Â3%C-Ã!C*Ã-C6)KrJ   r@  Úior   Únumpyr    r"   Úscipyr   Úsklearn.baser   Úsklearn.decompositionr   r   r   r	   r7   Úsklearn.exceptionsr
   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   r   ÚmarkÚparametrizer(   r>   ÚfilterwarningsrO   rV   r`   rm   rs   r…   r‹   r�   r™   rŸ   r¤   r§   r²   r·   rÀ   rÃ   rÒ   rà   rí   rù   rÿ   r  r  r  r  r!  r  Úint32Úint64r  r&  r+  r2  r:  r>  rC  rI  rK  rM  rP  rR  r   r?   r'   Ú<module>ra     s;  ðÛ 	Û 
Ý ã Û Ý å ß OÑ OÝ -Ý 1÷ó õ /ß >ð ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóñDó	ðDò4ð ‡�×Ñðóñ,ó	ð,ò>	ò:ð ‡�×Ñðóð ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóð ‡�×Ñ˜Ð!RÓSØ‡�×Ñ˜ JÓ/Ø‡�×Ñ˜Ð$6Ó7ñEó 8ó 0ó Tó	ó	ðEð ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóñ1ó	ð1ò-'ð` ‡�×Ñ˜ D¨$ <Ó0ñ&ó 1ð&ò"ð  ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóñó	ðð  ‡�×Ñ˜ <Ó0ñ3ó 1ð3ò 4ð  ‡�×Ñ˜ s¨LÐ&9Ó:ñ@ó ;ð@ð ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóð ‡�×ÑÐ+¨^¸nÑ-LÓMØ‡�×Ñ˜ JÓ/Ø‡�×Ñ˜Ð$6Ó7ñó 8ó 0ó Nó	ðð8 ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóð ‡�×Ñ˜¨.Ó9ñ
/ó :ó	ð

/ð ‡�×Ñ˜ (¨HÐ!5Ó6Ø‡�×Ñ˜ <Ó0Ø‡�×Ñ˜ JÓ/Ø‡�×Ñ˜Ð$6Ó7ñ,&ó 8ó 0ó 1ó 7ð,&ò^,ò(ð< ‡�×Ñ˜¨.Ó9ñ6ó :ð6ð. ‡�×Ñ˜¨.Ó9ñ3ó :ð3ð6 ‡�×ÑÐKÓLØ‡�×Ñ˜¨.Ó9ñK+ó :ó MðK+ð\ ‡�×Ñ˜¨.Ó9ñ!-ó :ð!-ðH ‡�×Ñ˜ t¨S kÓ2ñ
ó 3ð
ð ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóñB-ó	ðB-ðJ ‡�×ÑÐKÓLØ‡�×Ñ˜ <Ó0ñ1!ó 1ó Mð1!òh"ð ‡�×ÑØà	�‰�R—Z‘ZÐ Ø	�‰�R—Z‘ZÐ Ø	�‰�2—:‘:ÐØ	�‰�2—:‘:Ðð	óð ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóñ.ó	óð.ð$ ‡�×ÑØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJóñ	)ó	ð	)ð ‡�×Ñ˜ s¨LÐ&9Ó:ñ;ó ;ð;ð ‡�×Ñ˜Ò&DÓEñó Fðò6 <òF=ò	 ð ‡�×Ñ˜ s¨LÐ&9Ó:ñ+ó ;ð+ò"#ò4ò
ó>5r?   