
    sh                         S SK r S SKrSSKJr  SSKJr  S SKJr  S SK	J
r
  \" \R                  R                  S5      rS rSS	 jrS
 rS rS rS rg)    N   )make_np)	make_grid)tf)EmbeddingInfojoinc                     [         (       a)  [        R                  R                  R	                  X5      $ [        R                  R                  R                  U 5      nUR	                  X5      $ N)_HAS_GFILE_JOINr   iogfiler   get_filesystem)abfss      v/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/utils/tensorboard/_embedding.py_gfile_joinr      sH     uu{{%%UU[[''*wwq}    c                    U(       d  U  Vs/ s H  n[        U5      PM     n nON[        U5      [        U S   5      :X  d   S5       eU/U -    Vs/ s H  nSR                  S U 5       5      PM     n n[        R                  R                  SR                  U 5      S-   5      n[        R                  R                  R                  [        US5      S5       nUR                  U5        S S S 5        g s  snf s  snf ! , (       d  f       g = f)Nr   z@len of header must be equal to the number of columns in metadata	c              3   8   #    U  H  n[        U5      v   M     g 7fr
   )str).0es     r   	<genexpr>make_tsv.<locals>.<genexpr>   s     0ac!ffas   
metadata.tsvwb)r   lenr   r   compatas_bytesr   r   GFiler   write)metadata	save_pathmetadata_headerxlmetadata_bytesfs          r   make_tsvr,      s    $,-HqCFH-?#sQK(
 
 	NM	N 
 <K:Kh:VW:VQDII0a00:VWYY''		((;d(BCN			;y.A4	HA	 
I	H .
 X 
I	Hs   C2"C7C<<
D
c                    SSK Jn  SSKJn  [	        [
        R                  " U R                  S5      S-  5      5      n[        [        U 5      US9n[        R                  " UR                  S   UR                  S   S45      nUR                  SSS5      nXvS UR                  S   2S S 2S S 24'   UR                  [        R                  " US	-  R!                  SS	5      5      5      nU" 5        n	UR#                  U	S
S9  U	R%                  5       n
S S S 5        [&        R                  R(                  R+                  [-        US5      S5       nUR/                  W
5        S S S 5        g ! , (       d  f       N]= f! , (       d  f       g = f)Nr   )Image)BytesIOg      ?)ncols      r      PNG)format
sprite.pngr   )PILr.   r   r/   intmathceilsizer   r   npzerosshape	transpose	fromarrayuint8clipsavegetvaluer   r   r#   r   r$   )	label_imgr&   r.   r/   nrowarranged_img_CHWarranged_augment_square_HWCarranged_img_HWCimbufim_bytesr+   s               r   make_spriterM   '   sB    tyy)..+345D !34@ #%((				"$4$:$:1$=qA# (11!Q:EU ;"2"8"8"; ;Q AB	#>#D"J"J1c"RS	TB	c
E"<<> 
 
		;y,?	F!	 
G	F	 
 
G	Fs   0!E(E9(
E69
Fc                 r   [        5       nU S[        U5      R                  S5       3Ul        [	        US5      Ul        U b  [	        US5      Ul        Ub`  [	        US5      UR                  l        UR                  R                  R                  UR                  S5      UR                  S5      /5        U$ )N:   tensors.tsvr   r6   r2   r1   )r   r   zfilltensor_namer   tensor_pathmetadata_pathsprite
image_pathsingle_image_dimextendr;   )r%   rE   subdirglobal_steptaginfos         r   get_embedding_infor^   @   s    ?DaK 0 6 6q 9:;D"6=9D(@!,V\!B$$++Y^^A->	q@Q,RSKr   c                     [        U S5      n[        R                  R                  R	                  US5       nUR                  [        R                  R                  U5      5        S S S 5        g ! , (       d  f       g = f)Nzprojector_config.pbtxtr   )r   r   r   r   r#   r$   r!   r"   )r&   contentsconfig_pathr+   s       r   write_pbtxtrb   L   sP    i)ABK			;	-			""8,- 
.	-	-s   /A//
A=c           	         [         R                  R                  R                  [	        US5      S5       nU  Hl  nU Vs/ s H  n[        UR                  5       5      PM     nnUR                  [         R                  R                  SR                  U5      S-   5      5        Mn     S S S 5        g s  snf ! , (       d  f       g = f)NrQ   r   r   r   )r   r   r   r#   r   r   itemr$   r!   r"   r   )matlistr&   r+   r(   is        r   make_matrg   R   s    			;y-@$	G1A()*1QVVXA*GGBII&&tyy|d':;<  
H	G* 
H	Gs   
B6#B1"AB61B66
Cr
   )r9   numpyr<   _convert_npr   _utilsr   tensorboard.compatr   2tensorboard.plugins.projector.projector_config_pb2r   hasattrr   r   r   r   r,   rM   r^   rb   rg    r   r   <module>ro      sK         ! L "%%++v. 2	.=r   