o
    0h                     @   s   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d	 Zdd
dZdd Zdd Zdd Zdd ZdS )    N   )make_np)	make_grid)tf)EmbeddingInfojoinc                 C   s.   t r
tjj| |S tjj| }|| |S N)_HAS_GFILE_JOINr   iogfiler   get_filesystem)abfs r   V/var/www/vscode/kcb/lib/python3.10/site-packages/torch/utils/tensorboard/_embedding.py_gfile_join   s   r   c                 C   s   |s
dd | D } nt |t | d ksJ ddd |g|  D } tjd| d }tjjt|dd}|	| W d    d S 1 sIw   Y  d S )	Nc                 S   s   g | ]}t |qS r   str).0xr   r   r   
<listcomp>   s    zmake_tsv.<locals>.<listcomp>r   z@len of header must be equal to the number of columns in metadatac                 S   s    g | ]}d  dd |D qS )	c                 s   s    | ]}t |V  qd S r   r   )r   er   r   r   	<genexpr>   s    z&make_tsv.<locals>.<listcomp>.<genexpr>)r   )r   lr   r   r   r      s     
metadata.tsvwb)
lenr   compatas_bytesr   r
   r   GFiler   write)metadata	save_pathmetadata_headermetadata_bytesfr   r   r   make_tsv   s   "r)   c                 C   s(  ddl m} ddlm} tt| dd }tt	| |d}t
|jd |jd df}|ddd}||d |jd d d d d f< |t
|d	 dd	}| }	|j|	d
d |	 }
W d    n1 slw   Y  tjjt|dd}||
 W d    d S 1 sw   Y  d S )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(   r   r   r   make_sprite'   s"    
"rI   c                 C   sx   t  }| dt|d |_t|d|_| d ur t|d|_|d ur:t|d|j_|jj	
|d|dg |S )N:   tensors.tsvr   r2   r.   r-   )r   r   zfilltensor_namer   tensor_pathmetadata_pathsprite
image_pathsingle_image_dimextendr7   )r$   rA   subdirglobal_steptaginfor   r   r   get_embedding_info@   s   rY   c                 C   sR   t | d}tjj|d}|tj| W d    d S 1 s"w   Y  d S )Nzprojector_config.pbtxtr   )r   r   r
   r   r"   r#   r    r!   )r%   contentsconfig_pathr(   r   r   r   write_pbtxtL   s   
"r\   c              	   C   sp   t jjt|dd#}| D ]}dd |D }|t jd|d  qW d    d S 1 s1w   Y  d S )NrL   r   c                 S   s   g | ]}t | qS r   )r   item)r   ir   r   r   r   U   s    zmake_mat.<locals>.<listcomp>r   r   )	r   r
   r   r"   r   r#   r    r!   r   )matlistr%   r(   r   r   r   r   make_matR   s   "r`   r   )r5   numpyr8   _convert_npr   _utilsr   tensorboard.compatr   2tensorboard.plugins.projector.projector_config_pb2r   hasattrr
   r   r	   r   r)   rI   rY   r\   r`   r   r   r   r   <module>   s   
