o
    Ni                     @   sD  d Z ddlZddlZddlZddlZddlZddlZddlmZm	Z	 ddl
mZ ddl
mZ ddl
mZ ddlmZ ddlZddlZdZejZeddd	 ed
ejdd dd Zeded
eddfddZdde	ee  dee fddZ	dde	ee  d
eddfddZdd Ze dkre!d
g e"e dS dS )z)Script which generates datasets figures.
    N)ListOptional)app)flags)logging
   datasetszEComma separated list of datasets to generates. None for all datasets.dst_dirvisualizationz#Destination dir to save the images.c                    s   t   fdd}|S )z0Logs the exceptions from a `ThreadPoolExecutor`.c               
      sF   z | i |W S  t y"   t }td|  d| d|   w )NzException occured for z, z:
)	Exception	traceback
format_excr   error)argskwargserr_strfn t/home/ubuntu/.local/lib/python3.10/site-packages/tensorflow_datasets/scripts/documentation/generate_visualization.py	decorated8   s   z!_log_exception.<locals>.decorated)	functoolswraps)r   r   r   r   r   _log_exception5   s   r   	full_namereturnc                 C   sz  |  ddd }tj||}tjj|r!t	d|  d dS t	d|  d | 
d\}}}t| d	| }t|j	j }|sQt	d
|  d dS d|v rXd}	n|d }	|j|	dd}
tjj|sqtjj| z	t|
|j	}W n ty   t	d|  d Y dS w t }tj||}|| tjj|| W d   n1 sw   Y  t| dS )zSave the generated figures for the dataset in dst_dir.

  Args:
    full_name: Name of the dataset to build `dataset`, `dataset/config`.
    dst_dir: Destination where the dataset will be saved (as
      `dataset-config-version`)
  /-z.pngzSkiping visualization for z (already exists)NzGenerating visualization for z...:z	Dataset `z` not generated.trainr   F)splitshuffle_filesz)Visualisation not supported for dataset ``)replaceospathjointfiogfileexistsr   info
rpartitiontfdsbuilderlistsplitskeys
as_datasetmakedirsshow_examplesr   tempfileTemporaryDirectorysavefigcopypltclose)r   r	   dst_filenamedst_pathbuilder_name_versionr.   split_namesr    dsfiguretmp_dirtmp_pathr   r   r   _generate_single_visualizationD   s<   	

rE   c                 C   s6   | du rt jjjddS ttjdd | D }|S )zList all builder names `ds/version` and `ds/config/version` to generate.

  Args:
    datasets: List of datasets from which get the builder names.

  Returns:
    builder_names: The builder names.
  NT)current_version_onlyc                 S   s   g | ]	}t jj|qS r   )r-   core
registeredsingle_full_names).0r=   r   r   r   
<listcomp>   s    z#_get_full_names.<locals>.<listcomp>)r-   rG   rH   list_full_namesr/   	itertoolschainfrom_iterable)r   builder_namesr   r   r   _get_full_namesr   s   	
rQ   c                C   sh   t | }tjt|d}tdt| d tt	}|
|| W d   dS 1 s-w   Y  dS )zGenerate Visualization for datasets.

  Args:
    datasets: List of all `dataset` names to generate. If None, visualization
      for all available datasets will be generated.
    dst_dir: Directory where saving the images.
  r	   zGenerate figures for z	 buildersN)rQ   r   partialrE   r   r+   lenmultiprocessingPoolWORKER_COUNT_DATASETSmap)r   r	   
full_namesgenerate_fntpoolr   r   r   generate_visualization   s   "r\   c                 C   s(   t jr	t jdnd}t|t jd dS )zMain script.,NrR   )FLAGSr   r    r\   r	   )r>   r   r   r   r   main   s   r_   __main__)N)#__doc__r   rM   rU   r$   r5   r   typingr   r   abslr   r   r   matplotlib.pyplotpyplotr9   
tensorflowr'   tensorflow_datasetsr-   rW   r^   DEFINE_stringrG   gcs_pathr   strrE   rQ   r\   r_   __name__mark_flags_as_requiredrunr   r   r   r   <module>   sR    -

