§
    fŠtj·Œ  ã                   óP  — d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl	m
Z
mZ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„ Zd„ Zd	„ Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Z G d„ d¦  «        Z  G d„ d¦  «        Z!dS )é    N)ÚraisesÚwarns)Úxp_assert_closeÚxp_assert_equal)Ú	argrelmaxÚ	argrelminÚpeak_prominencesÚpeak_widthsÚ_unpack_condition_argsÚ
find_peaksÚfind_peaks_cwtÚ_identify_ridge_lines)Úgaussian)Ú_local_maxima_1dÚPeakPropertyWarningc                 ó  — t          j        d|¦  «                             t          ¦  «        }t          j        |t          ¬¦  «        }t          |¦  «        D ].\  }}|| |         z
  |z  }|t          j        |dz   ¦  «        z  }Œ/|S )Nr   ©Údtypeé   )ÚnpÚarangeÚastypeÚfloatÚzerosÚ	enumerateÚexp)Úcenter_locsÚsigmasÚtotal_lengthÚxdataÚout_dataÚindÚsigmaÚtmps           úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/signal/tests/test_peak_finding.pyÚ_gen_gaussiansr&      s…   € ÝŒI�a˜Ñ&Ô&×-Ò-­eÑ4Ô4€EÝŒx˜­EÐ2Ñ2Ô2€HÝ Ñ'Ô'ð &ð &‰
ˆˆUØ�{ 3Ô'Ñ'¨5Ñ0ˆØ•B”F˜S !™V˜9Ñ%Ô%Ñ%ˆˆØ€Oó    c                 ó¾   — t          | ¦  «        }||dz   z  }t          j        |||z
  |¬¦  «                             t          ¦  «        }t          || |¦  «        }||fS )Né   )Únum)Úlenr   Úlinspacer   Úintr&   )r   r   Ú	num_peaksÚdeltar   r!   s         r%   Ú_gen_gaussians_evenr0      sa   € Ý�F‘”€IØ˜I¨™MÑ*€EÝ”+˜e \°EÑ%9¸yÐIÑIÔI×PÒPÕQTÑUÔU€KÝ˜k¨6°<Ñ@Ô@€HØ�[Ð Ð r'   c                 ó*  — d„ }t          j        |¦  «        }t          j        |¦  «        }t          j        |dgt          ¬¦  «        }| |ddd…f<   |d         | d         z
  t          |¦  «        z
  }||k     rt          d¦  «        ‚|t          |¦  «        z  dz
  }|t          |¦  «        z  dz
  }	t          d|¦  «        D ]º}
||
dz
  df         }||
dz
  df         dz   }|
|z  dk    r0t          |¦  «        dk    r|d|
z  | 	                    ¦   «         z  z  }|
|	z  dk    r*t          |¦  «        dk    r|| 	                    ¦   «         z  } |||d         ¦  «        } |||d         ¦  «        }||g||
dd…f<   Œ»|dd…df         |dd…df         gS )	a¾  
    Generate coordinates for a ridge line.

    Will be a series of coordinates, starting a start_loc (length 2).
    The maximum distance between any adjacent columns will be
    `max_distance`, the max distance between adjacent rows
    will be `map_gap'.

    `max_locs` should be the size of the intended matrix. The
    ending coordinates are guaranteed to be less than `max_locs`,
    although they may not approach `max_locs` at all.
    c                 óF   — t          | d¦  «        }t          ||¦  «        }|S )Nr   )ÚmaxÚmin)r*   Úmax_valÚouts      r%   Úkeep_boundsz$_gen_ridge_line.<locals>.keep_bounds5   s#   € Ý�#�q‰kŒkˆÝ�#�wÑÔˆØˆ
r'   r   r   r   Nz3Cannot generate ridge line according to constraintsr)   éÿÿÿÿ)
ÚcopyÚdeepcopyr   r   r-   ÚsumÚ
ValueErrorr+   ÚrangeÚpop)Ú
start_locsÚmax_locsÚlengthÚ	distancesÚgapsr7   Úlocsr   Údist_intÚgap_intr"   ÚnextcolÚnextrows                r%   Ú_gen_ridge_linerI   '   sË  € ðð ð õ
 Œ=˜ÑÔ€DÝ”˜iÑ(Ô(€IåŒ8�V˜Q�K¥sÐ+Ñ+Ô+€DØ€DˆˆAˆAˆAˆ�JØ˜A”; ¨A¤Ñ.µ°T±´Ñ:€LØ�fÒÐÝÐNÑOÔOÐOØ�˜I™œÑ&¨Ñ*€HØ•s˜4‘y”yÑ  1Ñ$€GÝ�Q˜ÑÔð 	*ð 	*ˆØ�s˜Q‘w �zÔ"ˆØ�s˜Q‘w �zÔ" QÑ&ˆØ�(‰N˜aÒÐ¥c¨)¡n¤n°qÒ&8Ð&8Ø˜˜c™	 9§=¢=¡?¤?Ñ2Ñ2ˆGØ�'‰M˜QÒÐ¥S¨¡Y¤Y°¢] ]Ø�t—x’x‘z”zÑ!ˆGØ�+˜g x°¤{Ñ3Ô3ˆØ�+˜g x°¤{Ñ3Ô3ˆØ Ð)ˆˆS�!�!�!ˆV‰ˆà����A�ŒJ˜˜Q˜Q˜Q ˜Tœ
Ð#Ð#r'   c            	       óÚ   — e Zd Zd„ Zd„ Zd„ Zd„ Zej         	                    d e
j        g d¢¦  «         e
j        g d¢¦  «         e
j        g d¢¦  «        g¦  «        d	„ ¦   «         Zd
„ ZdS )ÚTestLocalMaxima1dc                 óÄ   — t          j        g t           j        ¬¦  «        }t          |¦  «        D ]/}t	          |t          j        g ¦  «        d¬¦  «         |j        �J ‚Œ0dS )zTest with empty signal.r   F©Úcheck_dtypeN)r   ÚarrayÚfloat64r   r   Úbase©ÚselfÚxrO   s      r%   Ú
test_emptyzTestLocalMaxima1d.test_emptyT   sg   € åŒH�R�rœzÐ*Ñ*Ô*ˆÝ% aÑ(Ô(ð 	&ð 	&ˆEÝ˜E¥2¤8¨B¡<¤<¸UÐCÑCÔCÐCØ”:Ð%Ð%Ð%Ð%ð	&ð 	&r'   c                 óÂ   — t          j        dd¦  «        }t          |¦  «        D ]9}t          |t          j        g t           j        ¬¦  «        ¦  «         |j        �J ‚Œ:dS )zTest with linear signal.r   éd   r   N)r   r,   r   r   rO   ÚintprQ   rR   s      r%   Útest_linearzTestLocalMaxima1d.test_linear[   sf   € åŒK˜˜3ÑÔˆÝ% aÑ(Ô(ð 	&ð 	&ˆEÝ˜E¥2¤8¨Bµb´gÐ#>Ñ#>Ô#>Ñ?Ô?Ð?Ø”:Ð%Ð%Ð%Ð%ð	&ð 	&r'   c                 óö   — t          j        ddd¦  «        }|ddd…xx         dz  cc<   t          j        dddt           j        ¬¦  «        }t	          |¦  «        D ]}t          ||d	¬
¦  «         |j        �J ‚ŒdS )zTest with simple signal.éöÿÿÿé
   é2   r   Né   r)   r   FrM   )r   r,   r   rX   r   r   rQ   )rS   rT   ÚexpectedrO   s       r%   Útest_simplezTestLocalMaxima1d.test_simpleb   s“   € åŒK˜˜R Ñ$Ô$ˆØ	ˆ!ˆ$ˆQˆ$ˆˆŒ�1‰ˆˆ‰Ý”9˜Q  A­R¬WÐ5Ñ5Ô5ˆÝ% aÑ(Ô(ð 	&ð 	&ˆEõ ˜E 8¸Ð?Ñ?Ô?Ð?Ø”:Ð%Ð%Ð%Ð%ð		&ð 	&r'   c                 ó<  — t          j        g d¢¦  «        }t          |¦  «        \  }}}t          |t          j        g d¢¦  «        d¬¦  «         t          |t          j        g d¢¦  «        d¬¦  «         t          |t          j        g d¢¦  «        d¬¦  «         dS )z+Test if flat maxima are detected correctly.)gÍÌÌÌÌÌô¿r   r)   r   r   r   r   r^   r^   r^   gìQ¸…ë@é   rb   rb   rb   r[   éûÿÿÿrc   rc   rc   rc   r[   )r   rb   é   é   é   FrM   )r   rb   é   é   é   )r   é   é	   é   é   N)r   rO   r   r   )rS   rT   Ú	midpointsÚ
left_edgesÚright_edgess        r%   Útest_flat_maximaz"TestLocalMaxima1d.test_flat_maximam   s®   € åŒHð /ð /ð /ñ 0ô 0ˆå-=¸aÑ-@Ô-@Ñ*ˆ	�:˜{Ý˜	¥2¤8Ð,=Ð,=Ð,=Ñ#>Ô#>ÈEÐRÑRÔRÐRÝ˜
¥B¤HÐ->Ð->Ð->Ñ$?Ô$?ÈUÐSÑSÔSÐSÝ˜¥R¤XÐ.?Ð.?Ð.?Ñ%@Ô%@ÈeÐTÑTÔTÐTÐTÐTr'   rT   )ç      ð?r   r   )ç      @r^   r   rb   rb   )ç      @rj   rj   r   é   ru   ru   c                 ó˜   — t          |¦  «        D ]9}t          |t          j        g t          j        ¬¦  «        ¦  «         |j        �J ‚Œ:dS )z,Test if behavior on signal edges is correct.r   N)r   r   r   rO   rX   rQ   rR   s      r%   Útest_signal_edgesz#TestLocalMaxima1d.test_signal_edgesv   sW   € õ & aÑ(Ô(ð 	&ð 	&ˆEÝ˜E¥2¤8¨Bµb´gÐ#>Ñ#>Ô#>Ñ?Ô?Ð?Ø”:Ð%Ð%Ð%Ð%ð	&ð 	&r'   c                 óJ  — t          t          d¬¦  «        5  t          t          j        d¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t          j        dt
          ¬¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          d	d
g¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z,Test input validation and raised exceptions.zwrong number of dimensions©Úmatch)r)   r)   Nzexpected 'const float64_t'r)   r   Úlistrr   ç       @z'x' must not be None)r   r<   r   r   Úonesr-   Ú	TypeError©rS   s    r%   Útest_exceptionsz!TestLocalMaxima1d.test_exceptions�   s  € å•JÐ&BÐCÑCÔCð 	.ð 	.Ý�RœW V™_œ_Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.å•JÐ&BÐCÑCÔCð 	4ð 	4Ý�RœW Q­cÐ2Ñ2Ô2Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4å•I VÐ,Ñ,Ô,ð 	'ð 	'Ý˜b "˜XÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'å•IÐ%;Ð<Ñ<Ô<ð 	#ð 	#Ý˜TÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#sG   —"AÁA	ÁA	Á&)BÂBÂ"BÂ<CÃCÃ!CÃ;DÄDÄDN)Ú__name__Ú
__module__Ú__qualname__rU   rY   r`   rq   ÚpytestÚmarkÚparametrizer   rO   rw   r€   © r'   r%   rK   rK   R   sØ   € € € € € ð&ð &ð &ð&ð &ð &ð	&ð 	&ð 	&ðUð Uð Uð „[×Ò˜SØˆŒ���ÑÔØˆŒÐ!Ð!Ð!Ñ"Ô"ØˆŒÐ'Ð'Ð'Ñ(Ô(ð#ñ ô ð
&ð &ñô ð
&ð	#ð 	#ð 	#ð 	#ð 	#r'   rK   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestRidgeLinesc                 ó¤   — t          j        ddg¦  «        }t          |t          j        dd¦  «        d¦  «        }t	          |¦  «        dk    sJ ‚d S )Nrm   rW   r   r)   r   ©r   r   r   Úfullr+   ©rS   Ú	test_matrÚliness      r%   rU   zTestRidgeLines.test_empty�   sG   € Ý”H˜b #˜YÑ'Ô'ˆ	Ý% iµ´¸¸Q±´ÀÑCÔCˆÝ�5‰zŒz˜QŠˆˆˆˆˆr'   c                 ó^  — t          j        ddg¦  «        }d|d<   t          |t          j        dd¦  «        d¦  «        }t	          |¦  «        dk    sJ ‚t          j        ddg¦  «        }d|dd…df<   t          |t          j        dd¦  «        d¦  «        }t	          |¦  «        dk    sJ ‚d S )Nrm   rW   r)   )r   r\   r   r   r\   r‹   r�   s      r%   Útest_minimalzTestRidgeLines.test_minimal”   s¤   € Ý”H˜b #˜YÑ'Ô'ˆ	Øˆ	�%ÑÝ% iµ´¸¸Q±´ÀÑCÔCˆÝ�5‰zŒz˜QŠˆˆˆå”H˜b #˜YÑ'Ô'ˆ	Øˆ	�!�A�#�r�'ÑÝ% iµ´¸¸Q±´ÀÑCÔCˆÝ�5‰zŒz˜QŠˆˆˆˆˆr'   c                 ó²  — g d¢}g d¢}t          j        ddg¦  «        dz   }d}t          ddg|j        |||¦  «        }d	||d         |d	         f<   t          j        dt          |¦  «        ¦  «        }t          ||t          |¦  «        d	z   ¦  «        }t          |¦  «        d	k    sJ ‚t          |d         |¦  «        D ]\  }}	t          ||	d
¬¦  «         Œd S )N©r   r)   r   rj   )r   r)   r   r   r)   rm   r]   gê-�™—q=re   r   é   r)   FrM   )
r   r   rI   ÚshaperŒ   r3   r   r+   Úzipr   )
rS   rB   rC   rŽ   rA   ÚlineÚmax_distancesÚidentified_linesÚiline_Úline_s
             r%   Útest_single_passzTestRidgeLines.test_single_passŸ   sÿ   € Ø �L�Lˆ	ØˆˆˆÝ”H˜b "˜XÑ&Ô&¨Ñ.ˆ	ØˆÝ  2˜w¨	¬¸ÀÈDÑQÔQˆØ&'ˆ	�$�q”'˜4 œ7Ð"Ñ#Ýœ ¥C¨	¡N¤NÑ3Ô3ˆÝ0°Ø1>Ý14°T±´¸Q±ñ@ô @Ðõ Ð#Ñ$Ô$¨Ò)Ð)Ð)Ð)Ý Ð!1°!Ô!4°dÑ;Ô;ð 	>ð 	>‰MˆF�EÝ˜F E°uÐ=Ñ=Ô=Ð=Ð=ð	>ð 	>r'   c                 ó”  — g d¢}g d¢}t          j        ddg¦  «        }d}t          ddg|j        |||¦  «        }d||d         |d         f<   d	}t          j        d|¦  «        }t          ||t          |¦  «        dz   ¦  «        }t          |¦  «        d
k    sJ ‚|D ]ª}	t          j        |	d         ¦  «        }
t           j	         
                    t          j        |
¦  «        |¦  «         t          j        |	d         ¦  «        }t           j	         
                    t          j        |¦  «        t          |¦  «        dz   ¦  «         Œ«d S )Nr“   )r   r)   r   rb   rm   r]   re   r   r”   r)   r^   r   çš™™™™™¹?)r   r   rI   r•   rŒ   r   r3   r+   ÚdiffÚtestingÚassert_array_lessÚabs)rS   rB   rC   rŽ   rA   r—   Úmax_distr˜   r™   ÚilineÚadistsÚagapss               r%   Útest_single_bigdistz"TestRidgeLines.test_single_bigdist®   sD  € Ø �L�Lˆ	Øˆ|ˆ|ˆÝ”H˜b "˜XÑ&Ô&ˆ	ØˆÝ  2˜w¨	¬¸ÀÈDÑQÔQˆØ&'ˆ	�$�q”'˜4 œ7Ð"Ñ#ØˆÝœ  HÑ-Ô-ˆå0°Ø1>Ý14°T±´¸Q±ñ@ô @Ðõ Ð#Ñ$Ô$¨Ò)Ð)Ð)Ð)à%ð 	Ið 	IˆEÝ”W˜U 1œXÑ&Ô&ˆFÝŒJ×(Ò(­¬°©¬¸ÑBÔBÐBå”G˜E !œHÑ%Ô%ˆEÝŒJ×(Ò(­¬°©¬½¸D¹	¼	ÀC¹ÑHÔHÐHÐHð	Ið 	Ir'   c                 óx  — g d¢}d}g d¢}t          j        ddg¦  «        }d}t          ddg|j        |||¦  «        }d	||d         |d	         f<   d
}t          j        d|¦  «        }t          |||¦  «        }	t          |	¦  «        dk    sJ ‚|	D ]ª}
t          j        |
d	         ¦  «        }t           j         	                    t          j
        |¦  «        |¦  «         t          j        |
d         ¦  «        }t           j         	                    t          j
        |¦  «        t          |¦  «        dz   ¦  «         Œ«d S )Nr“   r^   )r   rb   r   r)   rm   r]   re   r   r”   r)   ru   r   rž   ©r   r   rI   r•   rŒ   r   r+   rŸ   r    r¡   r¢   r3   ©rS   rB   Úmax_gaprC   rŽ   rA   r—   r£   r˜   r™   r¤   r¥   r¦   s                r%   Útest_single_biggapz!TestRidgeLines.test_single_biggapÄ   s5  € Ø �L�Lˆ	ØˆØˆ|ˆ|ˆÝ”H˜b "˜XÑ&Ô&ˆ	ØˆÝ  2˜w¨	¬¸ÀÈDÑQÔQˆØ&'ˆ	�$�q”'˜4 œ7Ð"Ñ#ØˆÝœ  HÑ-Ô-ˆå0°¸MÈ7ÑSÔSÐÝÐ#Ñ$Ô$¨Ò)Ð)Ð)Ð)à%ð 	Ið 	IˆEÝ”W˜U 1œXÑ&Ô&ˆFÝŒJ×(Ò(­¬°©¬¸ÑBÔBÐBå”G˜E !œHÑ%Ô%ˆEÝŒJ×(Ò(­¬°©¬½¸D¹	¼	ÀC¹ÑHÔHÐHÐHð	Ið 	Ir'   c                 óv  — dg}d}ddg}t          j        ddg¦  «        }d}t          ddg|j        |||¦  «        }d||d         |d         f<   d}t          j        d|¦  «        }t          |||¦  «        }	t          |	¦  «        dk    sJ ‚|	D ]ª}
t          j        |
d         ¦  «        }t           j         	                    t          j
        |¦  «        |¦  «         t          j        |
d         ¦  «        }t           j         	                    t          j
        |¦  «        t          |¦  «        dz   ¦  «         Œ«d S )	Nr   r)   r^   ru   r]   é   r”   rž   r©   rª   s                r%   Útest_single_biggapsz"TestRidgeLines.test_single_biggapsÙ   s3  € Ø�Cˆ	ØˆØ�1ˆvˆÝ”H˜b "˜XÑ&Ô&ˆ	ØˆÝ  2˜w¨	¬¸ÀÈDÑQÔQˆØ&'ˆ	�$�q”'˜4 œ7Ð"Ñ#ØˆÝœ  HÑ-Ô-ˆå0°¸MÈ7ÑSÔSÐÝÐ#Ñ$Ô$¨Ò)Ð)Ð)Ð)à%ð 	Ið 	IˆEÝ”W˜U 1œXÑ&Ô&ˆFÝŒJ×(Ò(­¬°©¬¸ÑBÔBÐBå”G˜E !œHÑ%Ô%ˆEÝŒJ×(Ò(­¬°©¬½¸D¹	¼	ÀC¹ÑHÔHÐHÐHð	Ið 	Ir'   N)	r�   r‚   rƒ   rU   r‘   rœ   r§   r¬   r¯   r‡   r'   r%   r‰   r‰   �   sy   € € € € € ðð ð ð
	ð 	ð 	ð>ð >ð >ðIð Ið Ið,Ið Ið Ið*Ið Ið Ið Ið Ir'   r‰   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú
TestArgrelc                 óô  — t          j        g t          ¬¦  «        }t          j        d¦  «        }t	          |¦  «        }t          t          |¦  «        d¦  «         t          |d         |d¬¦  «         t          j        d¦  «        }t	          |d¬¦  «        \  }}t          ||d¬¦  «         t          ||d¬¦  «         t	          |d¬¦  «        \  }}t          ||d¬¦  «         t          ||d¬¦  «         d S )	Nr   rj   r)   r   FrM   )r^   rj   ©Úaxis)r   rO   r-   r   r   r   r+   )rS   Úempty_arrayÚz1ÚiÚz2ÚrowÚcols          r%   rU   zTestArgrel.test_emptyñ   sô   € õ ”h˜r­Ð-Ñ-Ô-ˆåŒX�a‰[Œ[ˆå�b‰MŒMˆÝ�˜A™œ Ñ"Ô"Ð"Ý˜˜!œ˜k°uÐ=Ñ=Ô=Ð=åŒX�fÑÔˆå˜R aÐ(Ñ(Ô(‰ˆˆSÝ˜˜[°eÐ<Ñ<Ô<Ð<Ý˜˜[°eÐ<Ñ<Ô<Ð<å˜R aÐ(Ñ(Ô(‰ˆˆSÝ˜˜[°eÐ<Ñ<Ô<Ð<Ý˜˜[°eÐ<Ñ<Ô<Ð<Ð<Ð<r'   c                 ó,  — t          j        g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |d¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢d	¬
¦  «         t	          ||         g d¢d	¬
¦  «         t          |d¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢d	¬
¦  «         t	          ||         g d¢d	¬
¦  «         t          |d¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢d	¬
¦  «         t	          ||         g d¢d	¬
¦  «         t          |d¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢d	¬
¦  «         t	          ||         g d¢d	¬
¦  «         d S )N)r)   r   r   r^   r   )r   r)   r   r   r^   )r^   r   r)   r   r   )r   r^   r   r)   r   )r)   r   r^   r   r)   r   r³   ©r)   r   r^   FrM   )rb   r   r)   r)   )r   r^   rb   )r^   r)   r   )r   rO   r   Úargsortr   r   )rS   rT   r¹   rº   Úorders        r%   Ú
test_basiczTestArgrel.test_basic	  s¸  € õ
 ŒH�o�o�oØ%�o�oØ%�o�oØ%�o�oØ%�o�oð	'ñ (ô (ˆõ ˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAå˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAå˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAå˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAÝ˜˜Eœ
 I I I¸5ÐAÑAÔAÐAÐAÐAr'   c                 ó$  — d}g d¢}t          |d¦  «        \  }}||         dz  |||z   <   ||         dz  |||z
  <   t          ||d¬¦  «        d         }t          |¦  «        t          |¦  «        k    sJ ‚||k                         ¦   «         sJ ‚d S )Nr   )rr   r|   ç      $@rt   g      .@éô  gwJëÿï?Úclip)r¾   Úmoder   )r0   r   r+   Úall)rS   r¾   r   Ú	test_dataÚact_locsÚrel_max_locss         r%   Útest_highorderzTestArgrel.test_highorder(  s³   € ØˆØ,Ð,Ð,ˆÝ1°&¸#Ñ>Ô>Ñˆ	�8Ø&/°Ô&9¸'Ñ&Aˆ	�(˜UÑ"Ñ#Ø&/°Ô&9¸'Ñ&Aˆ	�(˜UÑ"Ñ#Ý  °%¸fÐEÑEÔEÀaÔHˆå�<Ñ Ô ¥C¨¡M¤MÒ1Ð1Ð1Ð1Ø Ò(×-Ò-Ñ/Ô/Ð/Ð/Ð/Ð/Ð/r'   c                 óÈ  — g d¢}t          |d¦  «        \  }}d}t          j        dt          |¦  «        ¦  «        |z
  }t          j        |||         g¦  «        }t          |dd¬¦  «        \  }}t          d|j        d         ¦  «        D ]V}	||	k    }
t          ||
         ¦  «        t          |¦  «        k    sJ ‚|||
         ||	z  z
  k                         ¦   «         sJ ‚ŒWd S )N)rr   r|   rÁ   rW   rm   r   r)   )r´   r¾   )	r0   r   r   r+   Úvstackr   r=   r•   rÅ   )rS   r   rÆ   rÇ   Ú
rot_factorÚ	rot_rangeÚtest_data_2Úrel_max_rowsÚrel_max_colsÚrwÚindss              r%   Útest_2d_gaussianszTestArgrel.test_2d_gaussians3  sÿ   € Ø!Ð!Ð!ˆÝ1°&¸#Ñ>Ô>Ñˆ	�8Øˆ
Ý”I˜a¥ Y¡¤Ñ0Ô0°:Ñ=ˆ	Ý”i ¨I°iÔ,@Ð AÑBÔBˆÝ%.¨{ÀÈ!Ð%LÑ%LÔ%LÑ"ˆ�lå˜˜;Ô,¨QÔ/Ñ0Ô0ð 	Lð 	LˆBØ  BÒ&ˆDå�| DÔ)Ñ*Ô*­c°(©m¬mÒ;Ð;Ð;Ð;Ø ¨dÔ!3°jÀ±mÑ!CÒD×IÒIÑKÔKÐKÐKÐKÐKð		Lð 	Lr'   N)r�   r‚   rƒ   rU   r¿   rÉ   rÓ   r‡   r'   r%   r±   r±   ï   sX   € € € € € ð=ð =ð =ð0Bð Bð Bð>	0ð 	0ð 	0ðLð Lð Lð Lð Lr'   r±   c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestPeakProminencesc                 óŽ  — t          g d¢g ¦  «        }t          |t          j        t          j        t          j        g¦  «        D ]\  }}|j        dk    sJ ‚|j        |k    sJ ‚Œ t          g g ¦  «        }t          |t          j        t          j        t          j        g¦  «        D ]\  }}|j        dk    sJ ‚|j        |k    sJ ‚Œ dS )úN
        Test if an empty array is returned if no peaks are provided.
        r¼   r   N)r	   r–   r   rP   rX   Úsizer   )rS   r6   Úarrr   s       r%   rU   zTestPeakProminences.test_emptyD  sÎ   € õ ˜y˜y˜y¨"Ñ-Ô-ˆÝ˜c¥B¤Jµ´½¼Ð#AÑBÔBð 	&ð 	&‰JˆC�Ø”8˜q’=�=�=�=Ø”9 Ò%Ð%Ð%Ð%Ð%å˜r 2Ñ&Ô&ˆÝ˜c¥B¤Jµ´½¼Ð#AÑBÔBð 	&ð 	&‰JˆC�Ø”8˜q’=�=�=�=Ø”9 Ò%Ð%Ð%Ð%Ð%ð	&ð 	&r'   c                 óÀ  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }||         t          j        ||         ||         gd¬¦  «        z
  }t          ||¦  «        }t	          |d         |d¬¦  «         t	          |d	         |d¬¦  «         t	          |d
         |d¬¦  «         dS )zŠ
        Test if height of prominences is correctly calculated in signal with
        rising baseline (peak widths are 1 sample).
        )r8   ç333333ó?rÛ   r)   çš™™™™™	@gÍÌÌÌÌÌô?g
×£p=
@gÍÌÌÌÌÌ @)r)   r   rb   ru   )r   r   r   rj   )r^   r^   rj   rg   r   r³   FrM   r)   r   N)r   rO   r3   r	   r   )rS   rT   ÚpeaksÚlbasesÚrbasesÚpromsr6   s          r%   r¿   zTestPeakProminences.test_basicR  sÝ   € õ ŒHÐ;Ð;Ð;Ñ<Ô<ˆÝ”˜˜˜Ñ&Ô&ˆÝ”˜,˜,˜,Ñ'Ô'ˆÝ”˜,˜,˜,Ñ'Ô'ˆØ�%”�2œ6 1 V¤9¨a°¬iÐ"8¸qÐAÑAÔAÑAˆå˜q %Ñ(Ô(ˆÝ˜˜Aœ °5Ð9Ñ9Ô9Ð9Ý˜˜Aœ °EÐ:Ñ:Ô:Ð:Ý˜˜Aœ °EÐ:Ñ:Ô:Ð:Ð:Ð:r'   c                 óÒ  — g d¢}g d¢}t          ||¦  «        \  }}}t          |t          j        g d¢¦  «        d¬¦  «         t          |g d¢d¬¦  «         t          |g d¢d¬¦  «         g d¢}t          j        g d¢¦  «        }t          ||¦  «        \  }}}t          |t          j        g d	¢¦  «        ¦  «         t          ||d
z
  d¬¦  «         t          ||d
z   d¬¦  «         dS )z"
        Test edge cases.
        )r   r   r)   r   r)   r   r   ©r)   r^   rj   )r|   r   r   FrM   )r   r   r   )ru   ru   ru   )r   r)   r   r)   r   r)   r   )rr   r)   r)   r)   N)r	   r   r   ÚasarrayrO   ©rS   rT   rÝ   rà   rÞ   rß   s         r%   Útest_edge_casesz#TestPeakProminences.test_edge_casesc  s  € ð
 "Ð!Ð!ˆØ�	�	ˆÝ 0°°EÑ :Ô :Ñˆˆv�vÝ˜�rœz¨+¨+¨+Ñ6Ô6ÀEÐJÑJÔJÐJÝ˜ 	 	 	°uÐ=Ñ=Ô=Ð=Ý˜ 	 	 	°uÐ=Ñ=Ô=Ð=ð "Ð!Ð!ˆÝ”˜˜˜Ñ#Ô#ˆÝ 0°°EÑ :Ô :Ñˆˆv�vÝ˜�rœz¨+¨+¨+Ñ6Ô6Ñ7Ô7Ð7Ý˜ ¨¡	°uÐ=Ñ=Ô=Ð=Ý˜ ¨¡	°uÐ=Ñ=Ô=Ð=Ð=Ð=r'   c                 óF  — t          j        g d¢d¦  «        }t          j        g d¢d¦  «        }t          |ddd…         |ddd…         ¦  «        \  }}}t          |t          j        g d¢¦  «        ¦  «         t          |g d¢d¬¦  «         t          |g d	¢d¬¦  «         dS )
ú:
        Test with non-C-contiguous input arrays.
        )i÷ÿÿÿrk   rk   r   r^   r)   r   )r)   r   rb   N)g      "@rk   r   )r   r   r^   FrM   )r^   r^   rj   )r   Úrepeatr	   r   rã   rä   s         r%   Útest_non_contiguousz'TestPeakProminences.test_non_contiguousw  s±   € õ ŒIÐ)Ð)Ð)¨1Ñ-Ô-ˆÝ”	˜)˜)˜) QÑ'Ô'ˆÝ 0°°3°3°Q°3´¸¸s¸sÀ¸s¼Ñ DÔ DÑˆˆv�vÝ˜�rœz¨+¨+¨+Ñ6Ô6Ñ7Ô7Ð7Ý˜ 	 	 	°uÐ=Ñ=Ô=Ð=Ý˜ 	 	 	°uÐ=Ñ=Ô=Ð=Ð=Ð=r'   c                 óú   — g d¢}dg}t          ||¦  «        }t          |g d¢¦  «        D ]\  }}||k    sJ ‚ŒdD ]@\  }}t          |||¦  «        }t          |d|z
  d|z   d|z
  g¦  «        D ]\  }}||k    sJ ‚ŒŒAdS )	zO
        Test if wlen actually shrinks the evaluation range correctly.
        )r   r)   r   r^   r)   r   r8   r^   )rs   r   ru   ))rd   r   )rg   r   )ru   r   )rj   r)   )rÜ   r)   ©r^   r   )çš™™™™™ñ?r   rs   r   ru   N)r	   r–   )rS   rT   Úpeakrà   ÚpromÚvalÚwlenr·   s           r%   Ú	test_wlenzTestPeakProminences.test_wlen‚  sÇ   € ð #Ð"Ð"ˆØˆsˆå   DÑ)Ô)ˆÝ˜U K K KÑ0Ô0ð 	ð 	‰IˆD�#Ø˜3’;�;�;�;�;àSð 	#ð 	#‰GˆD�!Ý$ Q¨¨dÑ3Ô3ˆEÝ  ¨¨a©°°Q±¸¸A¹Ð(>Ñ?Ô?ð #ð #‘	��cØ˜s’{�{�{�{�{ð#ð	#ð 	#r'   c                 óÈ  — t          t          d¬¦  «        5  t          g d¢gddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          g d¢ddgg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          ddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d	¬¦  «        5  t          g dg¦  «         ddd¦  «         n# 1 swxY w Y   d
D ]C}t          t          d	¬¦  «        5  t          g d¢|g¦  «         ddd¦  «         n# 1 swxY w Y   ŒDt          t          d¬¦  «        5  t          g d¢ddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t	          j        d¦  «        ddgd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zA
        Verify that exceptions and warnings are raised.
        ú	1-D arrayry   )r   r)   r)   r   r)   r   Nr^   r   únot a valid index)iœÿÿÿr8   r^   éè  ©r)   r   r   úcannot safely castrì   çffffff@rð   r\   rj   ©rð   )r   r<   r	   r~   r   r   )rS   Úps     r%   r€   z#TestPeakProminences.test_exceptions’  s±  € õ
 •J kÐ2Ñ2Ô2ð 	5ð 	5Ý˜l˜l˜l˜^¨a°¨VÑ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ •J kÐ2Ñ2Ô2ð 	5ð 	5Ý˜\˜\˜\¨Q°¨F¨8Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ •J kÐ2Ñ2Ô2ð 	&ð 	&Ý˜Q  Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&õ •JÐ&9Ð:Ñ:Ô:ð 	&ð 	&Ý˜R ! Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð %ð 	1ð 	1ˆAÝ�
Ð*=Ð>Ñ>Ô>ð 1ð 1Ý    ¨Q¨CÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1øõ •IÐ%9Ð:Ñ:Ô:ð 	7ð 	7Ý˜\˜\˜\¨C°¨:Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ •J fÐ-Ñ-Ô-ð 	<ð 	<Ý�RœY r™]œ]¨Q°¨F¸Ð;Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<sy   —9¹=Á =ÁA<Á<B ÂB ÂB;Â;B?ÃB?ÃC:Ã:C>ÄC>ÄD?Ä?E	ÅE	Å!FÆFÆ	FÆ#'GÇGÇGc                 ó  — d}dD ]C}t          t          |¬¦  «        5  t          g d¢|g¦  «         ddd¦  «         n# 1 swxY w Y   ŒDt          t          |¬¦  «        5  t          g d¢dgd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	ú>
        Verify that appropriate warnings are raised.
        z!some peaks have a prominence of 0)r   r)   r   ry   rö   N©r   r)   r)   r)   r   r   rù   )r   r   r	   )rS   Úmsgrú   s      r%   Útest_warningsz!TestPeakProminences.test_warnings°  s+  € ð 2ˆØð 	2ð 	2ˆAÝÕ*°#Ð6Ñ6Ô6ð 2ð 2Ý    ¨Q¨DÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2øåÕ&¨cÐ2Ñ2Ô2ð 	;ð 	;Ý˜_˜_˜_¨q¨c¸Ð:Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s!   �=½A	ÁA	ÁBÂBÂ	BN)
r�   r‚   rƒ   rU   r¿   rå   ré   rñ   r€   rÿ   r‡   r'   r%   rÕ   rÕ   B  s}   € € € € € ð&ð &ð &ð;ð ;ð ;ð">ð >ð >ð(	>ð 	>ð 	>ð#ð #ð #ð <ð <ð <ð<	;ð 	;ð 	;ð 	;ð 	;r'   rÕ   c                   ó¸   — e Zd Zd„ Zej                             d¦  «        d„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zej                             d¦  «        d„ ¦   «         Zd	S )
ÚTestPeakWidthsc                 ó‚  — t          g g ¦  «        d         }t          |t          j        ¦  «        sJ ‚|j        dk    sJ ‚t          g d¢g ¦  «        d         }t          |t          j        ¦  «        sJ ‚|j        dk    sJ ‚t          g g ¦  «        }|D ]+}t          |t          j        ¦  «        sJ ‚|j        dk    sJ ‚Œ,dS )r×   r   r¼   N)r
   Ú
isinstancer   ÚndarrayrØ   )rS   Úwidthsr6   rÙ   s       r%   rU   zTestPeakWidths.test_empty¾  s×   € õ ˜R Ñ$Ô$ QÔ'ˆÝ˜&¥"¤*Ñ-Ô-Ð-Ð-Ð-ØŒ{˜aÒÐÐÐÝ˜Y˜Y˜Y¨Ñ+Ô+¨AÔ.ˆÝ˜&¥"¤*Ñ-Ô-Ð-Ð-Ð-ØŒ{˜aÒÐÐÐÝ˜"˜bÑ!Ô!ˆØð 	!ð 	!ˆCÝ˜c¥2¤:Ñ.Ô.Ð.Ð.Ð.Ø”8˜q’=�=�=�=�=ð	!ð 	!r'   ú#ignore:some peaks have a width of 0c           	      óœ  — t          j        g d¢¦  «        }d}dD ]°\  }}}}t          |dg|¦  «        \  }}}	}
t          |t          j        |g¦  «        ¦  «         t          |t          j        d||z  z
  g¦  «        ¦  «         t          |	t          j        |g¦  «        ¦  «         t          |
t          j        |g¦  «        ¦  «         Œ±dS )zk
        Test a simple use case with easy to verify results at different relative
        heights.
        )r)   r   r)   r   r)   r   r8   r   ))ç        r  rs   rs   )g      Ð?rr   ç      @ç      @)ç      à?r|   r|   ç      @)ç      è?rs   ç      ø?ç      @)rr   r  rr   rt   )r|   rt   rr   ç      @)rs   rt   rr   r  r^   N)r   rO   r
   r   rã   )rS   rT   Ú
prominenceÚ
rel_heightÚ
width_trueÚlip_trueÚrip_trueÚ
width_calcÚheightÚlip_calcÚrip_calcs              r%   r¿   zTestPeakWidths.test_basicÍ  så   € õ ŒHÐ+Ð+Ð+Ñ,Ô,ˆØˆ
ð;
ð 	>ð 	>Ñ6ˆJ˜
 H¨hõ 6AØ�A�3˜
ñ6$ô 6$Ñ2ˆJ˜ ¨(å˜J­¬
°J°<Ñ(@Ô(@ÑAÔAÐAÝ˜F¥B¤J°°JÀÑ4KÑ0KÐ/LÑ$MÔ$MÑNÔNÐNÝ˜H¥b¤j°(°Ñ&<Ô&<Ñ=Ô=Ð=Ý˜H¥b¤j°(°Ñ&<Ô&<Ñ=Ô=Ð=Ð=ð	>ð 	>r'   c           	      óø   — t          j        g d¢d¦  «        }t          j        dgd¦  «        }t          |ddd…         |ddd…         ¦  «        }t          |t          j        dgdgdgdgg¦  «        ¦  «         dS )	rç   )r   rW   r]   rb   r)   r^   Nr  éK   r  )r   rè   r
   r   rã   )rS   rT   rÝ   Úresults       r%   ré   z"TestPeakWidths.test_non_contiguouså  s‹   € õ ŒI�l�l�l AÑ&Ô&ˆÝ”	˜1˜#˜qÑ!Ô!ˆÝ˜Q˜s˜s ˜sœV U¨3¨3¨Q¨3¤ZÑ0Ô0ˆÝ˜Ýœ
 T F¨R¨D°4°&¸3¸%Ð#@ÑAÔAñ	
ô 	
ð 	
ð 	
ð 	
r'   c                 óœ  — t          t          d¬¦  «        5  t          t          j        d¦  «        t          j        d¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          ddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t          j        d¦  «        t          j        dt          j        ¬	¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t          j        d¦  «        d¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d
¬¦  «        5  t          t          j        d¦  «        ddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d
¬¦  «        5  t          g ddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t          j        d¦  «        ddg¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          g d¢ddgd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          g d¢dgd¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zD
        Verify that argument validation works as intended.
        ró   ry   )r^   rb   r^   Nr   r\   rë   r   rô   rd   rh   r)   r   r÷   rì   rø   r  )r   r)   r   r)   r   r8   ©r  ÚNone)r)   r   r)   )NNN©Úprominence_data)	r   r<   r
   r   r   r}   r   rX   r~   r   s    r%   r€   zTestPeakWidths.test_exceptionsð  sþ  € õ •J kÐ2Ñ2Ô2ð 	6ð 	6å�œ Ñ(Ô(­"¬'°!©*¬*Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ •J kÐ2Ñ2Ô2ð 	 ð 	 å˜˜A˜3ÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ •J kÐ2Ñ2Ô2ð 	Gð 	Gå�œ	 "™œ¥r¤w¨v½R¼WÐ'EÑ'EÔ'EÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gõ •J kÐ2Ñ2Ô2ð 	*ð 	*å�œ	 "™œ qÑ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*õ •JÐ&9Ð:Ñ:Ô:ð 	0ð 	0å�œ	 "™œ¨¨2 wÑ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0õ •JÐ&9Ð:Ñ:Ô:ð 	$ð 	$å˜˜Q ˜FÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$õ •IÐ%9Ð:Ñ:Ô:ð 	3ð 	3å�œ	 "™œ¨¨S zÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3õ •J lÐ3Ñ3Ô3ð 	@ð 	@å˜˜˜¨!¨Q¨¸BÐ?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@õ •I VÐ,Ñ,Ô,ð 	Lð 	Lå˜	˜	˜	 A 3Ð8JÐKÑKÔKÐKð	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lð 	Lð 	Ls¢   —5AÁAÁAÁ9BÂBÂBÂ8ADÄD	ÄD	Ä&#EÅEÅEÅ6%F'Æ'F+Æ.F+ÇG'Ç'G+Ç.G+È%H9È9H=É H=ÉI=É=JÊJÊKËKËKc                 óÒ  — d}t          t          |¬¦  «        5  t          g d¢dgd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          t          |¬¦  «        5  t          g d¢d	gt          j        d
gt          j        ¦  «        t          j        d	gt          j        ¦  «        t          j        d	gt          j        ¦  «        f¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )rü   zsome peaks have a width of 0ry   ©r   r)   r   r)   r   r  Nrý   r   r  r   )r   r   r
   r   rO   rP   rX   )rS   rþ   s     r%   rÿ   zTestPeakWidths.test_warnings  sg  € ð -ˆÝÕ&¨cÐ2Ñ2Ô2ð 	6ð 	6å˜	˜	˜	 A 3°1Ð5Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ Õ&¨cÐ2Ñ2Ô2ð 	ð 	åØ�� ! Ý!#¤¨2¨$µ´
Ñ!;Ô!;Ý!#¤¨1¨#­r¬wÑ!7Ô!7Ý!#¤¨1¨#­r¬wÑ!7Ô!7ð!9ðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s    ™;»?Á?ÁA3CÃC Ã#C c                 óž  — g d¢}dg}t          g d¢¦  «        D ]³\  }\  }}}t          j        |t          j        ¬¦  «        t          j        |t          j        ¬¦  «        t          j        |t          j        ¬¦  «        f}|dk     rd}nd}t          t          |¬¦  «        5  t          |||¬	¦  «         d
d
d
¦  «         n# 1 swxY w Y   Œ´d
S )z4Test with mismatching peak and / or prominence data.r#  r)   ))©rr   )r8   ©r   )r%  ©r   )r^   )r%  r&  r'  )©rr   rr   ©r   r   ©r   r   )r(  r'  r&  )r%  r)  r&  )r%  r'  r*  r   r^   z#prominence data is invalid for peakz4arrays in `prominence_data` must have the same shapery   r   N)r   r   rO   rP   rX   r   r<   r
   )	rS   rT   rí   r·   ÚprominencesÚ
left_basesÚright_basesr!  rz   s	            r%   Ú test_mismatching_prominence_dataz/TestPeakWidths.test_mismatching_prominence_data!  sC  € àˆIˆIˆØˆsˆÝ9Bð D
ð D
ð D
ñ :ô :ð 	Fð 	FÑ5ˆAÑ5�˜Z¨õ  "œx¨½2¼:ÐFÑFÔFÝ!œx¨
½"¼'ÐBÑBÔBÝ!œx¨½2¼7ÐCÑCÔCðEˆOð �1ŠuˆuØ=��àN�Ý�
¨%Ð0Ñ0Ô0ð Fð FÝ˜A˜t°_ÐEÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Føð%	Fð 	Fs   Â"CÃC	ÃC	c                 óš   — g d¢}t          t          |dgd¬¦  «        g d¢¦  «         t          t          |dgd¬¦  «        g d¢¦  «         dS )	z3Test if x == eval_height counts as an intersection.)r   r)   r   r)   r^   r^   r^   r)   r   r)   r   rj   r   )rÝ   r  ))r  ©rs   ©rt   r1  gUUUUUUå?))r  r%  r0  )g      @N)r   r
   )rS   rT   s     r%   Útest_intersection_rulesz&TestPeakWidths.test_intersection_rules:  sw   € ð .Ð-Ð-ˆå� A¨a¨S¸QÐ?Ñ?Ô?Ø4Ð4Ð4ñ	6ô 	6ð 	6õ 	� A¨a¨S¸SÐAÑAÔAØ4Ð4Ð4ñ	6ô 	6ð 	6ð 	6ð 	6r'   N)r�   r‚   rƒ   rU   r„   r…   Úfilterwarningsr¿   ré   r€   rÿ   r.  r2  r‡   r'   r%   r  r  ¼  sÂ   € € € € € ð!ð !ð !ð „[×ÒÐ EÑFÔFð>ð >ñ GÔFð>ð.	
ð 	
ð 	
ðLð Lð Lð@ð ð ð"Fð Fð Fð2 „[×ÒÐ EÑFÔFð	6ð 	6ñ GÔFð	6ð 	6ð 	6r'   r  c                  ó  — t          j        d¦  «        } | }|dz   }|ddd…         }dt          d| |¦  «        k    sJ ‚dt          d| |¦  «        k    sJ ‚dt          d| |¦  «        k    sJ ‚dt          d| |¦  «        k    sJ ‚dt          d| |¦  «        k    sJ ‚t          ||f| |¦  «        \  }}t          |||         ¦  «         t          |||         ¦  «         t	          t
          d	¬
¦  «        5  t          |t          j        d¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   t	          t
          d¬
¦  «        5  t          d|ft          j        d¦  «        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zW
    Verify parsing of condition arguments for `scipy.signal.find_peaks` function.
    r\   r)   Nr   ©NN)r)   N©Nr   )rs   r  zarray size of lowerry   rh   zarray size of upper)r   r   r   r   r   r<   )rT   Ú	amin_trueÚ	amax_truerÝ   Ú	amin_calcÚ	amax_calcs         r%   Útest_unpack_condition_argsr;  G  sN  € õ 	Œ	�"‰Œ€AØ€IØ˜B‘€IØ�a�d˜�dŒO€Eð Õ1°,ÀÀ5ÑIÔIÒIÐIÐIÐIØÕ.¨q°!°UÑ;Ô;Ò;Ð;Ð;Ð;ØÕ.¨y¸!¸UÑCÔCÒCÐCÐCÐCØÕ.¨y¸!¸UÑCÔCÒCÐCÐCÐCØÕ.¨y¸!¸UÑCÔCÒCÐCÐCÐCõ 2°9¸iÐ2HÈ!ÈUÑSÔSÑ€IˆyÝ�I˜y¨Ô/Ñ0Ô0Ð0Ý�I˜y¨Ô/Ñ0Ô0Ð0õ 
•
Ð"7Ð	8Ñ	8Ô	8ð @ð @Ý˜y­"¬)°B©-¬-¸Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @å	•
Ð"7Ð	8Ñ	8Ô	8ð Hð HÝ  iÐ0µ"´)¸B±-´-ÀÑGÔGÐGðHð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hð Hð Hs$   Ã2$D"Ä"D&Ä)D&Å&E6Å6E:Å=E:c                   óð   — e Zd Zh d£Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zej                             dd¦  «        d„ ¦   «         Zej                             di ddiddiddig¦  «        d„ ¦   «         ZdS )ÚTestFindPeaks>
   r  Úleft_ipsÚ	right_ipsr,  r+  r-  Úpeak_heightsÚwidth_heightsÚleft_thresholdsÚright_thresholdsc                 ó°   — d}t          t          j        d¦  «        ||||¬¦  «        \  }}|j        dk    sJ ‚| j        D ]}||         j        dk    sJ ‚ŒdS )z@
        Test behavior for signal without local maxima.
        r5  r\   ©r  Ú	thresholdr  Úwidthr   N)r   r   r}   rØ   Úproperty_keys)rS   Úopen_intervalrÝ   ÚpropsÚkeys        r%   Útest_constantzTestFindPeaks.test_constantj  s   € ð %ˆÝ!¥"¤'¨"¡+¤+Ø)6À-Ø-:À-ðQñ Qô Q‰ˆˆuð Œz˜QŠˆˆˆØÔ%ð 	(ð 	(ˆCØ˜”:”? aÒ'Ð'Ð'Ð'Ð'ð	(ð 	(r'   c                 ó   — t          j        g d¢¦  «        }t          j        |j        dz  dz   ¦  «        }||ddd…<   t          j        |j        t
          ¬¦  «        }|ddd…         |ddd…<   t          j        ||¦  «        }t          |d¬¦  «        \  }}t          |g d¢d	¬
¦  «         t          |d         |d	¬
¦  «         t          |d         ||dz
  dz  z
  d	¬
¦  «         t          |d         ||dz  z   d	¬
¦  «         t          t          |d¬¦  «        d         g d¢d	¬
¦  «         t          t          |d¬¦  «        d         g d¢d	¬
¦  «         t          t          |d¬¦  «        d         ddgd	¬
¦  «         dS )z8
        Test plateau size condition for peaks.
        )r)   r   r^   rb   rd   rm   éo   r   r)   Nr   r5  )Úplateau_size)r)   r^   rg   rh   rf   é!   rW   FrM   Úplateau_sizesro   rp   rb   r   )rh   rf   rP  rW   )Nr
  )r)   r^   rg   )rj   r]   rf   rP  )	r   rO   r   rØ   r}   r-   rè   r   r   )rS   rQ  rT   ÚrepeatsrÝ   rJ  s         r%   Útest_plateau_sizezTestFindPeaks.test_plateau_sizev  sÝ  € õ
 œÐ!9Ð!9Ð!9Ñ:Ô:ˆÝŒH�]Ô'¨!Ñ+¨aÑ/Ñ0Ô0ˆØˆˆ!ˆ$ˆQˆ$‰Ý”'˜!œ&­Ð,Ñ,Ô,ˆØ˜!˜$˜Q˜$œˆ���1�‰ÝŒI�a˜Ñ!Ô!ˆõ " !°,Ð?Ñ?Ô?‰ˆˆuÝ˜Ð9Ð9Ð9ÀuÐMÑMÔMÐMÝ˜˜oÔ.°È5ÐQÑQÔQÐQÝ˜˜lÔ+¨U°mÀaÑ6GÈAÑ5MÑ-MØ$)ð	+ñ 	+ô 	+ð 	+å˜˜mÔ,¨e°mÀqÑ6HÑ.HØ$)ð	+ñ 	+ô 	+ð 	+õ 	�
 1°1Ð5Ñ5Ô5°aÔ8Ð:KÐ:KÐ:KØ$)ð	+ñ 	+ô 	+ð 	+å�
 1°;Ð?Ñ?Ô?ÀÔBÀIÀIÀIØ$)ð	+ñ 	+ô 	+ð 	+å�
 1°7Ð;Ñ;Ô;¸AÔ>ÀÀRÀØ$)ð	+ñ 	+ô 	+ð 	+ð 	+ð 	+r'   c                 ó6  — d}t          |d¬¦  «        \  }}t          |t          j        g d¢¦  «        d¬¦  «         t          |d         t          j        g d¢¦  «        d¬¦  «         t          t          |d	¬¦  «        d
         t          j        ddg¦  «        d¬¦  «         t          t          |d¬¦  «        d
         t          j        ddg¦  «        d¬¦  «         t          t          |d¬¦  «        d
         t          j        dg¦  «        d¬¦  «         dS )z2
        Test height condition for peaks.
        )r  çUUUUUUÕ?r  r	  r   r  r   r5  )r  râ   FrM   r@  )rU  r	  r  r  r   r^   rj   )Nr^   r)   )r   r^   N)r   r   r   rO   ©rS   rT   rÝ   rJ  s       r%   Útest_height_conditionz#TestFindPeaks.test_height_condition“  s3  € ð )ˆÝ! !¨LÐ9Ñ9Ô9‰ˆˆuÝ˜�rœx¨	¨	¨	Ñ2Ô2ÀÐFÑFÔFÐFÝ˜˜nÔ-­r¬x¸¸¸Ñ/GÔ/GØ$)ð	+ñ 	+ô 	+ð 	+å�
 1¨SÐ1Ñ1Ô1°!Ô4µb´hÀÀ1¸vÑ6FÔ6FØ$)ð	+ñ 	+ô 	+ð 	+å�
 1¨YÐ7Ñ7Ô7¸Ô:½B¼HÀaÈÀVÑ<LÔ<LØ$)ð	+ñ 	+ô 	+ð 	+å�
 1¨VÐ4Ñ4Ô4°QÔ7½¼À1À#¹¼Ø$)ð	+ñ 	+ô 	+ð 	+ð 	+ð 	+r'   c                 ó„  — d}t          |d¬¦  «        \  }}t          |t          j        ddg¦  «        d¬¦  «         t          |d         t          j        d	d
g¦  «        ¦  «         t          |d         t          j        ddg¦  «        ¦  «         t          t          |d¬¦  «        d         t          j        dg¦  «        d¬¦  «         t          t          |d¬¦  «        d         t          j        g t          ¬¦  «        d¬¦  «         t          t          |d¬¦  «        d         t          j        ddg¦  «        d¬¦  «         t          t          |d¬¦  «        d         t          j        dg¦  «        d¬¦  «         t          t          |d¬¦  «        d         t          j        g t          ¬¦  «        d¬¦  «         dS )z5
        Test threshold condition for peaks.
        )r   r   r)   rb   r8   r5  )rF  r)   r^   FrM   rB  r|   rs   rC  rr   rt   r   r   r
  r   )Nrj   )Nrb   )r   rb   N)r   r   r   rO   r-   rV  s       r%   Útest_threshold_conditionz&TestFindPeaks.test_threshold_condition£  sÄ  € ð ˆÝ! !¨|Ð<Ñ<Ô<‰ˆˆuÝ˜�rœx¨¨A¨Ñ/Ô/¸UÐCÑCÔCÐCÝ˜Ð/Ô0µ"´(¸CÀ¸:Ñ2FÔ2FÑGÔGÐGÝ˜Ð0Ô1µ2´8¸SÀ#¸JÑ3GÔ3GÑHÔHÐHÝ�
 1°Ð2Ñ2Ô2°1Ô5µr´xÀÀ±}´}Ø$)ð	+ñ 	+ô 	+ð 	+å�
 1°Ð4Ñ4Ô4°QÔ7½¼À"ÍCÐ9PÑ9PÔ9PØ$)ð	+ñ 	+ô 	+ð 	+å�
 1°	Ð:Ñ:Ô:¸1Ô=½r¼xÈÈAÈÑ?OÔ?OØ$)ð	+ñ 	+ô 	+ð 	+å�
 1°	Ð:Ñ:Ô:¸1Ô=½r¼xÈÈ¹}¼}Ø$)ð	+ñ 	+ô 	+ð 	+å�
 1°Ð7Ñ7Ô7¸Ô:½B¼HÀRÍsÐ<SÑ<SÔ<SØ$)ð	+ñ 	+ô 	+ð 	+ð 	+ð 	+r'   c                 óF  — t          j        ddd¦  «        }t          j        d¦  «        }||xx         t          j        dd|j        ¦  «        z  cc<   t          t          |d¬¦  «        d         |d¬¦  «         t          |d	¬¦  «        d         }t          j        ||d
¬¦  «        j        dk    sJ ‚t          j        |¦  «        }t          |dt          j	        |¦  «        z  ¦  «         g d¢}t          |d¬¦  «        d         }|j        dk    r|d         dk    sJ ‚dS )z4
        Test distance condition for peaks.
        r)   é   r^   r   ©Údistancer   FrM   g9ÖÅm4 @T)Úassume_uniqueru   )éþÿÿÿr)   r8   r   éýÿÿÿr\   N)
r   r   r   r,   rØ   r   r   Ú	setdiff1drŸ   Ú	ones_like)rS   Ú	peaks_allrT   Úpeaks_subsetÚdfss        r%   Útest_distance_conditionz%TestFindPeaks.test_distance_condition·  s.  € õ
 ”I˜a  QÑ'Ô'ˆ	ÝŒH�R‰LŒLˆØ	ˆ)ˆˆŒ�œ A q¨)¬.Ñ9Ô9Ñ9ˆˆ‰õ 	�
 1¨qÐ1Ñ1Ô1°!Ô4°iÈUÐSÑSÔSÐSõ " !¨fÐ5Ñ5Ô5°aÔ8ˆåŒ|˜L¨)À4ÐHÑHÔHÔMÐQRÒRÐRÐRÐRõ Œg�lÑ#Ô#ˆÝ˜˜Q�rœ|¨CÑ0Ô0Ñ0Ñ1Ô1Ð1ð ÐÐˆÝ! !¨bÐ1Ñ1Ô1°!Ô4ˆØÔ  AÒ%Ð%¨,°q¬/¸QÒ*>Ð*>Ð*>Ð>Ð*>Ð*>r'   c                 óh  — t          j        ddd¦  «        }t          j        ddd¦  «        }t          j        dd|j        ¦  «        }||xx         |z  cc<   ||         ||dz            z
  }d}t          j        |d         |k    ||d         k    z  ¦  «        }t          ||¬¦  «        \  }}t          |||         d	¬
¦  «         t          |d         ||         d	¬
¦  «         t          |d         t          j        |d         ¦  «        ¦  «         t          |d         ||         dz   d	¬
¦  «         dS )z6
        Test prominence condition for peaks.
        r   r\   rW   r)   éc   r   )r^   rk   )r  FrM   r+  r,  r-  N)r   r,   r   rØ   Únonzeror   r   Ú
zeros_like)	rS   rT   Ú
peaks_trueÚoffsetr+  ÚintervalÚkeepÚ
peaks_calcÚ
propertiess	            r%   Útest_prominence_conditionz'TestFindPeaks.test_prominence_conditionÑ  sV  € õ ŒK˜˜2˜sÑ#Ô#ˆÝ”Y˜q " aÑ(Ô(ˆ
Ý”˜Q  J¤OÑ4Ô4ˆØ	ˆ*ˆˆŒ˜Ñˆˆ‰Ø˜
”m a¨
°Q©Ô&7Ñ7ˆØˆÝŒzØ�aŒ[˜KÒ'¨K¸8ÀA¼;Ò,FÑGñIô Iˆõ ",¨A¸(Ð!CÑ!CÔ!CÑˆ
�JÝ˜
 J¨tÔ$4À%ÐHÑHÔHÐHÝ˜
 =Ô1°;¸tÔ3DÐRWÐXÑXÔXÐXÝ˜
 <Ô0Ýœ j°Ô&>Ñ?Ô?ñ	Aô 	Að 	Aå˜
 =Ô1°:¸dÔ3CÀaÑ3GØ$)ð	+ñ 	+ô 	+ð 	+ð 	+ð 	+r'   c                 ó  — t          j        g d¢¦  «        }t          |dd¬¦  «        \  }}|j        dk    sJ ‚t	          |dt          j        |¦  «        z  ¦  «         t          |d         t          j        dg¦  «        ¦  «         t          |d	         t          j        d
g¦  «        ¦  «         t          |d         t          j        dg¦  «        ¦  «         t          |d         t          j        dg¦  «        ¦  «         dS )z1
        Test width condition for peaks.
        )	r)   r   r)   r   r)   r   r8   rb   r   r6  r  )rG  r  r)   rg   r  gš™™™™™õ?rA  rr   r>  gš™™™™™@r?  g      @N)r   rO   r   rØ   r   rb  r   rã   rV  s       r%   Útest_width_conditionz"TestFindPeaks.test_width_conditionæ  sé   € õ ŒHÐ1Ð1Ð1Ñ2Ô2ˆÝ! !¨9ÀÐFÑFÔF‰ˆˆuØŒz˜QŠˆˆˆÝ˜˜q¥¤¨eÑ!4Ô!4Ñ4Ñ5Ô5Ð5Ý˜˜hœ­¬°T°FÑ);Ô);Ñ<Ô<Ð<Ý˜˜oÔ.µ´
¸B¸4Ñ0@Ô0@ÑAÔAÐAÝ˜˜jÔ)­2¬:°s°eÑ+<Ô+<Ñ=Ô=Ð=Ý˜˜kÔ*­B¬J¸°vÑ,>Ô,>Ñ?Ô?Ð?Ð?Ð?r'   c                 óÒ   — d}g d¢}t          |||||¬¦  «        \  }}t          |¦  «        t          | j        ¦  «        k    sJ ‚| j        D ]}|j        ||         j        k    sJ ‚ŒdS )z+
        Test returned properties.
        r5  )
r   r)   r   r   r  r   r^   r   rj   rk   rE  N)r   r+   rH  rØ   )rS   rI  rT   rÝ   rJ  rK  s         r%   Útest_propertieszTestFindPeaks.test_propertiesó  s—   € ð %ˆØ,Ð,Ð,ˆÝ! !Ø)6À-Ø-:À-ðQñ Qô Q‰ˆˆuõ �5‰zŒz�S Ô!3Ñ4Ô4Ò4Ð4Ð4Ð4ØÔ%ð 	1ð 	1ˆCØ”:  s¤¤Ò0Ð0Ð0Ð0Ð0ð	1ð 	1r'   c                 óæ  — t          t          d¬¦  «        5  t          t          j        d¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t          j        d¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          t          j        d¦  «        d¬	¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
z5
        Test exceptions raised by function.
        ró   ry   r)   Nr*  r]  r\   r8   r\  )r   r<   r   r   rO   r}   r   r   s    r%   Útest_raiseszTestFindPeaks.test_raises   s’  € õ •J kÐ2Ñ2Ô2ð 	$ð 	$Ý•r”x ‘{”{Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$å•J kÐ2Ñ2Ô2ð 	(ð 	(Ý•r”w˜v‘”Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(å•J jÐ1Ñ1Ô1ð 	3ð 	3Ý•r”y ‘}”}¨rÐ2Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s5   —"AÁA	ÁA	Á&"BÂBÂBÂ5$C&Ã&C*Ã-C*z(ignore:some peaks have a prominence of 0r  c                 óÎ  — t          g d¢ddd¬¦  «        \  }}t          |dt          j        |¦  «        z  ¦  «         t          |d         t          j        |d         ¦  «        ¦  «         t          |d         t          j        |d         ¦  «        ¦  «         t          |d         t          j        |d         ¦  «        ¦  «         dD ]}t          ||         |d	¬
¦  «         ŒdS )z³
        Test behavior of prominence and width calculation if the given window
        length is smaller than a peak's plateau size.

        Regression test for gh-9110.
        rý   r5  r   )r  rG  rð   r+  r  rA  )r,  r-  r>  r?  FrM   N)r   r   r   rb  rj  )rS   rÝ   rJ  rK  s       r%   Útest_wlen_smaller_plateauz'TestFindPeaks.test_wlen_smaller_plateau  së   € õ " / / /¸lØ(4¸1ð>ñ >ô >‰ˆˆuå˜˜q¥2¤<°Ñ#6Ô#6Ñ6Ñ7Ô7Ð7Ý˜˜mÔ,­b¬m¸EÀ-Ô<PÑ.QÔ.QÑRÔRÐRÝ˜˜hœ­¬°u¸X´Ñ)GÔ)GÑHÔHÐHÝ˜˜oÔ.µ´¸UÀ?Ô=SÑ0TÔ0TÑUÔUÐUØIð 	Bð 	BˆCÝ˜E #œJ¨¸5ÐAÑAÔAÐAÐAð	Bð 	Br'   Úkwargsr]  rs   r  r5  rG  r6  c                 óÖ   — t          j        ddd¦  «        }|                     ¦   «         }d|j        _        t          |¦  «        \  }}t          |fi |¤Ž\  }}t          ||¦  «         dS )z4
        Test readonly arrays are accepted.
        r   r\   é   FN)r   r,   r9   ÚflagsÚ	writeabler   r   )rS   rz  rT   Ú
x_readonlyrÝ   Ú_Úpeaks_readonlys          r%   Útest_readonly_arrayz!TestFindPeaks.test_readonly_array  sn   € õ ŒK˜˜2˜rÑ"Ô"ˆØ—V’V‘X”Xˆ
Ø%*ˆ
ÔÔ"å˜a‘=”=‰ˆˆqÝ& zÐ<Ð<°VÐ<Ð<Ñˆ˜å˜˜~Ñ.Ô.Ð.Ð.Ð.r'   N)r�   r‚   rƒ   rH  rL  rS  rW  rY  rf  rq  rs  ru  rw  r„   r…   r3  ry  r†   r‚  r‡   r'   r%   r=  r=  c  s>  € € € € € ð?ð ?ð ?€Mð
(ð 
(ð 
(ð+ð +ð +ð:+ð +ð +ð +ð +ð +ð(?ð ?ð ?ð4+ð +ð +ð*@ð @ð @ð1ð 1ð 1ð	3ð 	3ð 	3ð „[×ÒÐ JØ EñGô GðBð BñGô GðBð  „[×Ò˜XØ
Ø	�SÐØ	�|Ð$Ø	�)Ðð	(ñ ô ð/ð /ñô ð/ð /ð /r'   r=  c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestFindPeaksCwtc                 óÊ   — g d¢}d}t          ||¦  «        \  }}t          j        dt          |¦  «        ¦  «        }t	          ||ddd¬¦  «        }t          ||dd	¬
¦  «         dS )zX
        Generate a series of gaussians and attempt to find the peak locations.
        ©rt   rs   rÁ   g      4@rÁ   g      I@rÂ   rž   r   r   N)Ú
gap_threshÚmin_snrÚ
min_lengthFz4Found maximum locations did not equal those expected)rN   Úerr_msg)r0   r   r   r3   r   r   )rS   r   Ú
num_pointsrÆ   rÇ   r  Ú
found_locss          r%   Útest_find_peaks_exactz&TestFindPeaksCwt.test_find_peaks_exact4  s‰   € ð 4Ð3Ð3ˆØˆ
Ý1°&¸*ÑEÔEÑˆ	�8Ý”˜3¥ F¡¤Ñ,Ô,ˆÝ# I¨vÀ!ÈQØ48ð:ñ :ô :ˆ
å˜
 HØ$)Ø Vð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r'   c                 ó0  — g d¢}d}t          ||¦  «        \  }}t          j        dt          |¦  «        ¦  «        }d}t          j                             d¦  «        }||                     |¦  «        dz
  d|z  z  z  }t          ||dd	|d
z  ¬¦  «        }d}	t          |¦  «        t          |¦  «        k    s
J |	¦   «         ‚t          j        ||z
  ¦  «        }
t          j	        |¦  «        d
z  }t          j
                             |
|dd|› �z   ¦  «         dS )zz
        Verify that peak locations are (approximately) found
        for a series of gaussians with added noise.
        r†  rÂ   rž   gìQ¸…ë±?éor  r   r|  r)   rj   )r‰  r‡  rˆ  z-Different number of peaks found than expectedzMaximum location differedzby more than N)r0   r   r   r3   ÚrandomÚdefault_rngr   r+   r¢   rO   r    r¡   )rS   r   r‹  rÆ   rÇ   r  Ú	noise_ampÚrngrŒ  rŠ  ÚdiffsÚ	max_diffss               r%   Útest_find_peaks_withnoisez*TestFindPeaksCwt.test_find_peaks_withnoiseC  s9  € ð
 4Ð3Ð3ˆØˆ
Ý1°&¸*ÑEÔEÑˆ	�8Ý”˜3¥ F¡¤Ñ,Ô,ˆØˆ	ÝŒi×#Ò# HÑ-Ô-ˆØ�c—j’j Ñ,Ô,¨sÑ2°Q°y±[ÑAÑAˆ	Ý# I¨vÀ"Ø45¸yÈ1¹}ðNñ Nô Nˆ
ð AˆÝ�:‰Œ¥# h¡-¤-Ò/Ð/Ð/°Ñ/Ô/Ð/Ý”�z HÑ,Ñ-Ô-ˆÝ”H˜VÑ$Ô$ qÑ(ˆ	Ý
Œ
×$Ò$ U¨IÐ7RØ%@°YÐ%@Ð%@ñ8Añ 	Bô 	Bð 	Bð 	Bð 	Br'   c                 ó  — d}d}t           j                             d¦  «        }|                     |¦  «        dz
  d|z  z  }t          j        dd¦  «        }t          ||dd	¬
¦  «        }t          |¦  «        dk    sJ ‚dS )zQ
        Verify that no peak is found in
        data that's just noise.
        rr   rW   iWÖ
r  r   r\   r]   rj   r®   )rˆ  Ú
noise_percr   N)r   r�  ÚRandomStateÚrandr   r   r+   )rS   r’  r‹  r“  rÆ   r  rŒ  s          r%   Útest_find_peaks_nopeakz'TestFindPeaksCwt.test_find_peaks_nopeakY  s†   € ð
 ˆ	Øˆ
ÝŒi×#Ò# IÑ.Ô.ˆØ—X’X˜jÑ)Ô)¨CÑ/°!°I±+Ñ>ˆ	Ý”˜2˜rÑ"Ô"ˆÝ# I¨v¸qÈRÐPÑPÔPˆ
Ý�:‰Œ !Ò#Ð#Ð#Ð#Ð#Ð#r'   c                 óÊ   — t          dd¦  «        }t          j        g d¢¦  «        }t          ||t           ¬¦  «        }t	          |t          j        dg¦  «        d¬¦  «         d S )NéÈ   r   )r)   r   r^   rb   )ÚwaveletrW   FrM   )r   r   rO   r   r   rã   )rS   rT   r  Úas       r%   Ú)test_find_peaks_with_non_default_waveletsz:TestFindPeaksCwt.test_find_peaks_with_non_default_waveletsf  s_   € Ý�S˜!ÑÔˆÝ”˜,˜,˜,Ñ'Ô'ˆÝ˜1˜f­hÐ7Ñ7Ô7ˆå˜�2œ: s eÑ,Ô,¸%Ð@Ñ@Ô@Ð@Ð@Ð@r'   c                 ó&  — ddg}d}t          ||¦  «        \  }}t          j        dt          |¦  «        d¦  «        }d}t          j                             d¦  «        }||                     |¦  «        dz
  d|z  z  z  }|d	d
…xx         dz  cc<   t          ||dddd¬¦  «        }t          j	        t          ¦  «        5  |j        |j        k    sJ ‚	 ddd¦  «         n# 1 swxY w Y   t          ||dddd¬¦  «        }|j        |j        k    sJ ‚dS )zq
        Verify that window_size is passed correctly to private function and
        affects the result.
        r|   rõ   rž   gš™™™™™É?çš™™™™™©?r�  r  r   éú   i@  r)   r^   N)r‡  rˆ  r‰  Úwindow_sizerm   )r0   r   r   r3   r�  r™  rš  r   r„   r   ÚAssertionErrorrØ   )	rS   r   r‹  rÆ   rÇ   r  r’  r“  rŒ  s	            r%   Útest_find_peaks_window_sizez,TestFindPeaksCwt.test_find_peaks_window_sizem  s�  € ð
 �s�ˆØˆ
Ý1°&¸*ÑEÔEÑˆ	�8Ý”˜3¥ F¡¤¨SÑ1Ô1ˆØˆ	ÝŒi×#Ò# HÑ-Ô-ˆØ�c—h’h˜zÑ*Ô*¨SÑ0°1°Y±;Ñ?Ñ?ˆ	ð 	�#�c�'ÐÐÔ˜aÑÐÐÑå# I¨vÀ!ÈQØ/3ÀðGñ Gô Gˆ
åŒ]�>Ñ*Ô*ð 	4ð 	4Ø”? h¤mÒ3Ð3Ð3Ð3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4õ $ I¨vÀ!ÈQØ/3ÀðEñ Eô Eˆ
àŒ (¤-Ò/Ð/Ð/Ð/Ð/Ð/s   Â?CÃC#Ã&C#c                 óÒ   — t          j        dt           j        d¦  «        }t          j        |¦  «        }d}t	          ||¦  «        }t           j                             |d¦  «         dS )z]
        Verify that the `width` argument
        in `find_peaks_cwt` can be a float
        r   r¢  r)   é    N)r   r   ÚpiÚsinr   r    Úassert_equal)rS   ÚxsrÆ   r  rŒ  s        r%   Útest_find_peaks_with_one_widthz/TestFindPeaksCwt.test_find_peaks_with_one_width‡  sX   € õ
 ŒY�q�"œ% Ñ&Ô&ˆÝ”F˜2‘J”Jˆ	ØˆÝ# I¨vÑ6Ô6ˆ
å
Œ
×Ò 
¨BÑ/Ô/Ð/Ð/Ð/r'   N)	r�   r‚   rƒ   r�  r–  r›  r   r¦  r­  r‡   r'   r%   r„  r„  2  st   € € € € € ð
ð 
ð 
ðBð Bð Bð,$ð $ð $ðAð Að Að0ð 0ð 0ð4
0ð 
0ð 
0ð 
0ð 
0r'   r„  )"r9   Únumpyr   r„   r   r   Úscipy._lib._array_apir   r   Úscipy.signal._peak_findingr   r   r	   r
   r   r   r   r   Úscipy.signal.windowsr   Ú scipy.signal._peak_finding_utilsr   r   r&   r0   rI   rK   r‰   r±   rÕ   r  r;  r=  r„  r‡   r'   r%   ú<module>r³     s�  ðØ €€€à Ð Ð Ð Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð *Ð )Ð )Ð )Ð )Ð )Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rðð ð ð!ð !ð !ð($ð ($ð ($ðV8#ð 8#ð 8#ð 8#ð 8#ñ 8#ô 8#ð 8#ðv_Ið _Ið _Ið _Ið _Iñ _Iô _Ið _IðDPLð PLð PLð PLð PLñ PLô PLð PLðfw;ð w;ð w;ð w;ð w;ñ w;ô w;ð w;ðtH6ð H6ð H6ð H6ð H6ñ H6ô H6ð H6ðVHð Hð Hð8L/ð L/ð L/ð L/ð L/ñ L/ô L/ð L/ð^_0ð _0ð _0ð _0ð _0ñ _0ô _0ð _0ð _0ð _0r'   