o
    wZh                     @   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   Zget_filesystem)abfs r   Q/var/www/auris/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_pathZmetadata_headerZ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      ?)Zncols      r      ZPNG)format
sprite.pngr   )ZPILr'   r
   r(   intmathceilsizer   r   npZzerosshapeZ	transposeZ	fromarrayZuint8Zclipsavegetvaluer   r   r!   r   r"   )	label_imgr$   r'   r(   ZnrowZarranged_img_CHWZarranged_augment_square_HWCZarranged_img_HWCZimbufZim_bytesr%   r   r   r   make_sprite'   s"    
"r8   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   r-   r*   r)   )r   r   zfillZtensor_namer   Ztensor_pathZmetadata_pathZspriteZ
image_pathZsingle_image_dimextendr1   )r#   r6   subdirZglobal_steptaginfor   r   r   get_embedding_info@   s   rA   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$   contentsZconfig_pathr%   r   r   r   write_pbtxtL   s   
"rC   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 )Nr;   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   )Zmatlistr$   r%   r   r   r   r   make_matR   s   "rF   r   )r/   numpyr2   Z_convert_npr   _utilsr   Ztensorboard.compatr   Z2tensorboard.plugins.projector.projector_config_pb2r   hasattrr
   r   r	   r   r&   r8   rA   rC   rF   r   r   r   r   <module>   s   
