§
    ¨éUg©=  ã                   ó   — 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j                             dddg¦  «        d„ ¦   «         Zd„ Zd„ Zej                             dddg¦  «        d„ ¦   «         Zd„ Zej                             d¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Z d„ Z!d„ Z"ej                             dg d¢¦  «        ej                             dddg¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         ¦   «         Z#ej                             dddg¦  «        d „ ¦   «         Z$d!„ Z%dS )#z
Test the fastica algorithm.
é    N)Ústats)ÚPCAÚFastICAÚfastica)Ú_gs_decorrelation)ÚConvergenceWarning)Úassert_allcloseÚignore_warningséÿÿÿÿc                 ó”   — t          j        | |¦  «        } | |                      d¬¦  «        z  } | |                      d¬¦  «        z  } dS )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     úg/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/decomposition/tests/test_fastica.pyÚcenter_and_normr      sE   € õ 	Œ�A�tÑÔ€AØˆ�Š�Qˆ‰ŒÑ€AØˆ�Š�Aˆ‰ŒÑ€A€A€Aó    c                  ó  — t           j                             d¦  «        } t           j                             |                      dd¦  «        ¦  «        \  }}}|                      d¦  «        }t          ||d¦  «         |dz                       ¦   «         dk     sJ ‚|                      d¦  «        }t          ||d¦  «        }t          j        ||j	        ¦  «        }|d d…         dz                       ¦   «         dk     sJ ‚d S )Nr   é
   é   g»½×Ùß|Û=é   )
r   ÚrandomÚRandomStateÚlinalgÚsvdÚrandnr   ÚsumÚdotÚT)ÚrngÚWÚ_ÚwÚuÚtmps         r   Útest_gsr)   #   sÞ   € õ Œ)×
Ò
 Ñ
"Ô
"€CÝŒi�mŠm˜CŸIšI b¨"Ñ-Ô-Ñ.Ô.�G€A€qˆ!Ø�	Š	�"‰Œ€AÝ�a˜˜BÑÔÐØˆq‰D�:Š:‰<Œ<˜'Ò!Ð!Ð!Ð!Ø�	Š	�"‰Œ€AÝ˜!˜Q Ñ"Ô"€AÝ
Œ&��A”C‰.Œ.€CØ���ŒG�q‰L×ÒÑÔ 'Ò)Ð)Ð)Ð)Ð)Ð)r   c                 ót  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          dddd¬¦  «                             |¦  «        }|j        j        | k    sJ ‚|j	        j        | k    sJ ‚|j
        j        | k    sJ ‚|j        j        | k    sJ ‚d S )	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_dtypesrA   1   sÉ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AÝØ ¨oÈAðñ ô ç	‚cˆ!�f„fð 	ð ÔÔ! \Ò1Ð1Ð1Ð1ØŒ<Ô Ò-Ð-Ð-Ð-ØŒ:Ô˜|Ò+Ð+Ð+Ð+ØŒ?Ô  LÒ0Ð0Ð0Ð0Ð0Ð0r   c                 ó  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |dd|¬¦  «        \  }}}|j        | k    sJ ‚|j        | k    sJ ‚|j        | k    sJ ‚d S )Nr   r+   Fr-   r/   r0   )r3   r4   r5   )r   r   r   r6   r7   r   r:   )r>   r#   r?   Úk_r;   Ús_s         r   Útest_fastica_return_dtypesrE   =   s¡   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AÝØ	�D ¸sðñ ô �O€Bˆ�ð Œ8�|Ò#Ð#Ð#Ð#ØŒ=˜LÒ(Ð(Ð(Ð(ØŒ8�|Ò#Ð#Ð#Ð#Ð#Ð#r   Ú	add_noiseTFc           	      óÞ  — |dk    r>|t           j        k    r.| s,t          j        d¦  «        dk    rt	          j        d¦  «         t           j                             |¦  «        }d}dt          j        t          j	        dd|¦  «        ¦  «        z  dk    d	z
  }t          j                             d	||¬
¦  «        }t           j        ||f         j        }t          |¦  «         |                     |¦  «        }|\  }}d}t          j        t          j        |¦  «        t          j        |¦  «        gt          j        |¦  «        t          j        |¦  «         gg¦  «        }	|	                     |¦  «        }	t          j        |	|¦  «        }
| r|
d|                     dd¦  «        z  z  }
t          |
¦  «         d„ }ddg}ddd|g}g d¢}t+          j        |||¦  «        D �]·\  }}}|rqt/          |
j        ||||¬¦  «        \  }}}t	          j        t2          ¦  «        5  t/          |
j        t           j        ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   n‘t7          dd|¬¦  «        }|                     |
j        ¦  «        }t/          |||d|¬¦  «        \  }}}t	          j        t2          ¦  «        5  t/          |t           j        |¬¦  «         d d d ¦  «         n# 1 swxY w Y   |j        }|rL|t           j        k    rdnd}t;          t          j        t          j        ||¦  «        |
¦  «        ||¬¦  «         t          |¦  «         |\  }}t=          t          j        ||¦  «        ¦  «        t=          t          j        ||¦  «        ¦  «        k    r|\  }}|t          j        t          j        ||¦  «        ¦  «        z  }|t          j        t          j        ||¦  «        ¦  «        z  }| sRt;          t          j        ||¦  «        |z  d	d¬¦  «         t;          t          j        ||¦  «        |z  d	d¬¦  «         �Œgt;          t          j        ||¦  «        |z  d	d¬¦  «         t;          t          j        ||¦  «        |z  d	d¬¦  «         �Œ¹t/          |
j        |||¬¦  «        \  }}}tA          |||¬¦  «        }|                     |
j        ¦  «        }|j!        j"        dk    sJ ‚|j"        d k    sJ ‚t;          ||¦  «         t          j#        t          j        |¦  «        ¦  «        |t           j        k    rdnd!z  }t;          || $                    |
j        ¦  «        |¬¦  «         |j%        j"        dk    sJ ‚tA          t           j        |¬¦  «        }t	          j        t2          ¦  «        5  | &                    |
j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )"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,   é   ©Úsizer5   g333333ã?çš™™™™™¹?c                 óD   — | dz  d| dz  z                        d¬¦  «        fS )Né   r   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-variancer0   F)Úfunr4   Ú	algorithmr5   )rY   r4   rZ   T©r2   r4   r5   F)rY   rZ   r4   r5   )rY   rZ   gñhãˆµøä>©Úatolg{®Gáz„?)rY   rZ   r5   ©r   r   ©r/   r   gH¯¼šò×z>)'r   Úfloat32ÚosÚgetenvÚpytestÚxfailr   r   ÚsinÚlinspacer   ÚtÚrvsÚc_r"   r   r7   ÚarrayÚcosr!   r   Ú	itertoolsÚproductr   ÚraisesÚ
ValueErrorÚtanhr   Úfit_transformr	   ÚabsÚsignr   r9   ÚshapeÚmaxÚ	transformr;   r8   )rF   Úglobal_random_seedr>   r#   Ú	n_samplesÚs1Ús2ÚsÚphiÚmixingÚmrQ   ÚalgosÚnlsÚ	whiteningÚalgoÚnlr4   rC   r;   rD   Úpcar?   r]   Ús1_Ús2_r%   Úsources_funÚicaÚsourcess                                 r   Útest_fastica_simplerŠ   H   s‡  € ð 	˜bÒ Ð Ø�BœJÒ&Ð&Øð 'åŒI�iÑ Ô  HÒ,Ð,åŒð`ñ	
ô 	
ð 	
õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ€Ià
�bŒf•R”[  C¨Ñ3Ô3Ñ4Ô4Ñ
4°qÒ
8¸AÑ	=€BÝ	Œ�Š�Q˜YÐ5GˆÑ	HÔ	H€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐØ	�Š�ÑÔ€AØ�F€Bˆð €CÝŒX�œ˜s™œ¥R¤V¨C¡[¤[Ð1µB´F¸3±K´KÅ"Ä&ÈÁ+Ä+ÀÐ3NÐOÑPÔP€FØ�]Š]˜<Ñ(Ô(€FÝ
Œˆv�qÑÔ€Aàð &Ø	ˆS�3—9’9˜Q Ñ%Ô%Ñ%Ñ%ˆå�AÑÔÐð.ð .ð .ð ˜Ð%€EØ�e˜V VÐ
,€CØ>Ð>Ð>€IÝ%Ô-¨e°S¸)ÑDÔDð )Gñ )GÑˆˆb�&Øð 	8Ý%Ø”˜ F°dÈðñ ô ‰OˆB�˜õ ”�zÑ*Ô*ð Ið IÝ˜œ¥¤°À4ÐHÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iøõ  1¨TÀÐDÑDÔDˆCØ×!Ò! !¤#Ñ&Ô&ˆAÝ%Ø�r T°%Àcðñ ô ‰OˆB�˜õ ”�zÑ*Ô*ð 8ð 8Ý˜�rœw°$Ð7Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8àŒTˆàð 	Kð (­2¬:Ò5Ð5�4�4¸1ˆDÝ�BœF¥2¤6¨'°2Ñ#6Ô#6¸Ñ:Ô:¸BÀTÐJÑJÔJÐJå˜ÑÔÐØ‰ˆˆSõ �rŒv�c˜2‰ŒÑÔ¥#¥b¤f¨S°"¡o¤oÑ"6Ô"6Ò6Ð6Ø‰HˆC�Ø�rŒw•r”v˜c 2‘”Ñ'Ô'Ñ'ˆØ�rŒw•r”v˜c 2‘”Ñ'Ô'Ñ'ˆð ð 	GÝ�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÝ�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÑFå�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÝ�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÑFõ  Ø	Œ�˜tÐ2Dðñ ô Ñ€A€qˆ+õ �b DÐ7IÐ
JÑ
JÔ
J€CØ×Ò ¤Ñ$Ô$€GØŒ?Ô  FÒ*Ð*Ð*Ð*ØŒ=˜IÒ%Ð%Ð%Ð%å�K Ñ)Ô)Ð)õ Œ6•"”&˜‘/”/Ñ"Ô"¨l½b¼jÒ.HÐ.H d dÈdÑS€DÝ�G˜SŸ]š]¨1¬3Ñ/Ô/°dÐ;Ñ;Ô;Ð;àŒ;Ô Ò&Ð&Ð&Ð&å
•b”g¨Ð
.Ñ
.Ô
.€CÝ	Œ•zÑ	"Ô	"ð ð Ø�Š�”‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   È#IÉI	ÉI	Ê6KËK#	Ë&K#	Ö:W"×"W&×)W&c                  óò   — ddgddgg} t          ddd¬¦  «        }d}t          j        t          |¬¦  «        5  |                     | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |d¦  «        sJ ‚d S )Nr   rK   Fr[   z(Ignoring n_components with whiten=False.©Úmatchr;   )r   rc   ÚwarnsÚUserWarningr8   Úhasattr)r~   rˆ   Úwarn_msgs      r   Útest_fastica_nowhitenr’   ´   sÄ   € Ø
ˆQˆ�!�Q�Ð€Aõ ˜q¨¸QÐ
?Ñ
?Ô
?€CØ9€HÝ	Œ•k¨Ð	2Ñ	2Ô	2ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å�3˜	Ñ"Ô"Ð"Ð"Ð"Ð"Ð"s   ¸AÁAÁ!Ac                  óp  — t           j                             d¦  «        } d}t          j        dd|¦  «        }t          j        |¦  «        }t          j        t          j        t           j        |z  ¦  «        ¦  «        }t           j        ||f         j        }t          |¦  «         |  
                    dd¦  «        }t          j        ||¦  «        }d}t          j        t          |¬¦  «        5  t          dd| dd	¬
¦  «        }	|	                     |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r/   r,   é   r   z\FastICA did not converge. Consider increasing tolerance or the maximum number of iterations.rŒ   rR   ç        )rZ   r2   r5   r3   Útol)r   r   r   rf   re   ÚceilÚpiri   r"   r   r   r!   rc   rŽ   r   r   r8   )
r#   rx   rg   ry   rz   r{   r}   r~   r‘   rˆ   s
             r   Útest_fastica_convergence_failr™   ¿   sY  € õ Œ)×
Ò
 Ñ
"Ô
"€Cà€Iå
Œ�A�s˜IÑ&Ô&€AÝ	Œ�‰Œ€BÝ	Œ•”�œ ™	Ñ"Ô"Ñ	#Ô	#€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐð �YŠY�q˜!‰_Œ_€FÝ
Œˆv�qÑÔ€Að	/ð õ 
ŒÕ(°Ð	9Ñ	9Ô	9ð ð ÝØ ¨q¸sÈQÐTWð
ñ 
ô 
ˆð 	�Š�”‰Œˆð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Ã//D+Ä+D/Ä2D/c           	      óÌ  — t           j                             d¦  «        }d}t          j        dd|¦  «        }t          j        |¦  «        }t          j        t          j        t           j        |z  ¦  «        ¦  «        }t           j        ||f         j        }t          |¦  «         |\  }}| 
                    dd¦  «        }t          j        ||¦  «        }| r|d| 
                    d|¦  «        z  z  }t          |¦  «         t          |j        dd|¬¦  «        \  }	}
}|j        }t          |t          j        t          j        |
|	¦  «        |¦  «        ¦  «         t          |¦  «         |\  }}t          t          j        ||¦  «        ¦  «        t          t          j        ||¦  «        ¦  «        k    r|\  }}|t          j        t          j        ||¦  «        ¦  «        z  }|t          j        t          j        ||¦  «        ¦  «        z  }| sRt          t          j        ||¦  «        |z  d	d
¬¦  «         t          t          j        ||¦  «        |z  d	d
¬¦  «         d S d S )Nr   r/   r,   r”   r   rN   r0   r[   rK   gü©ñÒMbP?r\   )r   r   r   rf   re   r—   r˜   ri   r"   r   r   r!   r   r	   rr   rs   )rF   r#   rx   rg   ry   rz   r{   r}   r~   rC   r;   rD   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 g¨rÑ2Ô2°AÑ6Ô6Ñ7Ô7Ð7å�BÑÔÐØ�H€Cˆõ �2Œ6�#�r‰?Œ?ÑÔ�c¥"¤&¨¨b¡/¤/Ñ2Ô2Ò2Ð2Ø‰ˆˆSØ�2Œ7•2”6˜#˜r‘?”?Ñ#Ô#Ñ#€CØ�2Œ7•2”6˜#˜r‘?”?Ñ#Ô#Ñ#€Cð ð CÝ�œ˜s B™œ¨)Ñ3°Q¸TÐBÑBÔBÐBÝ�œ˜s B™œ¨)Ñ3°Q¸TÐBÑBÔBÐBÐBÐBðCð Cr   c                 ó$  — t           j                             | ¦  «        }|                     d¦  «                             |¦  «        }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          ¦  «         |                     |¦  «        }	ddd¦  «         n# 1 swxY w Y   |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          ¦  «         |
                     |¦  «         ddd¦  «         n# 1 swxY w Y   |
j        j        |dfk    sJ ‚|
                     |¦  «        }|r*t          j        |¦  «                             ¦   «         dz  }nd}t%          |	||¬¦  «         �Œ¾dS )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,  r0   r   FNrK   r   r1   ÚerrorÚignorer   g    €„.Ar•   r\   )r   r   r   r6   r7   rt   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   rq   r9   r8   rv   rr   r   r	   )rw   r>   r#   r?   r3   r4   r2   Ún_components_rˆ   ÚXtÚica2ÚXt2r]   s                r   Útest_fit_transformr§     s°  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜)Ñ$Ô$×+Ò+¨LÑ9Ô9€AØ€HØ"1°1Ð!5¸¸t°}Ð Eð #,ñ #,Ñˆ�Ø(4Ð(@˜˜ÀaÄgÈaÄjˆåØ%°ÀÐVWð
ñ 
ô 
ˆõ Ô$Ñ&Ô&ð 	&ð 	&õ Ô! '­>Ñ:Ô:Ð:õ Ô! (Õ,>Ñ?Ô?Ð?Ø×"Ò" 1Ñ%Ô%ˆBð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð ŒÔ$¨¸Ð(;Ò;Ð;Ð;Ð;ØŒx˜AœG AœJ¨Ð6Ò6Ð6Ð6Ð6åØ%°ÀÐVWð
ñ 
ô 
ˆõ Ô$Ñ&Ô&ð 	ð 	õ Ô! '­>Ñ:Ô:Ð:ÝÔ! (Õ,>Ñ?Ô?Ð?Ø�HŠH�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ÔÔ%¨-¸Ð)<Ò<Ð<Ð<Ð<Ø�nŠn˜QÑÔˆð ð 	Ý”6˜#‘;”;×#Ò#Ñ%Ô%¨Ñ+ˆDˆDàˆDÝ˜˜C dÐ+Ñ+Ô+Ð+Ñ+ðG#,ð #,s&   ÂA
C%Ã%C)	Ã,C)	ÅA
FÆF	Æ!F	z/ignore:Ignoring n_components with whiten=False.z+whiten, n_components, expected_mixing_shape))rX   r   ©r   r   )rX   r   ©r   r   )r0   r   r¨   )r0   r   r©   )Fr   r©   )Fr   r©   c                 óŒ  — d}t           j                             |¦  «        }|                     |df¦  «                             |¦  «        }t          ||| ¬¦  «        }t          j        ¦   «         5  t          j        dt          ¦  «         | 
                    |¦  «        }	d d d ¦  «         n# 1 swxY w Y   |j        j        |k    sJ ‚|                     |	¦  «        }
|j        |
j        k    sJ ‚||j        d         k    rB|r*t          j        |
¦  «                             ¦   «         dz  }nd}t!          ||
|¬¦  «         d S d S )	Nr,   r   )r2   r5   r4   rž   rK   g     jø@r•   r\   )r   r   r   r6   r7   r   rŸ   r    r¡   r   rq   r;   rt   Úinverse_transformrr   r   r	   )r4   r2   Úexpected_mixing_shaperw   r>   rx   r#   r?   rˆ   r¤   ÚX2r]   s               r   Útest_inverse_transformr®   =  s‹  € ð  €IÝ
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜9 b˜/Ñ*Ô*×1Ò1°,Ñ?Ô?€Aå
˜|¸#ÀfÐ
MÑ
MÔ
M€CÝ	Ô	 Ñ	"Ô	"ð "ð "õ 	Ô˜hÕ(:Ñ;Ô;Ð;Ø×Ò˜qÑ!Ô!ˆð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð Œ;ÔÐ 5Ò5Ð5Ð5Ð5Ø	×	Ò	˜rÑ	"Ô	"€BØŒ7�b”hÒÐÐÐð �q”w˜q”zÒ!Ð!ð ð 	õ ”6˜"‘:”:—?’?Ñ$Ô$ sÑ*ˆDˆDàˆDÝ˜˜2 DÐ)Ñ)Ô)Ð)Ð)Ð)ð "Ð!s   Á10B-Â-B1Â4B1c                  óÈ  — d} d}t           j                             d¦  «        }|                     || f¦  «        }|                     | dz   | dz   ¦  «        }t          j        t          d¬¦  «        5  t          |ddi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d	¬¦  «        5  t          ||¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrP   r   r   rK   zalpha must be in \[1,2\]rŒ   Úalpha)Úfun_argsz0w_init has invalid shape.+should be \(3L?, 3L?\))Úw_init)	r   r   r   r6   r   rc   rn   ro   r   )Ú
n_featuresrx   r#   r?   r²   s        r   Útest_fastica_errorsr´   i  sl  € Ø€JØ€IÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜9 jÐ1Ñ2Ô2€AØ�YŠY�z A‘~ z°A¡~Ñ6Ô6€FÝ	Œ•zÐ)DÐ	EÑ	EÔ	Eð *ð *Ý�˜W a˜LÐ)Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *å	ŒÝÐPð
ñ 
ô 
ð "ð "õ 	�˜&Ð!Ñ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s$   Á2BÂBÂBÂ8CÃCÃCc                  ó.  — t           j                             d¦  «        } |                      d¦  «        }|j        d         }t          |dd¬¦  «        }|                     |¦  «        }t          j        |¦  «        t          j	        d¦  «        k    sJ ‚dS )zTTest unit variance of transformed data using FastICA algorithm.

    Bug #13056
    r   r+   rK   r0   r[   g      ð?N)
r   r   r   r6   rt   r   rq   Úvarrc   Úapprox)r#   r?   r2   rˆ   r¤   s        r   Ú!test_fastica_whiten_unit_variancer¸   w  sˆ   € õ
 Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$€AØ”7˜1”:€LÝ
˜|°OÐRSÐ
TÑ
TÔ
T€CØ	×	Ò	˜1Ñ	Ô	€BåŒ6�"‰:Œ:�œ sÑ+Ô+Ò+Ð+Ð+Ð+Ð+Ð+r   r4   rW   Úreturn_X_meanÚreturn_n_iterc                 óö   — d}d}t           j                             d¦  «        }|                     ||f¦  «        }d|z   |z   }t	          || ||¬¦  «        }t          |¦  «        |k    sJ ‚| s
|d         �J ‚d S d S )NrP   r   r   )r4   rº   r¹   )r   r   r   r6   r   Úlen)	r4   r¹   rº   r³   rx   r#   r?   Úexpected_lenÚouts	            r   Útest_fastica_output_shaper¿   …  s¤   € ð €JØ€IÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜9 jÐ1Ñ2Ô2€Aà�}Ñ$ }Ñ4€Lå
Ø	�&¨À]ðñ ô €Cõ ˆs‰8Œ8�|Ò#Ð#Ð#Ð#Øð Ø�1Œvˆ~ˆ~ˆ~ðð Øˆ~r   c                 óÆ  — t           j                             |¦  «        }d}dt          j        t          j        dd|¦  «        ¦  «        z  dk    dz
  }t
          j                             d||¬¦  «        }t           j        ||f         j	        }t          |¦  «         |\  }}|                     ¦   «         dz  t           j        z  }t          j        t          j        |¦  «        t          j        |¦  «        gt          j        |¦  «        t          j        |¦  «         gg¦  «        }t          j        ||¦  «        }	| r|	d|                     dd¦  «        z  z  }	t          |	¦  «         i }
dD ]R}t#          dd	|¬
¦  «        }|                     |	j	        ¦  «        }||
|<   |j        j        dk    sJ ‚|j        dk    sJ ‚ŒSt+          |
d         |
d         d¬¦  «         dS )z2Test FastICA is consistent between whiten_solvers.r/   r   r   r,   rK   rL   rN   )r   Úeighr0   ©r5   r4   Ú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   r9   rt   r	   )rF   rw   r#   rx   ry   rz   r{   r|   r}   r~   ÚoutsÚsolverrˆ   r‰   s                 r   Ú%test_fastica_simple_different_solversrÇ   ™  sÁ  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ€Ià
�bŒf•R”[  C¨Ñ3Ô3Ñ4Ô4Ñ
4°qÒ
8¸AÑ	=€BÝ	Œ�Š�Q˜Y°SˆÑ	9Ô	9€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐØ�F€Bˆð �(Š(‰*Œ*�q‰.�2œ5Ñ
 €CÝŒX�œ˜s™œ¥R¤V¨C¡[¤[Ð1µB´F¸3±K´KÅ"Ä&ÈÁ+Ä+ÀÐ3NÐOÑPÔP€FÝ
Œˆv�qÑÔ€Aàð &Ø	ˆS�3—9’9˜Q Ñ%Ô%Ñ%Ñ%ˆå�AÑÔÐà€DØ!ð *ð *ˆÝ 1¨_ÈFÐSÑSÔSˆØ×#Ò# A¤CÑ(Ô(ˆØˆˆV‰ØŒÔ$¨Ò.Ð.Ð.Ð.ØŒ} 	Ò)Ð)Ð)Ð)Ð)õ �D˜”L $ u¤+°EÐ:Ñ:Ô:Ð:Ð:Ð:r   c                 ó˜  — t           j                             | ¦  «        }|                     dd¦  «        }||j        z  }t          ddd¬¦  «        }d}t          j        t          |¬¦  «        5  t          t          ¬	¦  «        5  |                     |¦  «         d
d
d
¦  «         n# 1 swxY w Y   d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z:Test FastICA eigh solver raises warning for low-rank data.r   r   r   r0   rÁ   rÂ   z$There are some small singular valuesrŒ   )ÚcategoryN)r   r   r   r   r"   r   rc   rŽ   r�   r
   r   r8   )rw   r#   ÚAr?   rˆ   Úmsgs         r   Ú"test_fastica_eigh_low_rank_warningrÌ   ¼  s@  € å
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�	Š	�"�aÑÔ€AØ	ˆAŒC‰€AÝ
˜q¨ÈÐ
OÑ
OÔ
O€CØ
0€Cå	Œ•k¨Ð	-Ñ	-Ô	-ð ð ÝÕ&8Ð9Ñ9Ô9ð 	ð 	ð �GŠG�A‰JŒJˆJð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   Á/B?ÂB'ÂB?Â'B+	Â+B?Â.B+	Â/B?Â?CÃC)r   )&Ú__doc__rl   ra   rŸ   Únumpyr   rc   Úscipyr   Úsklearn.decompositionr   r   r   Úsklearn.decomposition._fasticar   Úsklearn.exceptionsr   Úsklearn.utils._testingr	   r
   r   r)   rA   rE   ÚmarkÚparametrizerŠ   r’   r™   r›   r§   Úfilterwarningsr®   r´   r¸   r¿   rÇ   rÌ   © r   r   ú<module>rØ      sÍ  ððð ð Ð Ð Ð Ø 	€	€	€	Ø €€€à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø <Ð <Ð <Ð <Ð <Ð <Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð *ð *ð *ð	1ð 	1ð 	1ð$ð $ð $ð „×Ò˜ t¨U mÑ4Ô4ðhð hñ 5Ô4ðhðV#ð #ð #ðð ð ð< „×Ò˜ t¨U mÑ4Ô4ð*Cð *Cñ 5Ô4ð*CðZ/,ð /,ð /,ðd „×ÒÐMÑNÔNØ„×ÒØ1ðð ð ñ
ô 
ð*ð *ñ
ô 
ñ OÔNð*ð@"ð "ð "ð,ð ,ð ,ð „×Ò˜Ð#QÐ#QÐ#QÑRÔRØ„×Ò˜¨4°¨-Ñ8Ô8Ø„×Ò˜¨4°¨-Ñ8Ô8ðð ñ 9Ô8ñ 9Ô8ñ SÔRðð" „×Ò˜ t¨U mÑ4Ô4ð;ð ;ñ 5Ô4ð;ðDð ð ð ð r   