
    !Цi                         S r SSKJr  SSKrSSKJr  SSKJ	r	  / SQr
S rS	 rS
 rS rS0 SS4S jrS rS0 SS4S jrSS jrg)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                     Sn0 n[        U 5       H6  nS H
  nSX!U-   '   M     SUS-   -  nX0S-
  :  d  M%  UR                  U5        M8     [        UR                  5       5      $ )z6Subband keys corresponding to a wavedec decomposition. )adNr   r   rangepoplistkeyslevelapproxcoeffslevks        N/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/pywt/_doc_utils.pyr   r      se    FFU|A!%FA: a?JJv      c                     Sn0 n[        U 5       H6  nS H
  nSX!U-   '   M     SUS-   -  nX0S-
  :  d  M%  UR                  U5        M8     [        UR                  5       5      $ )z7Subband keys corresponding to a wavedec2 decomposition.r   )r   hvr   Nr   r   r   r   s        r   r   r      se    FFU|%A!%FA: &a?JJv  r   c                 D    U S   US   p2U S   US   pTX#X3X2X"/nXDXEXUXT/nXg4$ )a6  (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*   '   sT      UBqEUBqEE E >r   c                 \   / n0 nU H  nS=pV[        U5       H3  u  pxUS;   a  XPS   SUS-   -  -  -  nUS;   d  M#  X`S   SUS-   -  -  -  nM5     U S   SWS-   -  -  n	U S   SUS-   -  -  n
[        XV* 4XY-   U* U
-
  45      u  pUR                  X45        XYS-  -   U* U
S-  -
  4X4'   M     X#4$ )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 ~GAz!!HAE
22z!!HAE
22	 &
 1XQU#1XQU#x+}xi"n57rh 7*XIa,?@  ?r   r   c           	         [        X5      u  pgUc  [        R                  " SS5      u  pOUR                  5       nU H  n	UR	                  U	S   U	S   U5        M     UR                  5         UR                  S5        US:  aC  UR                  5        H/  u  p[        U
5      U::  d  M  UR                  US   US   U
SSS9  M1     X4$ 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     *%6OF	z,,q!$Rmmo
a%(C( OOGGHammoFC3x<'!adC,4*2  4 &
 7Nr   c           	      D   / n0 n[        [        U5      SS9 GH  nUu  pVSS/n[        U 5      n[        U5       H&  u  pU
S;   d  M  US==   U S   SU	S-   -  -  -  ss'   M(     [        U5       H&  u  pU
S;   d  M  US==   U S   SUS-   -  -  -  ss'   M(     U S   SW	S-   -  -  US'   U S   SWS-   -  -  US'   [	        US   US   * 4US   US   -   US   * US   -
  45      u  pUR                  X45        US   US   S-  -   US   * US   S-  -
  4X5U4'   GM     X#4$ )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   sq   FG|F+A6a&e!$HBu}
eAh!b1f+55
 ( "$HBu}
eAh!b1f+55
 ( !HBF+q	!HBF+q	wqzGAJ;/qzF1I-
{VAY/FGIrh!(fQi!m!;")!*vay1}!<!>t 7" ?r   c           	         [        X5      u  pgUc  [        R                  " SS5      u  pOUR                  5       nU H  n	UR	                  U	S   U	S   U5        M     UR                  5         UR                  S5        US:  ai  UR                  5        HU  u  p[        R                  " U
 Vs/ s H  n[        U5      PM     sn5      nX::  d  M<  UR                  US   US   U
SSS9  MW     X4$ s  snf 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     ,E:OF	z,,q!$Rmmo
a%(C( OOGGHammoFC&&#.#Q#a&#./C"!adC,4*2  4 & 7N /s   -C0
c                 *   US:X  a-  [        U 5      S-  S:X  a  [        R                  " X S   445      n S[        U 5      -  n[        R                  " [        U 5      SU-  -   5      n[	        XU4US9nUR                  XVS5        UR                  U5        US:X  a(  UR                  XTU[        U 5      -   S-
   U SS S5        O!UR                  XTU[        U 5      -    U S5        [        R                  " S5      nUnU(       a  [        U 5      S-
  n	[        S	S
5      n
OUS-  n[        U 5      n	[        S	S
5      n
US;   a  [        S5      n
U
 HB  nUR                  XU	-  -   U-  UR                  5       S-
  UR                  5       S-   /S5        MD     g)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      sn    3q6A:?NNA"y>*s1v:D
		#a&1t8#$A	Qt4	(BGGA4LL 
tc!f}q()1Sb648
tc!f}%q$/ 
BD1vzBl1vBl--Ah
d
"b(2668b="&&(R-*H$O 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   