
    h}                     0    SS jr S rS rS	S jrS rS rg)
Tc                   ^^^^ SSK m SSKJs  Jm  SSKJm  UUUU4S jn[        U [        5      (       a(  U  Vs/ s H
  o2" U5      PM     nnTR                  U5      $ U" U 5      nU$ ! [         a    [        S5         Ngf = fs  snf )a%  Render matplotlib figure to numpy format.

Note that this requires the ``matplotlib`` package.

Args:
    figure (matplotlib.pyplot.figure) or list of figures: figure or a list of figures
    close (bool): Flag to automatically close the figure

Returns:
    numpy.array: image in [CHW] order
    Nzplease install matplotlibc                 b  > T
R                  U 5      nUR                  5         TR                  UR                  5       TR                  S9nU R
                  R                  5       u  p4UR                  XCS/5      S S 2S S 2SS24   nTR                  USSS9nT(       a  T	R                  U 5        U$ )Ndtype   r         )sourcedestination)
FigureCanvasAggdraw
frombufferbuffer_rgbauint8canvasget_width_heightreshapemoveaxisclose)figurer   datawh	image_hwc	image_chwr   nppltplt_backend_aggs          L/var/www/fran/franai/venv/lib/python3.13/site-packages/tensorboardX/utils.pyrender_to_rgb&figure_to_image.<locals>.render_to_rgb   s     008}}V//1}B}}--/LL!+Aq!A#I6	KK	!KC	IIf    )numpymatplotlib.backends.backend_aggbackendsbackend_aggmatplotlib.pyplotpyplotModuleNotFoundErrorprint
isinstanceliststack)	figuresr   r    r   imagesimager   r   r   s	    `    @@@r   figure_to_imager1      s     +AA'	 	 '4  6=>gF-'g>xxg&'  +)*+ ?s   A) B)B Bc                      g )N r3   r"   r   graphviz_to_imager4   (   s    r"   c           
      B   SS K nU R                  u  p#pEnU R                  UR                  :X  a  UR	                  U 5      S-  n S nU" U R                  S   5      (       dZ  [        SU R                  S   R                  5       -  U R                  S   -
  5      nUR                  XR                  XXEU4S94SS9n SUR                  5       S-
  S-  -  n	U R                  S   U	-  n
UR                  X	XXEU4S9n UR                  U S	S
9n UR                  XX-  X-  U4S9n U $ )Nr   g     o@c                 .    U S:g  =(       a
    X S-
  -  S:H  $ )Nr      r3   )nums    r   	is_power2!_prepare_video.<locals>.is_power23   s    ax4c1Wo!34r"   r	   )shape)axisr7   )newshape)r	   r   r   r7      r   )axes)r#   r;   r   r   float32int
bit_lengthconcatenatezerosr   	transpose)Vr   btcr   r   r9   len_additionn_rowsn_colss              r   _prepare_videorM   ,   s'   GGMA!ww"((JJqMD 5 QWWQZ  1aggaj3355
BCNNq9:;!  E !,,.1$*+FWWQZ6!F


11;
<A
Q/0A


16:vz1=
>AHr"   c           	         SS K n[        XR                  5      (       d   S5       eU R                  S   S:X  a  UR	                  X U /S5      n U R
                  S:X  a  U R                  S   S:X  d  U R                  S   S:X  d   eU R                  S   nU R                  S   nU R                  S   n[        X15      n[        UR                  [        U5      U-  5      5      nUR                  U R                  S   XF-  XQ-  4U R                  S9nSn[        U5       HB  n	[        U5       H0  n
X:  a    M  X   US S 2X-  U	S-   U-  2X-  U
S-   U-  24'   US-   nM2     MD     U$ )Nr   z*plugin error, should pass numpy array herer7   r   r   r	   r   )r#   r+   ndarrayr;   rC   ndimminrA   ceilfloatrD   r   range)Incolsr   nimgHWnrowsr   iyxs              r   	make_gridr^   F   s]   	::  EDE wwqzQNNA!9a(66Q;1771:?aggajAo==771:D	
A	
AEde+,-EXXqwwqz19ai8XHF	A5\uAy>?dF1aeQUaK'A{)::;AA	   Mr"   c                    [        U5      S:X  d   S5       e[        [        U5      5      [        U5      :X  d
   SU 35       e[        U R                  5      [        U5      :X  d   SU R                   SU 35       eUR                  5       nS Vs/ s H  o!R	                  U5      PM     nnU R                  U5      nU$ s  snf )Nr>   zOnly 5D tensor is supported.JYou can not use the same dimension shorthand twice.         input_format: Ksize of input tensor and input format are different.         tensor shape: , input_format: NTCHW)lensetr;   upperfindrE   )tensorinput_formatrI   indextensor_NTCHWs        r   convert_to_NTCHWrl   ^   s    |!A#AA!s< !S%66 & ;#n9& &6v||L 11 D 6||n$4\N4D D1%%'L+237aq!7E3##E*L 4s   B>c                 L   SS K n[        [        U5      5      [        U5      :X  d
   SU 35       e[        U R                  5      [        U5      :X  d   SU R                   SU 35       eUR	                  5       n[        U5      S:X  aO  S Vs/ s H  o1R                  U5      PM     nnU R                  U5      n[        U5      nUR                  SSS5      $ [        U5      S	:X  aZ  S
 Vs/ s H  o1R                  U5      PM     nnU R                  U5      nUR                  S   S:X  a  UR                  XwU/S5      nU$ [        U5      S:X  aG  S Vs/ s H  o1R                  U5      PM     nnU R                  U5      n UR                  X U /S5      n U $ g s  snf s  snf s  snf )Nr   r`   ra   rb   r   NCHWr7   r	   r   HWCHW)
r#   rd   re   r;   rf   rg   rE   r^   rC   r-   )rh   ri   r   rI   rj   tensor_NCHW
tensor_CHW
tensor_HWCs           r   convert_to_HWCrt   j   s   s< !S%66 & ;#n9& &6v||L 11 D 6||n$4\N4D D1%%'L
<A/56v!""1%v6&&u-{+
##Aq!,,
<A/45u!""1%u5%%e,
A!#(LaPJ
<A/34t!""1%t4!!%(662A6	  7 6 5s   F*FF!N)T)   )r1   r4   rM   r^   rl   rt   r3   r"   r   <module>rv      s$   #L	40	r"   