Ë
    ÷Q(h©=  ã                   óÞ  — d Z ddlZddl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 ddlmZ ddlmZ ddlmZmZ d!d„Zd	„ Zd
„ Zd„ Zej0                  j3                  dddg«      d„ «       Zd„ Zd„ Zej0                  j3                  dddg«      d„ «       Zd„ Zej0                  j?                  d«      ej0                  j3                  dg d¢«      d„ «       «       Z d„ Z!d„ Z"ej0                  j3                  dg d¢«      ej0                  j3                  dddg«      ej0                  j3                  dddg«      d„ «       «       «       Z#ej0                  j3                  dddg«      d„ «       Z$d „ Z%y)"z
Test the fastica algorithm.
é    N)Ústats)ÚPCAÚFastICAÚfastica)Ú_gs_decorrelation)ÚConvergenceWarning)Úassert_allcloseÚignore_warningsc                 ó„   — t        j                  | |«      } | | j                  d¬«      z  } | | j                  d¬«      z  } y)a  Centers and norms x **in place**

    Parameters
    -----------
    x: ndarray
        Array with an axis of observations (statistical units) measured on
        random variables.
    axis: int, optional
        Axis along which the mean and variance are calculated.
    r   ©ÚaxisN)ÚnpÚrollaxisÚmeanÚstd)Úxr   s     úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/decomposition/tests/test_fastica.pyÚcenter_and_normr      s<   € ô 	�‰�A�tÓ€AØˆ�‰�Qˆ‹Ñ€AØˆ�‰�Aˆ‹Ñ�Aó    c                  óÆ  — t         j                  j                  d«      } t         j                  j	                  | j                  dd«      «      \  }}}| j                  d«      }t        ||d«       |dz  j                  «       dk  sJ ‚| j                  d«      }t        ||d«      }t        j                  ||j                  «      }|d d dz  j                  «       dk  sJ ‚y )Nr   é
   é   g»½×Ùß|Û=é   )
r   ÚrandomÚRandomStateÚlinalgÚsvdÚrandnr   ÚsumÚdotÚT)ÚrngÚWÚ_ÚwÚuÚtmps         r   Útest_gsr(   #   s»   € ô �)‰)×
Ñ
 Ó
"€CÜ�i‰i�m‰m˜CŸI™I b¨"Ó-Ó.�G€A€qˆ!Ø�	‰	�"‹€AÜ�a˜˜BÔØˆq‰D�:‰:‹<˜'Ò!Ð!Ð!Ø�	‰	�"‹€AÜ˜!˜Q Ó"€AÜ
�&‰&��A—C‘C‹.€CØ��ˆG�q‰L×ÑÓ 'Ò)Ð)Ñ)r   c                 óš  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        dddd¬«      j                  |«      }|j                  j                  | k(  sJ ‚|j                  j                  | k(  sJ ‚|j                  j                  | k(  sJ ‚|j                  j                  | k(  sJ ‚y )	Nr   ©éd   r   F©Úcopyr   éè  úunit-variance©Ún_componentsÚmax_iterÚwhitenÚrandom_state)r   r   r   Úrandom_sampleÚastyper   ÚfitÚcomponents_ÚdtypeÚmixing_Úmean_Ú
whitening_)Úglobal_dtyper"   ÚXÚficas       r   Útest_fastica_attributes_dtypesr@   1   s¹   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AÜØ ¨oÈAôç	�cˆ!ƒfð 	ð ×Ñ×!Ñ! \Ò1Ð1Ð1Ø�<‰<×Ñ Ò-Ð-Ð-Ø�:‰:×Ñ˜|Ò+Ð+Ð+Ø�?‰?× Ñ  LÒ0Ð0Ñ0r   c                 ó  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |dd|¬«      \  }}}|j                  | k(  sJ ‚|j                  | k(  sJ ‚|j                  | k(  sJ ‚y )Nr   r*   Fr,   r.   r/   )r2   r3   r4   )r   r   r   r5   r6   r   r9   )r=   r"   r>   Úk_r:   Ús_s         r   Útest_fastica_return_dtypesrD   =   s‡   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AÜØ	�D ¸sô�O€Bˆ�ð �8‰8�|Ò#Ð#Ð#Ø�=‰=˜LÒ(Ð(Ð(Ø�8‰8�|Ò#Ð#Ñ#r   Ú	add_noiseTFc           	      óÔ  — |dk(  rB|t         j                  k(  r/| s-t        j                  d«      dk(  rt	        j
                  d«       t         j                  j                  |«      }d}dt        j                  t        j                  dd|«      «      z  dkD  d	z
  }t        j                  j                  d	||¬
«      }t         j                  ||f   j                  }t        |«       |j!                  |«      }|\  }}d}t        j"                  t        j$                  |«      t        j                  |«      gt        j                  |«      t        j$                  |«       gg«      }	|	j!                  |«      }	t        j&                  |	|«      }
| r|
d|j)                  dd«      z  z  }
t        |
«       d„ }ddg}ddd|g}g d¢}t+        j,                  |||«      D �]‹  \  }}}|rht/        |
j                  ||||¬«      \  }}}t	        j0                  t2        «      5  t/        |
j                  t         j4                  ||¬«       d d d «       n{t7        dd|¬«      }|j9                  |
j                  «      }t/        |||d|¬«      \  }}}t	        j0                  t2        «      5  t/        |t         j4                  |¬«       d d d «       |j                  }|rM|t         j                  k(  rdnd}t;        t        j&                  t        j&                  ||«      |
«      ||¬«       t        |«       |\  }}t=        t        j&                  ||«      «      t=        t        j&                  ||«      «      kD  r|\  }}|t        j>                  t        j&                  ||«      «      z  }|t        j>                  t        j&                  ||«      «      z  }| sLt;        t        j&                  ||«      |z  d	d¬«       t;        t        j&                  ||«      |z  d	d¬«       �ŒBt;        t        j&                  ||«      |z  d	d¬«       t;        t        j&                  ||«      |z  d	d¬«       �ŒŽ t/        |
j                  |¬«      \  }}}tA        |||¬«      }|j9                  |
j                  «      }|jB                  jD                  dk(  sJ ‚|jD                  d k(  sJ ‚t;        ||«       t        jF                  t        j<                  |«      «      |t         j                  k(  rdnd!z  }t;        ||jI                  |
j                  «      |¬«       |jJ                  jD                  dk(  sJ ‚tA        t         j4                  |¬«      }t	        j0                  t2        «      5  |jM                  |
j                  «       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)"Né   ÚDISTRIBÚubuntuz®FastICA instability with Ubuntu Atlas build with float32 global_dtype. For more details, see https://github.com/scikit-learn/scikit-learn/issues/24131#issuecomment-1208091119r.   r   r   r+   é   ©Úsizer4   g333333ã?çš™™™™™¹?c                 ó<   — | dz  d| dz  z  j                  d¬«      fS )Né   r   éÿÿÿÿr   )r   )r   s    r   Úg_testz#test_fastica_simple.<locals>.g_testm   s$   € Ø�!‰t�a˜!˜Q™$‘h—_‘_¨"�_Ó-Ð-Ð-r   ÚparallelÚ	deflationÚlogcoshÚexpÚcube©úarbitrary-variancer/   F)Úfunr3   Ú	algorithmr4   )rY   r3   rZ   T©r1   r3   r4   F)rY   rZ   r3   r4   )rY   rZ   gñhãˆµøä>©Úatolg{®Gáz„?)rY   rZ   r4   ©r   r   ©r.   r   gH¯¼šò×z>)'r   Úfloat32ÚosÚgetenvÚpytestÚxfailr   r   ÚsinÚlinspacer   ÚtÚrvsÚc_r!   r   r6   ÚarrayÚcosr    r   Ú	itertoolsÚproductr   ÚraisesÚ
ValueErrorÚtanhr   Úfit_transformr	   ÚabsÚsignr   r8   ÚshapeÚmaxÚ	transformr:   r7   )rE   Úglobal_random_seedr=   r"   Ú	n_samplesÚs1Ús2ÚsÚphiÚmixingÚmrQ   ÚalgosÚnlsÚ	whiteningÚalgoÚnlr3   rB   r:   rC   Úpcar>   r]   Ús1_Ús2_r$   Úsources_funÚicaÚsourcess                                 r   Útest_fastica_simplerŠ   H   sÉ  € ð 	˜bÒ ØœBŸJ™JÒ&ÙÜ�I‰I�iÓ  HÒ,ä�‰ð`ô	
ô �)‰)×
Ñ
Ð 2Ó
3€CØ€Ià
Œb�f‰f”R—[‘[  C¨Ó3Ó4Ñ
4°qÑ
8¸AÑ	=€BÜ	�‰�‰�Q˜YÐ5GˆÓ	H€BÜ
�‰ˆb�"ˆf‰�‰€AÜ�AÔØ	�‰�Ó€AØ�F€Bˆð €CÜ�X‰XœŸ™˜s›¤R§V¡V¨C£[Ð1´B·F±F¸3³KÄ"Ç&Á&ÈÃ+ÀÐ3NÐOÓP€FØ�]‰]˜<Ó(€FÜ
�‰ˆv�qÓ€AáØ	ˆS�3—9‘9˜Q Ó%Ñ%Ñ%ˆä�AÔò.ð ˜Ð%€EØ�e˜V VÐ
,€CÚ>€IÜ%×-Ñ-¨e°S¸)ÓDó )GÑˆˆb�&ÙÜ%Ø—‘˜ F°dÈô‰OˆB�˜ô —‘œzÓ*ñ IÜ˜Ÿ™¤§¡°À4ÕH÷Ið Iô  1¨TÀÔDˆCØ×!Ñ! !§#¡#Ó&ˆAÜ%Ø�r T°%Àcô‰OˆB�˜ô —‘œzÓ*ñ 8Ü˜œrŸw™w°$Õ7÷8à�T‰Tˆáð (¬2¯:©:Ò5‘4¸1ˆDÜœBŸF™F¤2§6¡6¨'°2Ó#6¸Ó:¸BÀTÕJä˜ÔØ‰ˆˆSô Œr�v‰v�c˜2‹Ó¤#¤b§f¡f¨S°"£oÓ"6Ò6Ø‰HˆC�ØŒr�w‰w”r—v‘v˜c 2“Ó'Ñ'ˆØŒr�w‰w”r—v‘v˜c 2“Ó'Ñ'ˆñ ÜœBŸF™F 3¨›O¨iÑ7¸ÀÕFÜœBŸF™F 3¨›O¨iÑ7¸À×FäœBŸF™F 3¨›O¨iÑ7¸ÀÕFÜœBŸF™F 3¨›O¨iÑ7¸À×FðS)GôX  Ø	�‰�˜tÐ2DôÑ€A€qˆ+ô �b DÐ7IÔ
J€CØ×Ñ §¡Ó$€GØ�?‰?× Ñ  FÒ*Ð*Ð*Ø�=‰=˜IÒ%Ð%Ð%ä�K Ô)ô �6‰6”"—&‘&˜“/Ó"¨l¼b¿j¹jÒ.H¡dÈdÑS€DÜ�G˜SŸ]™]¨1¯3©3Ó/°dÕ;à�;‰;×Ñ Ò&Ð&Ð&ä
”b—g‘g¨Ô
.€CÜ	�‰”zÓ	"ñ Ø�‰�—‘Œ÷ð ÷qIñ Iú÷8ñ 8ú÷`ð ús$   È(WÊ$WÖW×W	×W	×W'c                  óÒ   — ddgddgg} t        ddd¬«      }d}t        j                  t        |¬«      5  |j	                  | «       d d d «       t        |d«      sJ ‚y # 1 sw Y   ŒxY w)Nr   rJ   Fr[   z(Ignoring n_components with whiten=False.©Úmatchr:   )r   rc   ÚwarnsÚUserWarningr7   Úhasattr)r~   rˆ   Úwarn_msgs      r   Útest_fastica_nowhitenr’   ´   sg   € Ø
ˆQˆ�!�Q�Ð€Aô ˜q¨¸QÔ
?€CØ9€HÜ	�‰”k¨Ô	2ñ Ø�‰�Œ
÷ä�3˜	Ô"Ð"Ñ"÷ð ús   ´AÁA&c                  ón  — t         j                  j                  d«      } d}t        j                  dd|«      }t        j                  |«      }t        j
                  t        j                  t         j                  |z  «      «      }t         j                  ||f   j                  }t        |«       | j                  dd«      }t        j                  ||«      }d}t        j                  t        |¬«      5  t        dd| dd	¬
«      }	|	j!                  |j                  «       d d d «       y # 1 sw Y   y xY w)Nr   r.   r+   é   r   z\FastICA did not converge. Consider increasing tolerance or the maximum number of iterations.rŒ   rR   ç        )rZ   r1   r4   r2   Útol)r   r   r   rf   re   ÚceilÚpiri   r!   r   r   r    rc   rŽ   r   r   r7   )
r"   rx   rg   ry   rz   r{   r}   r~   r‘   rˆ   s
             r   Útest_fastica_convergence_failr™   ¿   sð   € ô �)‰)×
Ñ
 Ó
"€Cà€Iä
�‰�A�s˜IÓ&€AÜ	�‰�‹€BÜ	�‰”—‘œŸ™ ™	Ó"Ó	#€BÜ
�‰ˆb�"ˆf‰�‰€AÜ�AÔð �Y‰Y�q˜!‹_€FÜ
�‰ˆv�qÓ€Að	/ð ô 
�‰Ô(°Ô	9ñ ÜØ ¨q¸sÈQÐTWô
ˆð 	�‰�—‘Œ÷	÷ ñ ús   Ã6,D+Ä+D4c           	      ó´  — t         j                  j                  d«      }d}t        j                  dd|«      }t        j                  |«      }t        j
                  t        j                  t         j                  |z  «      «      }t         j                  ||f   j                  }t        |«       |\  }}|j                  dd«      }t        j                  ||«      }| r|d|j                  d|«      z  z  }t        |«       t        |j                  dd|¬«      \  }	}
}|j                  }t        |t        j                  t        j                  |
|	«      |«      «       t        |«       |\  }}t        t        j                  ||«      «      t        t        j                  ||«      «      kD  r|\  }}|t        j                  t        j                  ||«      «      z  }|t        j                  t        j                  ||«      «      z  }| sKt        t        j                  ||«      |z  d	d
¬«       t        t        j                  ||«      |z  d	d
¬«       y y )Nr   r.   r+   r”   r   rM   r/   r[   rJ   gü©ñÒMbP?r\   )r   r   r   rf   re   r—   r˜   ri   r!   r   r   r    r   r	   rr   rs   )rE   r"   rx   rg   ry   rz   r{   r}   r~   rB   r:   rC   r…   r†   s                 r   Útest_non_square_fasticar›   Ý   sÍ  € ô �)‰)×
Ñ
 Ó
"€Cà€Iä
�‰�A�s˜IÓ&€AÜ	�‰�‹€BÜ	�‰”—‘œŸ™ ™	Ó"Ó	#€BÜ
�‰ˆb�"ˆf‰�‰€AÜ�AÔØ�F€Bˆð �Y‰Y�q˜!‹_€FÜ
�‰ˆv�qÓ€AáØ	ˆS�3—9‘9˜Q 	Ó*Ñ*Ñ*ˆä�AÔäØ	�‰˜! OÀ#ô�O€Bˆ�ð 
�‰€Bô �BœŸ™œrŸv™v g¨rÓ2°AÓ6Ô7ä�BÔØ�H€Cˆô Œ2�6‰6�#�r‹?Óœc¤"§&¡&¨¨b£/Ó2Ò2Ø‰ˆˆSØŒ2�7‰7”2—6‘6˜#˜r“?Ó#Ñ#€CØŒ2�7‰7”2—6‘6˜#˜r“?Ó#Ñ#€Cñ ÜœŸ™˜s B›¨)Ñ3°Q¸TÕBÜœŸ™˜s B›¨)Ñ3°Q¸TÖBð r   c                 ó  — t         j                  j                  | «      }|j                  d«      j	                  |«      }d}ddgddgfD �]Ÿ  \  }}|�|n|j
                  d   }t        |||d¬	«      }t        j                  «       5  t        j                  d
t        «       t        j                  dt        «       |j                  |«      }	ddd«       |j                  j
                  |dfk(  sJ ‚	j
                  |j
                  d   |fk(  sJ ‚t        |||d¬	«      }
t        j                  «       5  t        j                  d
t        «       t        j                  dt        «       |
j                  |«       ddd«       |
j                  j
                  |dfk(  sJ ‚|
j                  |«      }|r't        j                   |«      j#                  «       dz  }nd}t%        |	||¬«       �Œ¢ y# 1 sw Y   �Œ#xY w# 1 sw Y   Œ�xY w)z¶Test unit variance of transformed data using FastICA algorithm.

    Check that `fit_transform` gives the same result as applying
    `fit` and then `transform`.

    Bug #13056
    r*   i,  r/   r   FNrJ   r   r0   ÚerrorÚignorer   g    €„.Ar•   r\   )r   r   r   r5   r6   rt   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   rq   r8   r7   rv   rr   r   r	   )rw   r=   r"   r>   r2   r3   r1   Ún_components_rˆ   ÚXtÚica2ÚXt2r]   s                r   Útest_fit_transformr§     sß  € ô �)‰)×
Ñ
Ð 2Ó
3€CØ×Ñ˜)Ó$×+Ñ+¨LÓ9€AØ€HØ"1°1Ð!5¸¸t°}Ð Eó #,Ñˆ�Ø(4Ð(@™ÀaÇgÁgÈaÁjˆäØ%°ÀÐVWô
ˆô ×$Ñ$Ó&ñ 	&ô ×!Ñ! '¬>Ô:ô ×!Ñ! (Ô,>Ô?Ø×"Ñ" 1Ó%ˆB÷	&ð �‰×$Ñ$¨¸Ð(;Ò;Ð;Ð;Ø�x‰x˜AŸG™G A™J¨Ð6Ò6Ð6Ð6äØ%°ÀÐVWô
ˆô ×$Ñ$Ó&ñ 	ô ×!Ñ! '¬>Ô:Ü×!Ñ! (Ô,>Ô?Ø�H‰H�QŒK÷	ð ×Ñ×%Ñ%¨-¸Ð)<Ò<Ð<Ð<Ø�n‰n˜QÓˆñ Ü—6‘6˜#“;×#Ñ#Ó%¨Ñ+‰DàˆDÜ˜˜C d×+ñG#,÷	&ñ 	&ú÷	ð 	ús   ÂAG.Ä5AG;Ç.G8	Ç;H	z/ignore:Ignoring n_components with whiten=False.z+whiten, n_components, expected_mixing_shape))rX   r   ©r   r   )rX   r   ©r   r   )r/   r   r¨   )r/   r   r©   )Fr   r©   )Fr   r©   c                 ót  — d}t         j                  j                  |«      }|j                  |df«      j	                  |«      }t        ||| ¬«      }t        j                  «       5  t        j                  dt        «       |j                  |«      }	d d d «       |j                  j                  |k(  sJ ‚|j                  	«      }
|j                  |
j                  k(  sJ ‚||j                  d   k(  r:|r't        j                  |
«      j                  «       dz  }nd}t!        ||
|¬«       y y # 1 sw Y   Œ�xY w)	Nr+   r   )r1   r4   r3   rž   rJ   g     jø@r•   r\   )r   r   r   r5   r6   r   rŸ   r    r¡   r   rq   r:   rt   Úinverse_transformrr   r   r	   )r3   r1   Úexpected_mixing_shaperw   r=   rx   r"   r>   rˆ   r¤   ÚX2r]   s               r   Útest_inverse_transformr®   =  s  € ð  €IÜ
�)‰)×
Ñ
Ð 2Ó
3€CØ×Ñ˜9 b˜/Ó*×1Ñ1°,Ó?€Aä
˜|¸#ÀfÔ
M€CÜ	×	 Ñ	 Ó	"ñ "ô 	×Ñ˜hÔ(:Ô;Ø×Ñ˜qÓ!ˆ÷"ð �;‰;×ÑÐ 5Ò5Ð5Ð5Ø	×	Ñ	˜rÓ	"€BØ�7‰7�b—h‘hÒÐÐð �q—w‘w˜q‘zÒ!ñ ô —6‘6˜"“:—?‘?Ó$ sÑ*‰DàˆDÜ˜˜2 DÖ)ð "÷"ð "ús   Á&,D.Ä.D7c                  ó˜  — d} d}t         j                  j                  d«      }|j                  || f«      }|j	                  | dz   | dz   «      }t        j                  t        d¬«      5  t        |ddi¬«       d d d «       t        j                  t        d	¬«      5  t        ||¬
«       d d d «       y # 1 sw Y   Œ;xY w# 1 sw Y   y xY w)NrO   r   r   rJ   zalpha must be in \[1,2\]rŒ   Úalpha)Úfun_argsz0w_init has invalid shape.+should be \(3L?, 3L?\))Úw_init)	r   r   r   r5   r   rc   rn   ro   r   )Ú
n_featuresrx   r"   r>   r²   s        r   Útest_fastica_errorsr´   i  s·   € Ø€JØ€IÜ
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜9 jÐ1Ó2€AØ�Y‰Y�z A‘~ z°A¡~Ó6€FÜ	�‰”zÐ)DÔ	Eñ *Ü�˜W a˜LÕ)÷*ä	�‰ÜÐPô
ñ "ô 	�˜&Õ!÷"ð "÷*ð *ú÷"ð "ús   Á*B4ÂC Â4B=Ã C	c                  ó  — t         j                  j                  d«      } | j                  d«      }|j                  d   }t        |dd¬«      }|j                  |«      }t        j                  |«      t        j                  d«      k(  sJ ‚y)zTTest unit variance of transformed data using FastICA algorithm.

    Bug #13056
    r   r*   rJ   r/   r[   g      ð?N)
r   r   r   r5   rt   r   rq   Úvarrc   Úapprox)r"   r>   r1   rˆ   r¤   s        r   Ú!test_fastica_whiten_unit_variancer¸   w  ss   € ô
 �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$€AØ—7‘7˜1‘:€LÜ
˜|°OÐRSÔ
T€CØ	×	Ñ	˜1Ó	€Bä�6‰6�"‹:œŸ™ sÓ+Ò+Ð+Ñ+r   r3   rW   Úreturn_X_meanÚreturn_n_iterc                 óÒ   — d}d}t         j                  j                  d«      }|j                  ||f«      }d|z   |z   }t	        || ||¬«      }t        |«      |k(  sJ ‚| s|d   �J ‚y y )NrO   r   r   )r3   rº   r¹   )r   r   r   r5   r   Úlen)	r3   r¹   rº   r³   rx   r"   r>   Úexpected_lenÚouts	            r   Útest_fastica_output_shaper¿   …  sƒ   € ð €JØ€IÜ
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜9 jÐ1Ó2€Aà�}Ñ$ }Ñ4€Lä
Ø	�&¨À]ô€Cô ˆs‹8�|Ò#Ð#Ð#ÙØ�1‰vˆ~Ð‰~ð r   c                 óÊ  — t         j                  j                  |«      }d}dt        j                  t        j                  dd|«      «      z  dkD  dz
  }t
        j                  j                  d||¬«      }t         j                  ||f   j                  }t        |«       |\  }}|j                  «       dz  t         j                  z  }t        j                  t        j                  |«      t        j                  |«      gt        j                  |«      t        j                  |«       gg«      }t        j                  ||«      }	| r|	d|j!                  dd«      z  z  }	t        |	«       i }
dD ]\  }t#        dd	|¬
«      }|j%                  |	j                  «      }||
|<   |j&                  j(                  dk(  sJ ‚|j(                  dk(  rŒ\J ‚ t+        |
d   |
d   d¬«       y)z2Test FastICA is consistent between whiten_solvers.r.   r   r   r+   rJ   rK   rM   )r   Úeighr/   ©r4   r3   Úwhiten_solverr^   r_   rÁ   r   gê-�™—q=r\   N)r   r   r   re   rf   r   rg   rh   ri   r!   r   Úrandr˜   rj   rk   r    r   r   rq   r8   rt   r	   )rE   rw   r"   rx   ry   rz   r{   r|   r}   r~   ÚoutsÚsolverrˆ   r‰   s                 r   Ú%test_fastica_simple_different_solversrÇ   ™  s“  € ô �)‰)×
Ñ
Ð 2Ó
3€CØ€Ià
Œb�f‰f”R—[‘[  C¨Ó3Ó4Ñ
4°qÑ
8¸AÑ	=€BÜ	�‰�‰�Q˜Y°SˆÓ	9€BÜ
�‰ˆb�"ˆf‰�‰€AÜ�AÔØ�F€Bˆð �(‰(‹*�q‰.œ2Ÿ5™5Ñ
 €CÜ�X‰XœŸ™˜s›¤R§V¡V¨C£[Ð1´B·F±F¸3³KÄ"Ç&Á&ÈÃ+ÀÐ3NÐOÓP€FÜ
�‰ˆv�qÓ€AáØ	ˆS�3—9‘9˜Q Ó%Ñ%Ñ%ˆä�AÔà€DØ!ò *ˆÜ 1¨_ÈFÔSˆØ×#Ñ# A§C¡CÓ(ˆØˆˆV‰Ø�‰×$Ñ$¨Ò.Ð.Ð.Ø�}‰} 	Ó)Ð)Ð)ð*ô �D˜‘L $ u¡+°EÖ:r   c                 óp  — t         j                  j                  | «      }|j                  dd«      }||j                  z  }t        ddd¬«      }d}t        j                  t        |¬«      5  t        t        ¬	«      5  |j                  |«       d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)z:Test FastICA eigh solver raises warning for low-rank data.r   r   r   r/   rÁ   rÂ   z$There are some small singular valuesrŒ   )ÚcategoryN)r   r   r   r   r!   r   rc   rŽ   r�   r
   r   r7   )rw   r"   ÚAr>   rˆ   Úmsgs         r   Ú"test_fastica_eigh_low_rank_warningrÌ   ¼  sš   € ä
�)‰)×
Ñ
Ð 2Ó
3€CØ�	‰	�"�aÓ€AØ	ˆA�C‰C‰€AÜ
˜q¨ÈÔ
O€CØ
0€Cä	�‰”k¨Ô	-ñ ÜÔ&8Ô9ñ 	ð �G‰G�AŒJ÷		÷ð ÷	ð 	ú÷ð ús$   Á,B,Á=B ÂB,Â B)	Â%B,Â,B5)rP   )&Ú__doc__rl   ra   rŸ   Únumpyr   rc   Úscipyr   Úsklearn.decompositionr   r   r   Úsklearn.decomposition._fasticar   Úsklearn.exceptionsr   Úsklearn.utils._testingr	   r
   r   r(   r@   rD   ÚmarkÚparametrizerŠ   r’   r™   r›   r§   Úfilterwarningsr®   r´   r¸   r¿   rÇ   rÌ   © r   r   ú<module>rØ      sˆ  ðñó Û 	Û ã Û Ý ç 7Ñ 7Ý <Ý 1ß Cóò *ò	1ò$ð ‡�×Ñ˜ t¨U mÓ4ñhó 5ðhòV#òð< ‡�×Ñ˜ t¨U mÓ4ñ*Có 5ð*CòZ/,ðd ‡�×ÑÐMÓNØ‡�×ÑØ1òó
ñ*ó
ó Oð*ò@"ò,ð ‡�×Ñ˜Ò#QÓRØ‡�×Ñ˜¨4°¨-Ó8Ø‡�×Ñ˜¨4°¨-Ó8ñó 9ó 9ó Sðð" ‡�×Ñ˜ t¨U mÓ4ñ;ó 5ð;óDr   