Ë
    ÷Q(h1/  ã                   óB  — 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
mZmZmZ d„ Zd„ Zd„ Zd„ Zd	„ Zej&                  d
„ «       Zej&                  d„ «       Zd„ Zej&                  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„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(y)é    N)Úndimage)Úconnected_components)ÚPatchExtractorÚ_extract_patchesÚextract_patches_2dÚgrid_to_graphÚimg_to_graphÚreconstruct_from_patches_2dc                  óL  — t         j                  d d…d d…f   dz
  \  } }t        | «      }t        |«      }|j                  |j                  k(  sJ ‚t         j                  j                  |j                  |j                  dkD     |j                  |j                  dkD     «       y )Né   é
   r   )ÚnpÚmgridr	   ÚnnzÚtestingÚassert_array_equalÚdata)ÚxÚyÚgrad_xÚgrad_ys       úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/feature_extraction/tests/test_image.pyÚtest_img_to_graphr      sˆ   € Ü�8‰8�B�Q�B˜˜˜�FÑ˜bÑ �D€A€qÜ˜!‹_€FÜ˜!‹_€FØ�:‰:˜Ÿ™Ò#Ð#Ð#ô ‡J�J×!Ñ!Ø�‰�F—K‘K !‘OÑ$ f§k¡k°&·+±+À±/Ñ&Bõó    c                  óP  — t        j                  dt        ¬«      } d| d<   d| d d …df<   t        j                  d«      }d|d<   d|d<   d|d	<   t        || ¬
«      j	                  «       }t        j
                  g d¢g d¢g d¢g«      }t         j                  j                  ||«       y )N©é   é   ©Údtypeé   ©r   r   r   éÿÿÿÿ)r   r   éþÿÿÿ©r!   r   ©Úmask©r!   r   r   )r   r#   r!   )r   r!   r$   )r   ÚzerosÚboolr	   ÚtodenseÚarrayr   r   )r'   r   r   Údesireds       r   Útest_img_to_graph_sparser.       s‘   € ô �8‰8�F¤$Ô'€DØ€Dˆ�JØ€DŠˆAˆ�JÜ
�‰�Ó€AØ€A€d�GØ€A€d�GØ€A€d�GÜ˜! $Ô'×/Ñ/Ó1€FÜ�h‰hš	¢:ªzÐ:Ó;€GÜ‡J�J×!Ñ! &¨'Õ2r   c                  ó   — d} d}t        j                  | | ft        ¬«      }d|d|…d|…f<   d|| d …| d …f<   |j                  | dz  «      }t	        | | |t         j
                  ¬«      }t        |«      d   dk(  sJ ‚t        j                  dt        ¬«      }d|d<   d|d d …df<   t	        dd	d|j                  «       ¬
«      j                  «       }t        j                  g d¢g d¢g d¢g«      }t         j                  j                  ||«       t        j                  | | ft         j                  ¬«      }t	        | | | |¬«      }t        |«      d   dk(  sJ ‚t        j                  | | f«      }t	        | | | |t        ¬«      }|j                  t        k(  sJ ‚t	        | | | |t        ¬«      }|j                  t        k(  sJ ‚t	        | | | |t         j                   ¬«      }|j                  t         j                   k(  sJ ‚y )Nr   r!   r   Tr   )Ún_xÚn_yr'   Ú	return_asr   r"   r   r&   r(   )r   r!   r!   )r0   r1   Ún_zr'   )r0   r1   r3   r'   r    )r   r)   r*   Úreshaper   Úndarrayr   Úravelr+   r,   r   r   ÚonesÚint16r    ÚintÚfloat64)ÚsizeÚroi_sizer'   ÚAÚgraphr-   s         r   Útest_grid_to_graphr?   /   sÄ  € à€DØ€Hô �8‰8�T˜4�L¬Ô-€DØ#'€Dˆˆ8ˆ�Q�x�ZÐ	Ñ Ø#'€Dˆ(ˆ‰�h�Y‘ZÐ	Ñ Ø�<‰<˜˜a™Ó €DÜ˜$ D¨t¼r¿z¹zÔJ€AÜ Ó" 1Ñ%¨Ò*Ð*Ð*ô �8‰8�F¤$Ô'€DØ€Dˆ�JØ€DŠˆAˆ�JÜ˜!˜Q ¨¯
©
«Ô5×=Ñ=Ó?€EÜ�h‰hš	¢9ªiÐ8Ó9€GÜ‡J�J×!Ñ! %¨Ô1ô �7‰7�D˜$�<¤r§x¡xÔ0€DÜ˜$ D¨d¸Ô>€AÜ Ó" 1Ñ%¨Ò*Ð*Ð*ô �7‰7�D˜$�<Ó €DÜ˜$ D¨d¸ÄTÔJ€AØ�7‰7”dŠ?Ðˆ?Ü˜$ D¨d¸ÄSÔI€AØ�7‰7”cŠ>Ðˆ>Ü˜$ D¨d¸ÄRÇZÁZÔP€AØ�7‰7”b—j‘jÒ Ð Ñ r   c                 ó¦   — | }|d d d…d d d…f   }dD ]=  }||kD  }t        ||¬«      }t        j                  |«      d   t        |«      d   k(  rŒ=J ‚ y )Nr   )é2   é–   r&   r!   r   )r	   r   Úlabelr   )Úraccoon_face_fxtÚfaceÚthrr'   r>   s        r   Útest_connect_regionsrG   S   si   € Ø€Dà‘�!�‘S�q�S�‰>€DØò HˆØ�c‰zˆÜ˜T¨Ô-ˆÜ�}‰}˜TÓ" 1Ñ%Ô)=¸eÓ)DÀQÑ)GÓGÐGÐGñHr   c                 ó0  — | }|d d d…d d d…f   }|dkD  }t        |j                  d|iŽ}t        j                  |«      d   t	        |«      d   k(  sJ ‚|dkD  }t        |j                  |d dœŽ}t        j                  |«      d   t	        |«      d   k(  sJ ‚y )Nr   rA   r'   r!   r   rB   )r'   r    )r   Úshaper   rC   r   )rD   rE   r'   r>   s       r   Útest_connect_regions_with_gridrJ   ]   s£   € Ø€Dð ‘�!�‘S�q�S�‰>€Dà�"‰9€DÜ˜4Ÿ:™:Ð1¨DÑ1€EÜ�=‰=˜Ó˜qÑ!Ô%9¸%Ó%@ÀÑ%CÒCÐCÐCà�#‰:€DÜ˜4Ÿ:™:¨D¸Ò=€EÜ�=‰=˜Ó˜qÑ!Ô%9¸%Ó%@ÀÑ%CÒCÐCÑCr   c                 ó.  — | }|d d d…d d d…f   |dd d…d d d…f   z   |d d d…dd d…f   z   |dd d…dd d…f   z   }|d d d…d d d…f   |dd d…d d d…f   z   |d d d…dd d…f   z   |dd d…dd d…f   z   }|j                  t        j                  «      }|dz  }|S )Nr   r!   g      0@)Úastyper   Úfloat32)rD   rE   s     r   Údownsampled_facerN   l   sá   € à€DØ‘�!�‘S�q�S�‰>˜D   A ¡s¨ s ™OÑ+¨d±3°Q°3¸¸¸1¸°9©oÑ=ÀÀQÀTÈÀTÈ1È4ÈaÈ4ÀZÑ@PÑP€DØ‘�!�‘S�q�S�‰>˜D   A ¡s¨ s ™OÑ+¨d±3°Q°3¸¸¸1¸°9©oÑ=ÀÀQÀTÈÀTÈ1È4ÈaÈ4ÀZÑ@PÑP€DØ�;‰;”r—z‘zÓ"€DØˆD�L€DØ€Kr   c                 ó´   — | }t        j                  |j                  dz   «      }d|z
  |d d …d d …df<   d|dz  z
  |d d …d d …df<   d|dz  z
  |d d …d d …df<   |S )N©r   é   r   r   r!   r   ©r   r)   rI   )rN   rE   Ú
face_colors      r   Úorange_facerT   v   sh   € à€DÜ—‘˜$Ÿ*™* tÑ+Ó,€JØ ™*€JŠq’!�QˆwÑØ  q¡™.€JŠq’!�QˆwÑØ  q¡™.€JŠq’!�QˆwÑØÐr   c                 ót   — t        j                  d| j                  z   «      }| |d<   | dz   |d<   | dz   |d<   |S )NrP   r   r!   r   rR   )rE   Úimagess     r   Ú_make_imagesrW   €   sA   € ä�X‰X�d˜TŸZ™ZÑ'Ó(€FØ€Fˆ1�IØ�q‘€Fˆ1�IØ�q‘€Fˆ1�IØ€Mr   c                 ó   — t        | «      S ©N)rW   )rN   s    r   Údownsampled_face_collectionrZ   ‰   s   € äÐ(Ó)Ð)r   c                 ó–   — | }|j                   \  }}d\  }}||z
  dz   ||z
  dz   z  }t        |||f«      }|j                   |||fk(  sJ ‚y )N©é   r]   r!   ©rI   r   ©rN   rE   Úi_hÚi_wÚp_hÚp_wÚexpected_n_patchesÚpatchess           r   Útest_extract_patches_allrf   Ž   sb   € Ø€DØ�z‰z�H€CˆØ�H€CˆØ ™) a™-¨C°#©I¸©MÑ:ÐÜ  ¨¨S zÓ2€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ñ:r   c                 óž   — | }|j                   d d \  }}d\  }}||z
  dz   ||z
  dz   z  }t        |||f«      }|j                   |||dfk(  sJ ‚y )Nr   r\   r!   r   r^   )rT   rE   r`   ra   rb   rc   rd   re   s           r   Útest_extract_patches_all_colorrh   —   sj   € Ø€DØ�z‰z˜"˜1ˆ~�H€CˆØ�H€CˆØ ™) a™-¨C°#©I¸©MÑ:ÐÜ  ¨¨S zÓ2€GØ�=‰=Ð/°°c¸1Ð=Ò=Ð=Ñ=r   c                 ó¬   — | }|d d …dd…f   }|j                   \  }}d\  }}||z
  dz   ||z
  dz   z  }t        |||f«      }|j                   |||fk(  sJ ‚y )Né    éa   )r]   é   r!   r^   r_   s           r   Útest_extract_patches_all_rectrm       ss   € Ø€DØ’�2�b�5�‰>€DØ�z‰z�H€CˆØ�H€CˆØ ™) a™-¨C°#©I¸©MÑ:Ðä  ¨¨S zÓ2€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ñ:r   c                 óò  — | }|j                   \  }}d\  }}t        |||fd¬«      }|j                   d||fk(  sJ ‚t        d||z
  dz   z  ||z
  dz   z  «      }t        |||fd¬«      }|j                   |||fk(  sJ ‚t        j                  t
        «      5  t        |||fd¬«       d d d «       t        j                  t
        «      5  t        |||fd¬«       d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY w)Nr\   éd   ©Úmax_patchesç      à?r!   g       @g      ð¿)rI   r   r9   ÚpytestÚraisesÚ
ValueError)rN   rE   r`   ra   rb   rc   re   rd   s           r   Ú test_extract_patches_max_patchesrv   «   sÿ   € Ø€DØ�z‰z�H€CˆØ�H€Cˆä  ¨¨S z¸sÔC€GØ�=‰=˜S # s˜OÒ+Ð+Ð+ä˜S C¨#¡I°¡MÑ2°c¸C±iÀ!±mÑDÓEÐÜ  ¨¨S z¸sÔC€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ð:ä	�‰”zÓ	"ñ >Ü˜4 # s ¸Õ=÷>ä	�‰”zÓ	"ñ ?Ü˜4 # s ¸Õ>÷?ð ?÷>ð >ú÷?ð ?ús   ÂC!ÃC-Ã!C*Ã-C6c                 ó`   — | }t        ||j                  d¬«      }|j                  d   dk(  sJ ‚y )Nr   rp   r   r!   )r   rI   )rN   rE   re   s      r   Ú"test_extract_patch_same_size_imagerx   ½   s2   € Ø€Dô !  t§z¡z¸qÔA€GØ�=‰=˜Ñ˜qÒ Ð Ñ r   c                 ó°   — | }|j                   \  }}d|z  dz  d|z  dz  }}||z
  dz   ||z
  dz   z  }t        |||fd¬«      }|j                   |||fk(  sJ ‚y )Nr   r   r!   i   rp   r^   r_   s           r   Ú*test_extract_patches_less_than_max_patchesrz   Å   st   € Ø€DØ�z‰z�H€CˆØ�3‰w˜!‰|˜Q ™W¨™\ˆ€Cà ™) a™-¨C°#©I¸©MÑ:Ðä  ¨¨S z¸tÔD€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ñ:r   c                 óš   — | }d\  }}t        |||f«      }t        ||j                  «      }t        j                  j                  ||«       y ©Nr\   ©r   r
   rI   r   r   Úassert_array_almost_equal)rN   rE   rb   rc   re   Úface_reconstructeds         r   Ú test_reconstruct_patches_perfectr€   Ð   sF   € Ø€DØ�H€Cˆä  ¨¨S zÓ2€GÜ4°W¸d¿j¹jÓIÐÜ‡J�J×(Ñ(¨Ð/AÕBr   c                 óš   — | }d\  }}t        |||f«      }t        ||j                  «      }t        j                  j                  ||«       y r|   r}   )rT   rE   rb   rc   re   r   s         r   Ú&test_reconstruct_patches_perfect_colorr‚   Ù   sF   € Ø€DØ�H€Cˆä  ¨¨S zÓ2€GÜ4°W¸d¿j¹jÓIÐÜ‡J�J×(Ñ(¨Ð/AÕBr   c                 óP   — | }t        ddd¬«      }||j                  |«      k(  sJ ‚y )N©é   r…   ro   r   ©Ú
patch_sizerq   Úrandom_state)r   Úfit)rZ   ÚfacesÚextrs      r   Útest_patch_extractor_fitrŒ   â   s+   € Ø'€EÜ V¸È1ÔM€DØ�4—8‘8˜E“?Ò"Ð"Ñ"r   c                 ó€  — | }|j                   dd \  }}d\  }}d}t        |«      |z  }t        ||f|d¬«      }|j                  |«      }	|	j                   |||fk(  sJ ‚d}t        |«      t	        ||z
  dz   ||z
  dz   z  |z  «      z  }t        ||f|d¬«      }|j                  |«      }	|	j                   |||fk(  sJ ‚y )Nr!   r   r„   ro   r   r†   rr   )rI   Úlenr   Ú	transformr9   )
rZ   rŠ   r`   ra   rb   rc   rq   rd   r‹   re   s
             r   Ú test_patch_extractor_max_patchesr�   è   sð   € Ø'€EØ�{‰{˜1˜QÐ�H€CˆØ�H€Cˆà€KÜ˜U› kÑ1ÐÜØ˜�:¨;ÀQô€Dð �n‰n˜UÓ#€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ð:à€KÜ˜U›¤cØ	ˆs‰�Q‰˜3 ™9 q™=Ñ)¨KÑ7ó'ñ Ðô Ø˜�:¨;ÀQô€Dð �n‰n˜UÓ#€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ñ:r   c                 ó„   — | }t        dd¬«      }|j                  |«      }|j                  t        |«      dz  ddfk(  sJ ‚y )Nro   r   )rq   rˆ   é   é   )r   r�   rI   rŽ   )rZ   rŠ   r‹   re   s       r   Ú(test_patch_extractor_max_patches_defaultr”      sC   € Ø'€EÜ c¸Ô:€DØ�n‰n˜UÓ#€GØ�=‰=œS ›Z¨#Ñ-¨r°2Ð6Ò6Ð6Ñ6r   c                 óØ   — | }|j                   dd \  }}d\  }}t        |«      ||z
  dz   z  ||z
  dz   z  }t        ||fd¬«      }|j                  |«      }|j                   |||fk(  sJ ‚y ©Nr!   r   r„   r   )r‡   rˆ   )rI   rŽ   r   r�   )	rZ   rŠ   r`   ra   rb   rc   rd   r‹   re   s	            r   Ú test_patch_extractor_all_patchesr—     s€   € Ø'€EØ�{‰{˜1˜QÐ�H€CˆØ�H€CˆÜ˜U› s¨S¡y°1¡}Ñ5¸¸s¹ÀQ¹ÑGÐÜ c¨3 Z¸aÔ@€DØ�n‰n˜UÓ#€GØ�=‰=Ð/°°cÐ:Ò:Ð:Ñ:r   c                 óì   — t        | «      }|j                  dd \  }}d\  }}t        |«      ||z
  dz   z  ||z
  dz   z  }t        ||fd¬«      }|j	                  |«      }|j                  |||dfk(  sJ ‚y r–   )rW   rI   rŽ   r   r�   )	rT   rŠ   r`   ra   rb   rc   rd   r‹   re   s	            r   Útest_patch_extractor_colorr™     s‡   € Ü˜Ó%€EØ�{‰{˜1˜QÐ�H€CˆØ�H€CˆÜ˜U› s¨S¡y°1¡}Ñ5¸¸s¹ÀQ¹ÑGÐÜ c¨3 Z¸aÔ@€DØ�n‰n˜UÓ#€GØ�=‰=Ð/°°c¸1Ð=Ò=Ð=Ñ=r   c                  óX  — g d¢} g d¢}g d¢}g d¢}g d¢}g d¢}g d¢}g d¢}g d	¢}g d
¢}	g d¢}
g d¢}g d¢}g d¢}g d¢}| |z   |
z   }||z   |z   }||z   |z   }||z   |z   }||	z   |z   }t        |||||«      D ]´  \  }}}}}t        j                  t        j                  |«      «      j	                  |«      }t        |||¬«      }t        |«      }|j                  d | |k(  sJ ‚t        d„ t        ||«      D «       «      }|d|z     ||   j                  «       k(  j                  «       rŒ´J ‚ y )N)©r   r›   )é   r›   )©r!   ©r   rP   ©r…   )r�   r�   )r   rž   )r›   )é	   rP   rž   )r›   rŸ   rŸ   rž   )©r   é   r¡   r¡   )rœ   r¢   ))r   r   )r   r   )r   rœ   )é   r£   ))é   r¤   )r   r   )r   r   )r   r   ))r   r   r%   )r!   r   )r   r…   ))r¤   é   )r   r   )r   r…   )r   é   ))r¤   r   r   )r   r   r   ©é   r…   r    r§   ))r   r   r   ©r   r   r   )r!   r¨   r   )r!   r   r   ))r!   r   r   ©r!   r!   r!   )r   r!   r   )r   r   r   ))r   r   r!   r©   )r   r   r   )r   r   r   ))r   r   r   rª   )r£   r!   r£   )r£   r   r   )Úpatch_shapeÚextraction_stepc              3   óB   K  — | ]  \  }}t        |||z   d «      –— Œ y ­wrY   )Úslice)Ú.0ÚiÚjs      r   ú	<genexpr>z/test_extract_patches_strided.<locals>.<genexpr>B  s&   è ø€ ò "
Ù&* a¨ŒE�!�Q˜‘U˜D×!ñ"
ùs   ‚)r#   NN)Úzipr   ÚarangeÚprodr4   r   rŽ   rI   ÚtupleÚsqueezeÚall)Úimage_shapes_1DÚpatch_sizes_1DÚpatch_steps_1DÚexpected_views_1DÚlast_patch_1DÚimage_shapes_2DÚpatch_sizes_2DÚpatch_steps_2DÚexpected_views_2DÚlast_patch_2DÚimage_shapes_3DÚpatch_sizes_3DÚpatch_steps_3DÚexpected_views_3DÚlast_patch_3DÚimage_shapesÚpatch_sizesÚpatch_stepsÚexpected_viewsÚlast_patchesÚimage_shaper‡   Ú
patch_stepÚexpected_viewÚ
last_patchÚimagere   ÚndimÚlast_patch_slicess                                r   Útest_extract_patches_stridedrÔ     s{  € Ú2€OÚ-€NÚ-€Nâ1ÐÚ-€Mâ>€OÚ9€NÚ6€Nâ8ÐÚ7€MâB€OÚA€NÚB€NâDÐÚ@€Mà" _Ñ4°ÑF€LØ  >Ñ1°NÑB€KØ  >Ñ1°NÑB€KØ&Ð):Ñ:Ð=NÑN€NØ  =Ñ0°=Ñ@€LäJMØ�k ;°ÀóKò ÑFˆ�Z ¨]¸Jô —	‘	œ"Ÿ'™' +Ó.Ó/×7Ñ7¸ÓDˆÜ"Ø˜z¸:ô
ˆô �;Óˆà�}‰}˜U˜dÐ# }Ò4Ð4Ð4Ü!ñ "
Ü.1°*¸jÓ.Iô"
ó 
Ðð Ð$ tÑ+Ñ,°Ð6GÑ0H×0PÑ0PÓ0RÑRß
‰#‹%ñð 	ð ñr   c                 óš   — | }|j                   \  }}d}||z
  dz   ||z
  dz   f}t        ||¬«      }|j                   |d   |d   ||fk(  sJ ‚y )Nr…   r!   )r«   r   )rI   r   )rN   rE   r`   ra   Úprd   re   s          r   Útest_extract_patches_squarer×   J  sg   € à€DØ�z‰z�H€CˆØ	€AØ ™7 Q™;¨#°©'°A©+Ð7ÐÜ˜t°Ô3€GØ�=‰=Ð/°Ñ2Ð4FÀqÑ4IÈ1ÈaÐPÒPÐPÑPr   c                  ó(  — t        j                  g d¢g d¢g d¢g«      } t        j                  t        «      5  t        | d«       d d d «       t        j                  t        «      5  t        | d«       d d d «       y # 1 sw Y   Œ8xY w# 1 sw Y   y xY w)N)r!   r   r   )r   r¤   r£   r§   )r   r!   )r!   r   )r   r,   rs   rt   ru   r   )r   s    r   Útest_width_patchrÙ   T  sr   € ä
�‰’)šYª	Ð2Ó3€AÜ	�‰”zÓ	"ñ &Ü˜1˜fÔ%÷&ä	�‰”zÓ	"ñ &Ü˜1˜fÔ%÷&ð &÷&ð &ú÷&ð &ús   ¸A<Á&BÁ<BÂBc                 ó¸   — t        | «      }d}t        d¬«      }t        j                  t        |¬«      5  |j                  |«       ddd«       y# 1 sw Y   yxY w)zICheck that an informative error is raised if the patch_size is not valid.z*patch_size must be a tuple of two integers)r…   r…   r…   )r‡   )ÚmatchN)rW   r   rs   rt   ru   r�   )rT   rŠ   Úerr_msgÚ	extractors       r   Ú test_patch_extractor_wrong_inputrÞ   ]  sL   € ä˜Ó%€EØ:€GÜ¨)Ô4€IÜ	�‰”z¨Ô	1ñ #Ø×Ñ˜EÔ"÷#÷ #ñ #ús   µAÁA))Únumpyr   rs   Úscipyr   Úscipy.sparse.csgraphr   Ú sklearn.feature_extraction.imager   r   r   r   r	   r
   r   r.   r?   rG   rJ   ÚfixturerN   rT   rW   rZ   rf   rh   rm   rv   rx   rz   r€   r‚   rŒ   r�   r”   r—   r™   rÔ   r×   rÙ   rÞ   © r   r   ú<module>rå      sß   ðó Û Ý Ý 5÷÷ ò
ò3ò!!òHHòDð ‡�ñó ðð ‡�ñó ðòð ‡�ñ*ó ð*ò;ò>ò;ò?ò$!ò;òCòCò#ò;ò07ò;ò>ò,ò^Qò&ó#r   