§
    fŠtj¾7  ã                   ó  — d dl Z d dlZd dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZmZ d dlmZ e j        j        Ze j        j        Ze j                             dd¬¦  «        Zd	„ Zd
„ Zd„ Z ee¦  «        d„ ¦   «         Zd„ Z ee¦  «        d„ ¦   «         Z ee¦  «        d„ ¦   «         Z ee¦  «        d„ ¦   «         Z ee¦  «        d„ ¦   «         Z edd¬¦  «         ee¦  «        d„ ¦   «         ¦   «         Z ee¦  «        d„ ¦   «         Z ee¦  «        d„ ¦   «         Z  ee¦  «        d„ ¦   «         Z! ee¦  «        d„ ¦   «         Z" ee¦  «        d„ ¦   «         Z# ee¦  «        d„ ¦   «         Z$ ee¦  «        d„ ¦   «         Z%dS )é    N)Úxp_assert_closeÚxp_assert_equalÚxp_swapaxesÚis_torchÚmake_xp_test_caseÚ_xp_copy_to_numpy)Ú
convolve1d)Úsavgol_coeffsÚsavgol_filter)Ú_polyderz
dask.arrayzlinalg.lstsq is missing rcond)Úreasonc                 óJ   — t          | ||¬¦  «        }t          ||¦  «         d S )N©Úxp)r   r   )ÚpÚmÚexpectedr   Údps        úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/signal/tests/test_savitzky_golay.pyÚcheck_polyderr      s,   € Ý	�!�Q˜2Ð	Ñ	Ô	€BÝ�B˜Ñ!Ô!Ð!Ð!Ð!ó    c                 ó¨  — dgddgfdgddgfg d¢dg d¢fg d¢dddgfg d¢ddgfg d¢ddgfg d¢g d¢gdg d¢g d¢gfg d¢g d¢gdddgd	dggfg d¢g d¢gddgd	ggfg d¢g d¢gddgdggfg
}|D ]f\  }}}|                       |¦  «        }|                       |¦  «        }t          |j        dk    r|j        n|||j        dk    r|j        n|| ¦  «         Œgd S )
Né   r   é   )é   é   r   é   r   r   )r   r   é   é
   )Úasarrayr   ÚndimÚT)r   Úcasesr   r   r   ÚppÚees          r   Útest_polyderr&      sq  € à
ˆˆa�!�ˆØ
ˆˆa�!�ˆØ	ˆˆ�A�y�y�yÐ!Ø	ˆˆ�A˜˜1�vÐØ	ˆˆ�A˜�sÐØ	ˆˆ�A˜�sÐØ
ˆ)ˆ)�Y�Y�YÐ	  Y Y Y°	°	°	Ð$:Ð;Ø
ˆ)ˆ)�Y�Y�YÐ	  a¨ V¨b°!¨WÐ$5Ð6Ø
ˆ)ˆ)�Y�Y�YÐ	  a S¨2¨$ KÐ0Ø
ˆ)ˆ)�Y�Y�YÐ	  a S¨1¨# JÐ/ð€Eð  ð 
ð 
‰ˆˆ1ˆhØ�ZŠZ˜‰]Œ]ˆØ�ZŠZ˜Ñ!Ô!ˆÝØ”G˜q’L�LˆBŒDˆD bØØ”G˜a’K�KˆBŒDˆD RØñ		
ô 	
ð 	
ð 	
ð
ð 
r   c                 óð   — |€| dz  }t          j        | ¦  «        }||k                         t          ¦  «        }t          j        t          j        |||¦  «        |¦  «        }|                     |¦  «        S )züThis is an alternative implementation of the SG coefficients.

    It uses numpy.polyfit and numpy.polyval. The results should be
    equivalent to those of savgol_coeffs(), but this implementation
    is slower.

    window_length should be odd.

    Nr   )ÚnpÚarangeÚastypeÚintÚpolyvalÚpolyfitr    )Úwindow_lengthÚ	polyorderÚposr   ÚtÚunitÚhs          r   Úalt_sg_coeffsr4   7   sh   € ð €{Ø˜qÑ ˆÝ
Œ	�-Ñ Ô €AØ�ŠH×Ò�SÑ!Ô!€DÝ
Œ
•2”:˜a  yÑ1Ô1°1Ñ5Ô5€AØ�:Š:�a‰=Œ=Ðr   c                 ó†  — t          dd| ¬¦  «        }t          ||                      dg| j        ¬¦  «        ¦  «         t          dd| ¬¦  «        }t          ||                      g d¢| j        ¬¦  «        d	¬
¦  «         t          dd| ¬¦  «        }t          ||                      g d¢| j        ¬¦  «        d	¬
¦  «         t          ddd| ¬¦  «        }t          ||                      g d¢| j        ¬¦  «        d	¬
¦  «         t          dddd| ¬¦  «        }t          ||                      g d¢| j        ¬¦  «        d	¬
¦  «         d S )Nr   r   r   ç      ð?©Údtyper   r   )ç        r   r   ç»½×Ùß|Û=©Úatolr   é   )r9   r   r   r   r   ©r0   r   )r9   r   r   r   r   Údot©r0   Úuser   )r9   r   r   r   r   )r
   r   r    Úfloat64)r   r3   s     r   Útest_sg_coeffs_trivialrC   I   sM  € õ 	�a˜˜rÐ"Ñ"Ô"€AÝ�A�r—z’z 3 %¨r¬z�zÑ:Ô:Ñ;Ô;Ð;å�a˜˜rÐ"Ñ"Ô"€AÝ�A�r—z’z + + +°R´Z�zÑ@Ô@ÀuÐMÑMÔMÐMå�a˜˜rÐ"Ñ"Ô"€AÝ�A�r—z’zÐ"3Ð"3Ð"3¸2¼:�zÑFÔFÈUÐSÑSÔSÐSå�a˜  bÐ)Ñ)Ô)€AÝ�A�r—z’zÐ"3Ð"3Ð"3¸2¼:�zÑFÔFÈUÐSÑSÔSÐSå�a˜  u°Ð4Ñ4Ô4€AÝ�A�r—z’zÐ"3Ð"3Ð"3¸2¼:�zÑFÔFÈUÐSÑSÔSÐSÐSÐSr   c                 óÒ   — d gt          t          | ¦  «        ¦  «        z   D ]E}t          | ||d|¬¦  «        }t          | |||¬¦  «        }t	          ||dd| › d|› d|› �¬¦  «         ŒFd S )	Nr?   r@   r>   g»½×Ùß|ë=zwindow_length = z
, order = z, pos = )r<   Úerr_msg)ÚlistÚranger
   r4   r   )r.   Úorderr   r0   Úh1Úh2s         r   Úcompare_coeffs_to_altrK   \   s    € ð ˆv��U =Ñ1Ô1Ñ2Ô2Ñ2ð 
ð 
ˆÝ˜=¨%°S¸eÈÐKÑKÔKˆÝ˜=¨%°S¸RÐ@Ñ@Ô@ˆÝØ�˜ØT }ÐTÐTÀÐTÐTÈsÐTÐTð	
ñ 	
ô 	
ð 	
ð 	
ð
ð 
r   c                 óv   — t          ddd¦  «        D ]&}t          |¦  «        D ]}t          ||| ¬¦  «         ŒŒ'd S )Nr   é   r   r   )rG   rK   )r   r.   rH   s      r   Útest_sg_coeffs_comparerN   i   s[   € õ ˜q ! Q™œð ?ð ?ˆÝ˜=Ñ)Ô)ð 	?ð 	?ˆEÝ! -°¸2Ð>Ñ>Ô>Ð>Ð>ð	?ð?ð ?r   c                 óL  — d}d}|dz  }|                       ddd¦  «        }|d         |d         z
  }d|d	z  z  |z
  }t          ||| ¬
¦  «        }|                      t          t	          |¦  «        t	          |¦  «        ¦  «        ¦  «        }t          ||| …         ||| …         ¦  «         d|dz  z  dz
  }	t          ||d|| ¬¦  «        }|                      t          t	          |¦  «        t	          |¦  «        ¦  «        ¦  «        }
t          |
|| …         |	|| …         ¦  «         d|z  }t          ||d|| ¬¦  «        }|                      t          t	          |¦  «        t	          |¦  «        ¦  «        ¦  «        }t          ||| …         ||| …         ¦  «         d S )Nr=   é	   r   r   é   é+   r   ç      à?r   r   g      ø?)ÚderivÚdeltar   ç      @)Úlinspacer
   r    r	   r   r   )r   r/   r.   ÚhalflenÚxrU   Úyr3   Úy0ÚdyÚy1Úd2yÚy2s                r   Útest_sg_coeffs_exactr`   q   s¸  € à€IØ€MØ˜qÑ €Gà
�Š�A�r˜2ÑÔ€AØˆaŒD�1�Q”4‰K€Eð
 	ˆa�1‰f‰�qÑ€AÝ�m Y°2Ð6Ñ6Ô6€AØ	�Š•JÕ0°Ñ3Ô3Õ5FÀqÑ5IÔ5IÑJÔJÑ	KÔ	K€BÝ�B�w ˜xÐ'Ô(¨!¨G°W°HÐ,<Ô*=Ñ>Ô>Ð>ð 
ˆq�A‰v‰˜Ñ	€BÝ�m Y°a¸uÈÐLÑLÔL€AØ	�Š•JÕ0°Ñ3Ô3Õ5FÀqÑ5IÔ5IÑJÔJÑ	KÔ	K€BÝ�B�w ˜xÐ'Ô(¨"¨W°g°XÐ-=Ô*>Ñ?Ô?Ð?ð �‰'€CÝ�m Y°a¸uÈÐLÑLÔL€AØ	�Š•JÕ0°Ñ3Ô3Õ5FÀqÑ5IÔ5IÑJÔJÑ	KÔ	K€BÝ�B�w ˜xÐ'Ô(¨#¨g°w°hÐ.>Ô*?Ñ@Ô@Ð@Ð@Ð@r   c           
      óæ  — |                       g d¢| j        ¬¦  «        }|dz  dz  }|dz  }|                      |d¦  «        }t          |j        d         ¦  «        D ]”}t          dd|d	d
| ¬¦  «        }t          ||z  ||         d¬¦  «         t          dd|d	d
d| ¬¦  «        }t          ||z  ||         d¬¦  «         t          dd|d	d
d| ¬¦  «        }t          ||z  ||         d¬¦  «         Œ•d S )N)g       Àr9   ç       @ç      @g      @r7   r   r=   rS   r   r   r   rb   r?   )r0   rU   rA   r   r:   r;   r   )r0   rU   rA   rT   r   )r    rB   Ú	full_likerG   Úshaper
   r   )	r   ÚirY   ÚdxÚd2xr0   Úcoeffs0Úcoeffs1Úcoeffs2s	            r   Útest_sg_coeffs_derivrl   �   s   € ð 	�
Š
Ð-Ð-Ð-°R´Zˆ
Ñ@Ô@€AØ	ˆQ‰�‰
€AØ	
ˆQ‰€BØ
�,Š,�q˜#Ñ
Ô
€CÝ�Q”W˜Q”ZÑ Ô ð <ð <ˆÝ  1¨#°S¸eÈÐKÑKÔKˆÝ˜ !™ Q s¤V°%Ð8Ñ8Ô8Ð8Ý  1¨#°S¸eÈ1ÐQSÐTÑTÔTˆÝ˜ !™ R¨¤W°5Ð9Ñ9Ô9Ð9Ý  1¨#°S¸eÈ1ÐQSÐTÑTÔTˆÝ˜ !™ c¨#¤h°UÐ;Ñ;Ô;Ð;Ð;ð<ð <r   c                 óú   — t          ddd| ¬¦  «        }t          ||                      d| j        ¬¦  «        ¦  «         t          ddd| ¬¦  «        }t          ||                      d| j        ¬¦  «        ¦  «         d	S )
zº
    If deriv > polyorder, the coefficients should be all 0.
    This is a regression test for a bug where, e.g.,
        savgol_coeffs(5, polyorder=1, deriv=2)
    raised an error.
    r   r   r   )r/   rT   r   r7   r   r=   r   N)r
   r   ÚzerosrB   )r   Úcoeffss     r   Ú!test_sg_coeffs_deriv_gt_polyorderrp       sz   € õ ˜1¨°°rÐ:Ñ:Ô:€FÝ�F˜BŸHšH Q¨b¬j˜HÑ9Ô9Ñ:Ô:Ð:Ý˜1¨°°rÐ:Ñ:Ô:€FÝ�F˜BŸHšH Q¨b¬j˜HÑ9Ô9Ñ:Ô:Ð:Ð:Ð:r   Útorchz4torch loses precision (worse with f32 default dtype)c                 ó*  — t          dd| ¬¦  «        }t          ||                      |¦  «        t          | ¦  «        rdnd¬¦  «         t          ddd| ¬¦  «        }t          ||                      |¦  «         t          | ¦  «        rd	nd¬¦  «         d S )
Né   rP   r   gü©ñÒMb@?gTäqs*¹>r;   r   )rT   r   gú~j¼t“ˆ?)r
   r   Úflipr   )r   ri   rj   s      r   Útest_sg_coeffs_largeru   ®   s¯   € õ ˜B  bÐ)Ñ)Ô)€GÝØ�—’˜Ñ!Ô!µ¸±´Ð(H¨¨À&ðñ ô ð õ ˜B ¨¨rÐ2Ñ2Ô2€GÝØ�"—'’'˜'Ñ"Ô"Ð"µ8¸B±<´<Ð)K¨¨ÀVðñ ô ð ð ð r   c                 óð  ‡‡‡— g d¢}|D ];}t          |dd| ¬¦  «        }t          ||                      |¦  «        |z  ¦  «         Œ<d„ Šd„ Š|D �]&}|dz  Šˆˆfd„t          ‰ dz   ‰dz   ¦  «        D ¦   «         d d d	…         }|                      || j        ¬
¦  «        }t          |dd| ¬¦  «        }t          ||¦  «         t          |dd| ¬¦  «        }t          ||¦  «         ˆˆfd„t          ‰ dz   ‰dz   ¦  «        D ¦   «         d d d	…         }|                      || j        ¬
¦  «        }t          |dd| ¬¦  «        }t          ||¦  «         t          |dd| ¬¦  «        }t          ||¦  «         �Œ(d S )N)r=   r   rM   r   é   é   é   r   r   c                 ó<   — d| dz
  z  d|z  dz   |z  d|z  dz
  z  z  S )Nr   rS   r   r   © )Úkr   s     r   Úh_p_d_closed_form_1z>test_sg_coeffs_even_window_length.<locals>.h_p_d_closed_form_1Î   s.   € Ø�!�c‘'‰{˜Q˜q™S 1™W a™K¨¨1©¨q©Ñ1Ñ2Ð2r   c                 ó†   — dd|dz  z  dz   d| dz
  dz  z  z   z  }dd|z  dz   z  |dz   z  |z  |dz
  z  d|z  dz
  z  }||z  S )Né   éüÿÿÿr   r   rw   rS   r=   r{   )r|   r   ÚnumerÚdenoms       r   Úh_p_d_closed_form_2z>test_sg_coeffs_even_window_length.<locals>.h_p_d_closed_form_2Ò   sh   € Ø�B�q˜!‘t‘G˜a‘K " a¨#¡g°¡\¡/Ñ1Ñ2ˆØ�1�Q‘3˜‘7‘˜Q ™UÑ# AÑ% q¨1¡uÑ-¨q°©s°Q©wÑ7ˆØ�U‰{Ðr   r   c                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS r{   r{   )Ú.0r|   r}   r   s     €€r   ú
<listcomp>z5test_sg_coeffs_even_window_length.<locals>.<listcomp>Ù   ó6   ø€ ð :ð :ð :Ø ð /Ð.¨q°!Ñ4Ô4ð :ð :ð :r   r   éÿÿÿÿr7   c                 ó(   •— g | ]} ‰|‰¦  «        ‘ŒS r{   r{   )r…   r|   rƒ   r   s     €€r   r†   z5test_sg_coeffs_even_window_length.<locals>.<listcomp>á   r‡   r   r   )r
   r   Ú	ones_likerG   r    rB   )	r   Úwindow_lengthsÚlengthÚh_p_dÚexpected_outputÚactual_outputr}   rƒ   r   s	         @@@r   Ú!test_sg_coeffs_even_window_lengthr�   Ä   s  øøø€ ð /Ð.Ð.€NØ ð =ð =ˆÝ˜f a¨¨rÐ2Ñ2Ô2ˆÝ˜˜rŸ|š|¨EÑ2Ô2°VÑ;Ñ<Ô<Ð<Ð<ð3ð 3ð 3ðð ð ð
 !ð 8ñ 8ˆØ�A‰Iˆð:ð :ð :ð :ð :Ý$)¨1¨"¨q©&°!°a±%Ñ$8Ô$8ð:ñ :ô :Ø:>¸$¸B¸$ô@ˆàŸ*š* _¸B¼J˜*ÑGÔGˆÝ% f¨a°°rÐ:Ñ:Ô:ˆÝ˜ Ñ7Ô7Ð7Ý% f¨a°°rÐ:Ñ:Ô:ˆÝ˜ Ñ7Ô7Ð7ð:ð :ð :ð :ð :Ý$)¨1¨"¨q©&°!°a±%Ñ$8Ô$8ð:ñ :ô :Ø:>¸$¸B¸$ô@ˆàŸ*š* _¸B¼J˜*ÑGÔGˆÝ% f¨a°°rÐ:Ñ:Ô:ˆÝ˜ Ñ7Ô7Ð7Ý% f¨a°°rÐ:Ñ:Ô:ˆÝ˜ Ñ7Ô7Ð7Ñ7ð!8ð 8r   c                 ó~  — |                       dg¦  «        }t          |dd¦  «        }t          ||                       dg¦  «        ¦  «         |                       dg¦  «        }t          |ddd¬¦  «        }t          ||                       dg¦  «        d¬	¦  «         |                       dg¦  «        }t          |ddd
¬¦  «        }t          ||                       dg¦  «        d¬	¦  «         |                       dgdz  ¦  «        }t          |ddd¬¦  «        }t          ||                       g d¢¦  «        d¬	¦  «         dS )z2 Test some trivial edge cases for savgol_filter().r6   r   r   rV   r   Úconstant©Úmodeg [n‡Û<r;   ÚnearestÚwrap)r6   r6   r6   N)r    r   r   r   ©r   rY   rZ   s      r   Útest_sg_filter_trivialr˜   í   s8  € ð 	�
Š
�C�5ÑÔ€AÝ�a˜˜AÑÔ€AÝ�A�r—z’z 3 %Ñ(Ô(Ñ)Ô)Ð)ð
 	�
Š
�C�5ÑÔ€AÝ�a˜˜A JÐ/Ñ/Ô/€AÝ�A�r—z’z 3 %Ñ(Ô(¨wÐ7Ñ7Ô7Ð7à
�
Š
�C�5ÑÔ€AÝ�a˜˜A IÐ.Ñ.Ô.€AÝ�A�r—z’z 3 %Ñ(Ô(¨wÐ7Ñ7Ô7Ð7à
�
Š
�C�5˜1‘9ÑÔ€AÝ�a˜˜A FÐ+Ñ+Ô+€AÝ�A�r—z’z / / /Ñ2Ô2¸ÐAÑAÔAÐAÐAÐAr   c                 ó„  — |                       g d¢¦  «        }t          |ddd¬¦  «        }t          ||                       g d¢¦  «        ¦  «         t          |ddd¬¦  «        }t          ||                       g d¢¦  «        ¦  «         t          |ddd	¬¦  «        }t          ||                       g d
¢¦  «        ¦  «         d S )N©r6   rb   r6   r   r   r’   r“   ©r6   çUUUUUUõ?r6   Úmirror)ç«ªªªªªú?rœ   rž   r–   )rœ   rœ   rœ   )r    r   r   r—   s      r   Útest_sg_filter_basicrŸ     sÊ   € ð 	�
Š
�?�?�?Ñ#Ô#€AÝ�a˜˜A JÐ/Ñ/Ô/€AÝ�A�r—z’zÐ"5Ð"5Ð"5Ñ6Ô6Ñ7Ô7Ð7å�a˜˜A HÐ-Ñ-Ô-€AÝ�A�r—z’zÐ"=Ð"=Ð"=Ñ>Ô>Ñ?Ô?Ð?å�a˜˜A FÐ+Ñ+Ô+€AÝ�A�r—z’zÐ"=Ð"=Ð"=Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?r   c                 ó  — |                       g d¢g d¢g¦  «        }|                       g d¢g d¢g¦  «        }t          |ddd¬¦  «        }t          ||¦  «         t          |j        dddd	¬
¦  «        }t          ||j        ¦  «         d S )Nrš   )rb   rc   rb   r›   )rb   gUUUUUU@rb   r   r   r’   r“   r   )r”   Úaxis)r    r   r   r"   )r   rY   r   rZ   s       r   Útest_sg_filter_2dr¢     s©   € à
�
Š
�O�O�OØ#�O�Oð%ñ 	&ô 	&€Aà�zŠzÐ.Ð.Ð.Ø.Ð.Ð.ð0ñ 1ô 1€Hå�a˜˜A JÐ/Ñ/Ô/€AÝ�A�xÑ Ô Ð å�a”c˜1˜a j°qÐ9Ñ9Ô9€AÝ�A�x”zÑ"Ô"Ð"Ð"Ð"r   c           	      ó¤  — |                       ddd| j        ¬¦  «        }|d         |d         z
  }|                      |d|dz  z  |dz  |z
  g¦  «        }|                      |                      |¦  «        d	|z  d|dz  z  d
z
  g¦  «        }|                      |                      |¦  «        |                      |d	¦  «        d	|z  g¦  «        }d}t          ||ddd¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }	t          |	|d¬¦  «         |j        }|j        }|j        }t          ||ddd¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }t          ||d¬¦  «         t          ||dddd|¬¦  «        }	t          |	|d¬¦  «         d S )Néûÿÿÿr   rQ   r7   r   r   r   r   r   r6   r   rˆ   Úinterp)r¡   r”   gê-�™—q=r;   ©r¡   r”   rT   rU   )	rW   rB   ÚstackrŠ   Ú
zeros_likerd   r   r   r"   )
r   r1   rU   rY   rg   rh   r.   rZ   r]   r_   s
             r   Útest_sg_filter_interp_edgesr©     s;  € ð 	�Š�B˜˜2 R¤ZˆÑ0Ô0€AØˆaŒD�1�Q”4‰K€Eà
�Š�!Ø�a˜1‘f‘*Ø�q‘&˜1‘*ðñ 	ô 	€Að 
�Š�2—<’< ‘?”?Ø�q‘5Ø�q˜A‘v‘: Ñ#ð%ñ 
&ô 
&€Bð �(Š(�B—M’M !Ñ$Ô$Ø—L’L  AÑ&Ô&Ø˜‘Eðñ ô €Cð €Må�a˜¨°¸ÐBÑBÔB€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜-¨°¸(Ø eð
-ñ 
-ô 
-€Bå�B˜ Ð'Ñ'Ô'Ð'å	�q˜-¨°¸(Ø eð
-ñ 
-ô 
-€Bå�B˜ %Ð(Ñ(Ô(Ð(ð 	
Œ€AØ	Œ€BØ
Œ%€Cå�a˜¨°¸ÐAÑAÔA€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜-¨°¸Ø eð
-ñ 
-ô 
-€Bå�B˜ Ð'Ñ'Ô'Ð'å	�q˜-¨°¸Ø eð
-ñ 
-ô 
-€Bå�B˜ %Ð(Ñ(Ô(Ð(Ð(Ð(r   c           	      ó¨  — |                       ddd¦  «        }|d         |d         z
  }|                      || g¦  «        }|                      |dz  d|dz  z  dz   g¦  «        }|                      |dz  d|dz  z  |dz  z   d|z  z
  g¦  «        }|                      |                      |¦  «        |                      |¦  «         g¦  «        }|                      d|z  d	|z  g¦  «        }|                      d|dz  z  d	|dz  z  d|z  z   dz
  g¦  «        }|                      |||g¦  «        }	|                      |||g¦  «        }
t          |	d
ddd|¬¦  «        }t	          ||	d¬¦  «         t          |	d
dddd|¬¦  «        }t	          ||
d¬¦  «         |                      |j        |j        |j        g¦  «        }	|                      |j        |j        |j        g¦  «        }
t          |	d
ddd|¬¦  «        }t	          ||	d¬¦  «         t          |	d
dddd|¬¦  «        }t	          ||
d¬¦  «         |                      t          |	dd| ¬¦  «        d¬¦  «        }	|                      t          |
dd| ¬¦  «        d¬¦  «        }
t          |	d
ddd|¬¦  «        }t	          ||	d¬¦  «         t          |	d
dddd|¬¦  «        }t	          ||
d¬¦  «         d S )Nr¤   r   rQ   r   r   r   r   rS   r   r   rˆ   r¥   )r¡   r”   rU   r:   r;   r¦   r   T)Úcopy)rW   r§   rŠ   r   r   r"   r    r   )r   r1   rU   Úx1Úx2Úx3Údx1Údx2Údx3ÚzÚdzrZ   r\   s                r   Útest_sg_filter_interp_edges_3dr´   Q  sû  € ð 	�Š�B˜˜2ÑÔ€AØˆaŒD�1�Q”4‰K€EØ	�Š�1�q�b�'Ñ	Ô	€BØ	�Š�1˜‘6˜1˜q A™v™:¨™>Ð*Ñ	+Ô	+€BØ	�Š�1˜‘6˜1˜q A™v™:¨¨Q©Ñ.°°q±Ñ8Ð9Ñ	:Ô	:€BØ
�(Š(�B—L’L ‘O”O b§l¢l°1¡o¤oÐ%5Ð6Ñ
7Ô
7€CØ
�(Š(�A˜‘E˜1˜q™5�>Ñ
"Ô
"€CØ
�(Š(�A˜˜Q™‘J  A¨¡F¡
¨Q°©UÑ 2°SÑ 8Ð9Ñ
:Ô
:€Cð 	�Š�"�b˜"�ÑÔ€AØ	�Š�3˜˜S�/Ñ	"Ô	"€Bå�a˜˜A B¨X¸UÐCÑCÔC€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜!˜Q R¨h¸aÀuÐ	MÑ	MÔ	M€BÝ�B˜ Ð'Ñ'Ô'Ð'ð 	�Š�"”$˜œ˜bœdÐ#Ñ$Ô$€AØ	�Š�3”5˜#œ% ¤Ð'Ñ	(Ô	(€Bå�a˜˜A A¨H¸EÐBÑBÔB€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜!˜Q Q¨X¸QÀeÐ	LÑ	LÔ	L€BÝ�B˜ Ð'Ñ'Ô'Ð'ð 	�
Š
•;˜q ! Q¨2Ð.Ñ.Ô.°Tˆ
Ñ:Ô:€AØ	�Š•K  A q¨RÐ0Ñ0Ô0°tˆÑ	<Ô	<€Bå�a˜˜A A¨H¸EÐBÑBÔB€AÝ�A�q˜uÐ%Ñ%Ô%Ð%å	�q˜!˜Q Q¨X¸QÀeÐ	LÑ	LÔ	L€BÝ�B˜ Ð'Ñ'Ô'Ð'Ð'Ð'r   c                 óš  — |                       d¦  «        }t          |ddd¬¦  «         t          j        t          d¬¦  «        5  t          |ddd¬¦  «         d	d	d	¦  «         n# 1 swxY w Y   t          |d
ddd¬¦  «         t          j        t          d¬¦  «        5  t          |dddd¬¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )z=Tests that the window_length check is using the correct axis.)r   é   é   é   r   r¥   )r.   r/   r”   zwindow_length must be less than)Úmatchrs   NrP   r   )r.   r/   r¡   r”   é   )Úonesr   ÚpytestÚraisesÚ
ValueError)r   rY   s     r   Ú%test_sg_filter_valid_window_length_3dr¿   |  s�  € ð 	�Š�ÑÔ€Aå�! 2°¸ÐBÑBÔBÐBå	Œ•zÐ)JÐ	KÑ	KÔ	Kð Gð Gå�a r°Q¸XÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ �! 1°¸ÀÐIÑIÔIÐIå	Œ•zÐ)JÐ	KÑ	KÔ	Kð Oð Oå�a r°Q¸QÀXÐNÑNÔNÐNðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð Oð Os$   ÁA$Á$A(Á+A(ÂC Ã CÃC)&r¼   Únumpyr(   Úscipy._lib._array_apir   r   r   r   r   r   Úscipy.ndimager	   Úscipy.signalr
   r   Úscipy.signal._savitzky_golayr   ÚmarkÚskip_xp_backendsÚxfail_xp_backendsÚ
pytestmarkr   r&   r4   rC   rK   rN   r`   rl   rp   ru   r�   r˜   rŸ   r¢   r©   r´   r¿   r{   r   r   ú<module>rÉ      s\  ðØ €€€Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 %Ð $Ð $Ð $Ð $Ð $à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à”;Ô/Ð Ø”KÔ1Ð àŒ[×)Ò)ØÐ8ð *ñ ô €
ð
"ð "ð "ð

ð 
ð 
ð8ð ð ð$ Ð�=Ñ!Ô!ðTð Tñ "Ô!ðTð$

ð 

ð 

ð Ð�=Ñ!Ô!ð?ð ?ñ "Ô!ð?ð Ð�=Ñ!Ô!ðAð Añ "Ô!ðAð: Ð�=Ñ!Ô!ð<ð <ñ "Ô!ð<ð  Ð�=Ñ!Ô!ð
;ð 
;ñ "Ô!ð
;ð ÐØÐJðñ ô ð Ð�=Ñ!Ô!ðð ñ "Ô!ñô ðð$ Ð�=Ñ!Ô!ð"8ð "8ñ "Ô!ð"8ðP Ð�=Ñ!Ô!ðBð Bñ "Ô!ðBð, Ð�=Ñ!Ô!ð
@ð 
@ñ "Ô!ð
@ð Ð�=Ñ!Ô!ð	#ð 	#ñ "Ô!ð	#ð Ð�=Ñ!Ô!ð.)ð .)ñ "Ô!ð.)ðb Ð�=Ñ!Ô!ð'(ð '(ñ "Ô!ð'(ðT Ð�=Ñ!Ô!ðOð Oñ "Ô!ðOð Oð Or   