§
    ¢éUgK  ã                   ó®   — d dl mZmZ d dlZd dlmZ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„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )é    )ÚproductÚpermutationsN)Úassert_array_lessÚassert_allclose)Úraises)ÚinvÚeighÚnorm)Úorthogonal_procrustes)Úmatrixc                  ó   — t           j                             d¦  «         t           j                             ddd¦  «        } t           j                             ddd¦  «        }t	          t
          t          | |¦  «         d S )NéÒ  é   é   é   ©ÚnpÚrandomÚseedÚrandnÚassert_raisesÚ
ValueErrorr   ©ÚAÚBs     úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_procrustes.pyÚ)test_orthogonal_procrustes_ndim_too_larger      s_   € Ý„I‡N‚N�4ÑÔÐÝ
Œ	�Š˜˜1˜aÑ Ô €AÝ
Œ	�Š˜˜1˜aÑ Ô €AÝ•*Õ3°Q¸Ñ:Ô:Ð:Ð:Ð:ó    c                  óø   — t           j                             d¦  «         t           j                             d¦  «        } t           j                             d¦  «        }t	          t
          t          | |¦  «         d S )Nr   r   r   r   s     r   Ú)test_orthogonal_procrustes_ndim_too_smallr       sW   € Ý„I‡N‚N�4ÑÔÐÝ
Œ	�Š˜ÑÔ€AÝ
Œ	�Š˜ÑÔ€AÝ•*Õ3°Q¸Ñ:Ô:Ð:Ð:Ð:r   c                  óø   — t           j                             d¦  «         d} t          | d¦  «        D ]G\  }}t          j        j        |Ž }t          j        j        |Ž }t          t          t          ||¦  «         ŒHd S )Nr   ))r   r   )r   r   ©r   r   ©r   r   é   )r   r   r   r   r   r   r   r   )ÚshapesÚaÚbr   r   s        r   Ú)test_orthogonal_procrustes_shape_mismatchr(      sv   € Ý„I‡N‚N�4ÑÔÐØ-€FÝ˜V QÑ'Ô'ð ?ð ?‰ˆˆ1ÝŒIŒO˜QÐˆÝŒIŒO˜QÐˆÝ•jÕ"7¸¸AÑ>Ô>Ð>Ð>ð?ð ?r   c                  óÚ  — t           j                             d¦  «         d\  } }t           j                             | |¦  «        }t           j                             | |¦  «        }t           j        t           j         t           j        fD ]a}|                     ¦   «         }||d<   |                     ¦   «         }||d<   ||f||f||ffD ]!\  }}t          t          t          ||¦  «         Œ"Œbd S )Nr   )r$   r   )é   r$   )
r   r   r   r   ÚinfÚnanÚcopyr   r   r   )	ÚmÚnÚA_goodÚB_goodÚ	bad_valueÚA_badÚB_badr   r   s	            r   Ú0test_orthogonal_procrustes_checkfinite_exceptionr5   #   sç   € Ý„I‡N‚N�4ÑÔÐØ�D€A€qÝŒY�_Š_˜Q Ñ"Ô"€FÝŒY�_Š_˜Q Ñ"Ô"€FÝ”V�bœf˜W¥b¤fÐ,ð Cð Cˆ	Ø—’‘”ˆØˆˆd‰Ø—’‘”ˆØˆˆd‰Ø˜e�_ u¨f o¸¸u°~ÐFð 	Cð 	C‰DˆAˆqÝ�*Õ&;¸QÀÑBÔBÐBÐBð	CðCð Cr   c                  ó:  — t           j                             d¦  «         d\  } }t          d¦  «        D ]æ}t           j                             | |¦  «        }t           j                             | |¦  «        }t          ||¦  «        \  }}t          j        t           j                             d¦  «        ¦  «        D ]_}t          j        t           j                             d¦  «        ¦  «        D ]+}t          ||z  ||z  ¦  «        \  }	}t          |	|¦  «         Œ,Œ`Œçd S )Nr   r"   r   )r   r   r   Úranger   r   Úsquarer   )
r.   r/   ÚiÚA_origÚB_origÚR_origÚsÚA_scaleÚB_scaleÚRs
             r   Ú+test_orthogonal_procrustes_scale_invariancerA   1   s  € Ý„I‡N‚N�4ÑÔÐØ�D€A€qÝ�1‰XŒXð +ð +ˆÝ”—’  AÑ&Ô&ˆÝ”—’  AÑ&Ô&ˆÝ)¨&°&Ñ9Ô9‰	ˆ�Ý”y¥¤§¢°Ñ!3Ô!3Ñ4Ô4ð 	+ð 	+ˆGÝœ9¥R¤Y§_¢_°QÑ%7Ô%7Ñ8Ô8ð +ð +�Ý,¨V°gÑ-=¸vÈÑ?OÑPÔP‘��1Ý  6Ñ*Ô*Ð*Ð*ð+ð	+ð	+ð +r   c                  óT  — t           j                             d¦  «         dD �]\  } }t           j                             | |¦  «        }t           j                             | |¦  «        }||                     ¦   «         t          |¦  «        f}||                     ¦   «         t          |¦  «        f}t          ||¦  «        \  }}|                     |¦  «        }t          ||¦  «        D ]=\  }	}
t          |	|
¦  «        \  }}|                     |¦  «        }t          ||¦  «         Œ>�Œd S )Nr   ©)é   r   r#   )r   rD   )
r   r   r   r   Útolistr   r   Údotr   r   )r.   r/   ÚA_arrÚB_arrÚAsÚBsÚR_arrr=   ÚAR_arrr   r   r@   ÚARs                r   Ú+test_orthogonal_procrustes_array_conversionrN   >   s
  € Ý„I‡N‚N�4ÑÔÐØ(ð 
(ñ 
(‰ˆˆ1Ý”	—’  1Ñ%Ô%ˆÝ”	—’  1Ñ%Ô%ˆØ�U—\’\‘^”^¥V¨E¡]¤]Ð3ˆØ�U—\’\‘^”^¥V¨E¡]¤]Ð3ˆÝ(¨°Ñ6Ô6‰ˆˆqØ—’˜5Ñ!Ô!ˆÝ˜B ‘O”Oð 	(ð 	(‰DˆAˆqÝ(¨¨AÑ.Ô.‰DˆAˆqØ—’˜1‘”ˆBÝ˜B Ñ'Ô'Ð'Ð'ñ	(ð
(ð 
(r   c                  ó®  — t           j                             d¦  «         dD �]±\  } }t           j                             | |¦  «        }t           j                             ||¦  «        }t	          |j        |z   ¦  «        \  }}t          t          |¦  «        |j        ¦  «         t          j        ||j        ¦  «        }t          ||¦  «        \  }}t          t          |¦  «        |j        ¦  «         t          |                     |¦  «        |¦  «         |dt           j                             | |¦  «        z  z   }	t          |	|¦  «        \  }
}t          t          |
¦  «        |
j        ¦  «         |	                     |¦  «        }|	                     |
¦  «        }t          ||z
  d¬¦  «        }t          ||z
  d¬¦  «        }t          ||¦  «         �Œ³d S )Nr   rC   g{®Gáz„?Úfro)Úord)r   r   r   r   r	   ÚTr   r   rF   r   r
   r   )r.   r/   r   ÚXÚwÚVr   r@   r=   ÚA_perturbedÚR_primeÚnaive_approxÚoptim_approxÚnaive_approx_errorÚoptim_approx_errors                  r   Útest_orthogonal_procrustesr\   M   s™  € Ý„I‡N‚N�4ÑÔÐØ(ð Bñ B‰ˆˆ1åŒI�OŠO˜A˜qÑ!Ô!ˆõ ŒI�OŠO˜A˜qÑ!Ô!ˆÝ�A”C˜!‘G‰}Œ}‰ˆˆ1Ý�˜A™œ ¤Ñ$Ô$Ð$åŒF�1�a”c‰NŒNˆå$ Q¨Ñ*Ô*‰ˆˆ1Ý�˜A™œ ¤Ñ$Ô$Ð$Ý˜Ÿš˜a™œ !Ñ$Ô$Ð$à˜$¥¤§¢°°AÑ!6Ô!6Ñ6Ñ6ˆõ +¨;¸Ñ:Ô:‰
ˆ�Ý�˜G™œ g¤iÑ0Ô0Ð0à"—’ qÑ)Ô)ˆØ"—’ wÑ/Ô/ˆå! ,°Ñ"2¸Ð>Ñ>Ô>ÐÝ! ,°Ñ"2¸Ð>Ñ>Ô>ÐåÐ,Ð.@ÑAÔAÐAÑAð9Bð Br   c                 ó<   — |                       d¬¦  «        }| |z
  |fS )Nr   )Úaxis)Úmean)r   Úmus     r   Ú	_centeredra   n   s!   € Ø	
�Š�Qˆ‰Œ€BØˆr‰6�2ˆ:Ðr   c                  ó²  — t          j        ddgddgddgddggt          ¬¦  «        } t          j        ddgddgddgddggt          ¬¦  «        }t          | ¦  «        \  }}t          |¦  «        \  }}t	          ||¦  «        \  }}|t          j        t          |¦  «        ¦  «        z  }|t          j        ||¦  «        z  |z   }	t          |	|d	¬
¦  «         d S )Néýÿÿÿr   éþÿÿÿr$   ©Údtyper*   r   r   ç:Œ0âŽyE>©Úatol©	r   ÚarrayÚfloatra   r   r8   r
   rF   r   )
r:   r;   r   ÚA_mur   ÚB_mur@   r=   ÚscaleÚB_approxs
             r   Ú(test_orthogonal_procrustes_exact_examplerq   s   sá   € õ ŒX˜˜A�w  Q ¨"¨a¨°2°q°'Ð:Å%ÐHÑHÔH€FÝŒX˜˜1�v  1˜v¨¨2 w°°A°Ð7½uÐEÑEÔE€FÝ˜ÑÔ�G€A€tÝ˜ÑÔ�G€A€tÝ   AÑ&Ô&�D€A€qØ•”	�$˜q™'œ'Ñ"Ô"Ñ"€EØ•r”v˜a ‘|”|Ñ# dÑ*€HÝ�H˜f¨4Ð0Ñ0Ô0Ð0Ð0Ð0r   c                  ó¸  — t          j        ddgddgddgddggt          ¬¦  «        } t          j        ddgddgdd	gd
dggt          ¬¦  «        }t          | ¦  «        \  }}t          |¦  «        \  }}t	          ||¦  «        \  }}|t          j        t          |¦  «        ¦  «        z  }|t          j        ||¦  «        z  |z   }	t          j        ddgddgddgddggt          ¬¦  «        }
t          |	|
d¬¦  «         d}t          j        t          |	|z
  ¦  «        t          |¦  «        z  ¦  «        }t          ||¦  «         t	          ||¦  «        \  }}|t          j        t          |¦  «        ¦  «        z  }|t          j        ||¦  «        z  |z   }t          j        t          || z
  ¦  «        t          |¦  «        z  ¦  «        }t          ||¦  «         d S )Nrc   r   rd   r$   re   é(   r*   r   iØÿÿÿr   é   iîÿÿÿiëÿÿÿé   rg   rh   gñÒÇ×ÎÜ?rj   )r:   r;   r   rm   r   rn   r@   r=   ro   rp   ÚexpectedÚexpected_disparityÚAB_disparityÚA_approxÚBA_disparitys                  r   Ú,test_orthogonal_procrustes_stretched_exampler{   ‹   sÈ  € åŒX˜˜A�w  Q ¨"¨a¨°2°q°'Ð:Å%ÐHÑHÔH€FÝŒX˜˜2�w  A ¨¨C¨°1°a°&Ð9ÅÐGÑGÔG€FÝ˜ÑÔ�G€A€tÝ˜ÑÔ�G€A€tÝ   AÑ&Ô&�D€A€qØ•”	�$˜q™'œ'Ñ"Ô"Ñ"€EØ•r”v˜a ‘|”|Ñ# dÑ*€HÝŒx˜!˜R˜ 3¨ (¨Q°¨H°r¸1°gÐ>ÅeÐLÑLÔL€HÝ�H˜h¨TÐ2Ñ2Ô2Ð2à+ÐÝ”9�T (¨VÑ"3Ñ4Ô4µt¸A±w´wÑ>Ñ?Ô?€LÝ�LÐ"4Ñ5Ô5Ð5Ý   AÑ&Ô&�D€A€qØ•”	�$˜q™'œ'Ñ"Ô"Ñ"€EØ•r”v˜a ‘|”|Ñ# dÑ*€HÝ”9�T (¨VÑ"3Ñ4Ô4µt¸A±w´wÑ>Ñ?Ô?€LÝ�LÐ"4Ñ5Ô5Ð5Ð5Ð5r   c                  ó.  — t          j        ddgddgddgddggt          ¬¦  «        } t          j        ddgddgddgddggt          ¬¦  «        }t          j        d	d
gd	dgd	dgddgg¦  «        }t          | ¦  «        \  }}t          |¦  «        \  }}t	          ||¦  «        \  }}|t          j        t          |¦  «        ¦  «        z  }	|	t          j        ||¦  «        z  |z   }
t          |
|¦  «         t          |t          |¦  «        z  |¦  «         d S )Nr   rd   éüÿÿÿiúÿÿÿr$   re   r*   r   gCuRãÎÁ¿g”'œ‚aå?gCuRãÎÁ?gä¯ûT6¨Ù¿gä¯ûT6¨Ù?rj   )r:   r;   ÚB_standardizedr   rm   r   rn   r@   r=   ro   rp   s              r   Ú(test_orthogonal_procrustes_skbio_exampler   ¡   s.  € õ" ŒX˜˜2�w  B ¨!¨R¨°1°b°'Ð:Å%ÐHÑHÔH€FÝŒX˜˜1�v  1˜v¨¨1 v°°1¨vÐ6½eÐDÑDÔD€FÝ”XØ	�iÐ Ø	�jÐ!Ø	�kÐ"Ø	�[Ð!ð	#ñ $ô $€Nõ
 ˜ÑÔ�G€A€tÝ˜ÑÔ�G€A€tÝ   AÑ&Ô&�D€A€qØ•”	�$˜q™'œ'Ñ"Ô"Ñ"€EØ•r”v˜a ‘|”|Ñ# dÑ*€HÝ�H˜fÑ%Ô%Ð%Ý�A�˜Q™œ‘K Ñ0Ô0Ð0Ð0Ð0r   c                  ó*  — t          j        d¦  «        } t          | | ¦  «        \  }}t          |t          j        d¦  «        ¦  «         t          j        d¦  «        } t          | | ¦  «        \  }}t          |t          j        d¦  «        ¦  «         d S )N)r   r   )r   r   r   )r   Úemptyr   r   Úidentity)r&   Úrr=   s      r   Ú
test_emptyr„   Â   s~   € Ý
Œ�ÑÔ€AÝ   AÑ&Ô&�D€A€qÝ�A•r”x Ñ'Ô'Ñ(Ô(Ð(å
Œ�ÑÔ€AÝ   AÑ&Ô&�D€A€qÝ�A•r”{ 1‘~”~Ñ&Ô&Ð&Ð&Ð&r   )Ú	itertoolsr   r   Únumpyr   Únumpy.testingr   r   Úpytestr   r   Úscipy.linalgr   r	   r
   r   Úscipy.sparse._sputilsr   r   r    r(   r5   rA   rN   r\   ra   rq   r{   r   r„   © r   r   ú<module>rŒ      s[  ðØ +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø *Ð *Ð *Ð *Ð *Ð *à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø .Ð .Ð .Ð .Ð .Ð .Ø (Ð (Ð (Ð (Ð (Ð (ð;ð ;ð ;ð;ð ;ð ;ð?ð ?ð ?ðCð Cð Cð
+ð 
+ð 
+ð(ð (ð (ðBð Bð BðBð ð ð
1ð 1ð 1ð06ð 6ð 6ð,1ð 1ð 1ðB'ð 'ð 'ð 'ð 'r   