
    i                         d Z ddlmZ ddlZddlmZ ddlm	Z	 g dZ
d Zd	 Zd
 Zd Zdi ddfdZd Zdi ddfdZddZy)z@Utilities used to generate various figures in the documentation.    )productN)pyplot   )pad)wavedec_keyswavedec2_keysdraw_2d_wp_basisdraw_2d_fswavedecn_basisboundary_mode_subplotc                     d}i }t        |       D ]3  }dD ]
  }d|||z   <    d|dz   z  }|| dz
  k  s#|j                  |       5 t        |j                               S )z6Subband keys corresponding to a wavedec decomposition. )adNr   r   rangepoplistkeyslevelapproxcoeffslevks        K/var/www/html/BatchJob/venv/lib/python3.12/site-packages/pywt/_doc_utils.pyr   r      ss    FFU|  	&A!%F6A:	&a?JJv     c                     d}i }t        |       D ]3  }dD ]
  }d|||z   <    d|dz   z  }|| dz
  k  s#|j                  |       5 t        |j                               S )z7Subband keys corresponding to a wavedec2 decomposition.r   )r   hvr   Nr   r   r   r   s        r   r   r      ss    FFU| % 	&A!%F6A:	&a?JJv r   c                 Z    | d   |d   }}| d   |d   }}||||||||g}||||||||g}||fS )af  (x, y) coordinates for the 4 lines making up a rectangular box.

    Parameters
    ==========
    bl : float
        The bottom left corner of the box
    ur : float
        The upper right corner of the box

    Returns
    =======
    coords : 2-tuple
        The first and second elements of the tuple are the x and y coordinates
        of the box.
    r   r    )blurxlxrybytbox_xbox_ys           r   _boxr*   '   sj      UBqEBUBqEBE E 5>r   c                 `   g }i }|D ]  }dx}}t        |      D ]0  \  }}|dv r|| d   d|dz   z  z  z  }|dv s || d   d|dz   z  z  z  }2 | d   ddz   z  z  }	| d   d|dz   z  z  }
t        || f||	z   | |
z
  f      \  }}|j                  ||f       ||	dz  z   | |
dz  z
  f||<    ||fS )Nr   )r   r      r   )r   r   )	enumerater*   append)shaper   coordscenterskeyoffset_xoffset_yncharsxsyxcycs                r   _2d_wp_basis_coordsr;   D   s   FG A8 ~ 	3GAtz!E!HAE
22z!E!HAE
22		3
 1XQU#1XQU#x(+"}xi"n57Br2h 27*XIa,?@A 7?r   r   c                    t        | |      \  }}|t        j                  dd      \  }}n|j                         }|D ]  }	|j	                  |	d   |	d   |        |j                          |j                  d       |dkD  rC|j                         D ]0  \  }
}t        |
      |k  s|j                  |d   |d   |
dd       2 ||fS z4Plot a 2D representation of a WaveletPacket2D basis.r   r   squarecenter)horizontalalignmentverticalalignment)
r;   pltsubplots
get_figureplotset_axis_offaxisitemslentext)r/   r   fmtplot_kwargsaxlabel_levelsr0   r1   figcoordr2   cs               r   r	   r	   X   s     *%6OFG	z,,q!$Rmmo )
a%(C()OOGGHammo 	4FC3x<'!adC,4*2  4	4
 7Nr   c           	      <   g }i }t        t        |      d      D ]  }|\  }}ddg}t        |       }t        |      D ]#  \  }	}
|
dv s|dxx   | d   d|	dz   z  z  z  cc<   % t        |      D ]#  \  }}
|
dv s|dxx   | d   d|dz   z  z  z  cc<   % | d   d	dz   z  z  |d<   | d   ddz   z  z  |d<   t	        |d   |d    f|d   |d   z   |d    |d   z
  f      \  }}|j                  ||f       |d   |d   dz  z   |d    |d   dz  z
  f|||f<    ||fS )Nr,   )repeatr   )r   r   )r   r   r   r-   r*   r.   )r/   levelsr0   r1   r2   key0key1offsetswidthsn0r6   n1r9   r:   s                 r   _2d_fswavedecn_coordsr[   m   s   FG|F+A6 >ta&e!$ 	6HBu}
eAh!b1f+55
	6 "$ 	6HBu}
eAh!b1f+55
	6 !HBF+q	!HBF+q	wqzGAJ;/qzF1I-
{VAY/FGIBr2h!(fQi!m!;")!*vay1}!<!>t>" 7?r   c           	         t        | |      \  }}|t        j                  dd      \  }}n|j                         }|D ]  }	|j	                  |	d   |	d   |        |j                          |j                  d       |dkD  rf|j                         D ]S  \  }
}t        j                  |
D cg c]  }t        |       c}      }||k  s8|j                  |d   |d   |
dd       U ||fS c c}w r=   )r[   rB   rC   rD   rE   rF   rG   rH   npmaxrI   rJ   )r/   rT   rK   rL   rM   rN   r0   r1   rO   rP   r2   rQ   r   r   s                 r   r
   r
      s     ,E6:OFG	z,,q!$Rmmo )
a%(C()OOGGHammo 	4FC&&#.Q#a&./Cl"!adC,4*2  4	4 7N /s   +C,
c                    |dk(  r,t        |       dz  dk(  rt        j                  | | d   ff      } dt        |       z  }t        j                  t        |       d|z  z         }t	        | ||f|      }|j                  ||d       |j                  |       |dk(  r)|j                  |||t        |       z   dz
   | dd d       n"|j                  |||t        |       z    | d       t        j                  d      }|}|rt        |       dz
  }	t        d	d
      }
n|dz  }t        |       }	t        d	d
      }
|dv rt        d      }
|
D ]B  }|j                  |||	z  z   |z  |j                         dz
  |j                         dz   gd       D y)z<Plot an illustration of the boundary mode in a subplot axis.periodizationr,   r   )modezk.Nzr.   g      ?)smoothconstantzerozk-)rI   r]   concatenatearanger   rE   	set_titleonesr   minr^   )xrb   rM   symwnpadtxpo2leftsteprngreps               r   r   r      s    3q6A:?NNA"y>*s1v:D
		#a&1t8#$A	Qt4	(BGGAr4LL 
$tc!f}q()1Sb648
$tc!f}%q$/ 
BD1vzBl1vBl--Ah P
d
"b(2668b="&&(R-*H$OPr   )T)__doc__	itertoolsr   numpyr]   
matplotlibr   rB   _dwtr   __all__r   r   r*   r;   r	   r[   r
   r   r!   r   r   <module>r}      s]    F   $ @

:( '*rd"#*. 14*+,!Pr   