
    sg                         d dl Z d dlZddlmZ ddlmZ d dlmZ d dl	m
Z
  eej                  j                  d      Zd Zdd	Zd
 Zd Zd Zd Zy)    N   )make_np)	make_grid)tf)EmbeddingInfojoinc                     t         r*t        j                  j                  j	                  | |      S t        j                  j                  j                  |       }|j	                  | |      S N)_HAS_GFILE_JOINr   iogfiler   get_filesystem)abfss      U/var/www/html/venv/lib/python3.12/site-packages/torch/utils/tensorboard/_embedding.py_gfile_joinr      sJ     uu{{1%%UU[[''*wwq!}    c                    |s| D cg c]  }t        |       } }nJt        |      t        | d         k(  sJ d       |g| z   D cg c]  }dj                  d |D               } }t        j                  j                  dj                  |       dz         }t        j                  j                  j                  t        |d      d      5 }|j                  |       d d d        y c c}w c c}w # 1 sw Y   y xY w)Nr   z@len of header must be equal to the number of columns in metadata	c              3   2   K   | ]  }t        |        y wr
   )str).0es     r   	<genexpr>zmake_tsv.<locals>.<genexpr>   s     0c!f0s   
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    $,-qCF--?#sQK(
 
 	NM	N 
 <K:Kh:VWQDII0a00WWYY''		((;d(BCN			;y.A4	H  A	    .
 X   s   C&C+C00C9c                    ddl m} ddlm} t	        t        j                  | j                  d      dz              }t        t        |       |      }t        j                  |j                  d   |j                  d   df      }|j                  ddd      }||d |j                  d   d d d d f<   |j                  t        j                  |d	z  j!                  dd	                  } |       5 }	|j#                  |	d
       |	j%                         }
d d d        t&        j                  j(                  j+                  t-        |d      d      5 }|j/                  
       d d d        y # 1 sw Y   XxY w# 1 sw Y   y xY w)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_spriterL   '   sT    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 !	 	" " s   1$E,E8,E58Fc                 n   t               }| dt        |      j                  d       |_        t	        |d      |_        | t	        |d      |_        |`t	        |d      |j                  _        |j                  j                  j                  |j                  d      |j                  d      g       |S )N:   tensors.tsvr   r5   r1   r0   )r   r   zfilltensor_namer   tensor_pathmetadata_pathsprite
image_pathsingle_image_dimextendr:   )r$   rD   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                     t        | d      }t        j                  j                  j	                  |d      5 }|j                  t        j                  j                  |             d d d        y # 1 sw Y   y xY w)Nzprojector_config.pbtxtr   )r   r   r   r   r"   r#   r    r!   )r%   contentsconfig_pathr*   s       r   write_pbtxtra   L   sY    i)ABK			;	- .			""8,-. . .s   /A//A8c           	      |   t         j                  j                  j                  t	        |d      d      5 }| D ]h  }|D cg c]  }t        |j                                }}|j                  t         j                  j                  dj                  |      dz                j 	 d d d        y c c}w # 1 sw Y   y xY w)NrP   r   r   r   )r   r   r   r"   r   r   itemr#   r    r!   r   )matlistr%   r*   r'   is        r   make_matrf   R   s    			;y-@$	G =1 	=A()*1QVVX*A*GGBII&&tyy|d':;<	== =*= =s   
B2 B-AB2-B22B;r
   )r8   numpyr;   _convert_npr   _utilsr   tensorboard.compatr   2tensorboard.plugins.projector.projector_config_pb2r   hasattrr   r   r   r   r+   rL   r]   ra   rf    r   r   <module>rn      sK         ! L "%%++v. 2	.=r   