U
    do                     @   s   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Zd dlZ	d dl
Z	ejejeZejeejedejeddZdadd Zdd Zd	d
 Zdd Zeddd Zeddd Zdd Zedkreejdd  dS )    NZ	templatesZstatic)Ztemplate_folderZstatic_folderc                 C   sB   |    | jdd }| jd}tj| j| j||  dS )Nz<script>   z	</script>resultscript)ZbuildcontentZhtmlcontentfindflaskjsonify	containerstrip)chartZscript_startZ
script_end r   :/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/mint/app.pyjsonify_nvd3   s    r   c              
   C   sJ  zt | }W n6 tk
rD } zd| t| W Y S d }~X Y nX tjtj| d }t	j
|d tjdd}tjdk rt|jd tj  d}ntj}t d|jd |}|j|||df dd |j|||df d	d |j|||d
f dd |j|||d
f ||df  dd |j|||d
f ||df  dd t|S )NCannot load file {}: {}r   Z_summary_chart.03gnameheightZy_axis_format   minxyr   max   Zmean   zm+stdzm-std)nploadtxt	Exceptionformatstrospathsplitextbasenamenvd3	lineChartargschart_heightsampler   shapearange	add_serier   )filenamedatae
chart_namer   stepxdatar   r   r   visualize_summary(   s(    &
$$r3   c           
   
   C   s  z*t | }|jdkr(|d d t jf }W n6 tk
r` } zd| t| W Y S d }~X Y nX tj	tj
| d }tj|d tjdd}tjdk rt|jd tj  d}ntj}t d|jd |}|jd dkr`|jd | }|d ||  ||f}|j|d | |jdddd	 |j|d | |jddd
d	 |j|||df |d	 n@tdt|jd tjD ]&}	|j||||	f d||	d	 qxt|S )Nr   r   r   Z
_log_chartr   r   )ZaxisZrunning_minr   Zrunning_maxz{}[{}])r   r   ndimZnewaxisr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r*   r+   Zreshaper,   r   rangeZ
max_curvesr   )
r-   r.   r/   r0   r   r1   r2   Z
trunc_sizeZrunning_matir   r   r   visualize_print_logA   sJ    

&







r7   c                 C   sL   t jtj| }| dr"t|S | dr4t|S tj	d
| ddS d S )NsummarylogzUnsupport file: {} r   )r!   r"   joinr'   rootendswithr3   r7   r   r   r   )r-   fullnamer   r   r   visualize_fileo   s    

r?   /c                  C   s@   t  tjtjd} |   dd | D }tjdtj||dS )Nz*.*c                 S   s   g | ]}t j|qS r   )r!   r"   r$   ).0fr   r   r   
<listcomp>   s     zindex.<locals>.<listcomp>z
index.html)r<   namesZdebug_messages)	globr!   r"   r;   r'   r<   sortr   Zrender_template)filesrD   r   r   r   index|   s    rH   z/visualization/<string:name>c                 C   s   t | }|S )N)r?   )r   retr   r   r   visualization   s    rJ   c                 C   s   t d}|jddtddd |jddtd	d
d |jdtddd |jdtddd |jddtddd || atj	tj
t}|tj tdtj tjj   d S )NzThe mint visualizer.z-pz--porti  zThe flask port to use.)typedefaulthelpz-rz--root.z0The root folder to read files for visualization.z--max_curves   z2The max number of curves to show in a dump tensor.z--chart_heighti,  zThe chart height for nvd3.z-sz--samplei8zSample every given number of data points. A negative number means the total points we will sample on the whole curve. Default 100 points.z#Tornado server starting on port {}.)argparseArgumentParseradd_argumentintr    
parse_argsr'   tornadoZ
httpserverZ
HTTPServerZwsgiZWSGIContainerapplistenportprintr   ZioloopZIOLoopinstancestart)argvparserserverr   r   r   main   sN    


r_   __main__r   )rP   r   rE   Znumpyr   r%   r!   sysZtornado.httpserverrU   Ztornado.wsgir"   abspathdirname__file__Z
__folder__ZFlask__name__r;   rV   r'   r   r3   r7   r?   ZrouterH   rJ   r_   r\   r   r   r   r   <module>   s4   .

-