§
    ¢éUgG„  ã                   óX  — d dl Z d dlZd dlmZmZmZmZ d dl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)Úassert_Úassert_equalÚassert_allcloseÚassert_array_equal)ÚraisesÚwarns)Ú	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           úc/var/www/surfInsights/venv3-11/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_evenr2   $   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_bounds:   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Úgapsr9   Úlocsr!   Údist_intÚgap_intr$   ÚnextcolÚnextrows                r'   Ú_gen_ridge_linerK   ,   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 ¦  «        ¦  «         t          |j        du ¦  «         Œ;dS )zTest with empty signal.r   N)r   ÚarrayÚfloat64r   r   r   Úbase©ÚselfÚxrO   s      r'   Ú
test_emptyzTestLocalMaxima1d.test_emptyY   si   € åŒH�R�rœzÐ*Ñ*Ô*ˆÝ% aÑ(Ô(ð 	(ð 	(ˆEÝ˜¥¤¨¡¤Ñ-Ô-Ð-Ý�E”J $Ð&Ñ'Ô'Ð'Ð'ð	(ð 	(r)   c                 óÄ   — t          j        dd¦  «        }t          |¦  «        D ]:}t          |t          j        g ¦  «        ¦  «         t          |j        du ¦  «         Œ;dS )zTest with linear signal.r   éd   N)r   r.   r   r   rO   r   rQ   rR   s      r'   Útest_linearzTestLocalMaxima1d.test_linear`   sd   € åŒK˜˜3ÑÔˆÝ% aÑ(Ô(ð 	(ð 	(ˆEÝ˜¥¤¨¡¤Ñ-Ô-Ð-Ý�E”J $Ð&Ñ'Ô'Ð'Ð'ð	(ð 	(r)   c                 óô   — t          j        ddd¦  «        }|ddd…xx         dz  cc<   t          j        ddd¦  «        }t          |¦  «        D ](}t	          ||¦  «         t          |j        du ¦  «         Œ)dS )zTest with simple signal.éöÿÿÿé
   é2   r   Né   r+   )r   r.   r   r   r   r   rQ   )rS   rT   ÚexpectedrO   s       r'   Útest_simplezTestLocalMaxima1d.test_simpleg   sŽ   € åŒK˜˜R Ñ$Ô$ˆØ	ˆ!ˆ$ˆQˆ$ˆˆŒ�1‰ˆˆ‰Ý”9˜Q  AÑ&Ô&ˆÝ% aÑ(Ô(ð 	(ð 	(ˆEõ ˜ Ñ)Ô)Ð)Ý�E”J $Ð&Ñ'Ô'Ð'Ð'ð		(ð 	(r)   c                 ó0  — t          j        g d¢¦  «        }t          |¦  «        \  }}}t          |t          j        g d¢¦  «        ¦  «         t          |t          j        g d¢¦  «        ¦  «         t          |t          j        g d¢¦  «        ¦  «         dS )z+Test if flat maxima are detected correctly.)gÍÌÌÌÌÌô¿r   r+   r   r   r   r   r]   r]   r]   gìQ¸…ë@é   ra   ra   ra   rZ   éûÿÿÿrb   rb   rb   rb   rZ   )r   ra   é   é   é   )r   ra   é   é   é   )r   é   é	   é   é   N)r   rO   r   r   )rS   rT   Ú	midpointsÚ
left_edgesÚright_edgess        r'   Útest_flat_maximaz"TestLocalMaxima1d.test_flat_maximar   sŸ   € åŒHð /ð /ð /ñ 0ô 0ˆå-=¸aÑ-@Ô-@Ñ*ˆ	�:˜{Ý�Y¥¤Ð):Ð):Ð):Ñ ;Ô ;Ñ<Ô<Ð<Ý�Z¥¤Ð*;Ð*;Ð*;Ñ!<Ô!<Ñ=Ô=Ð=Ý�[¥"¤(Ð+<Ð+<Ð+<Ñ"=Ô"=Ñ>Ô>Ð>Ð>Ð>r)   rT   )ç      ð?r   r   )ç      @r]   r   ra   ra   )ç      @ri   ri   r   é   rt   rt   c                 óš   — t          |¦  «        D ]:}t          |t          j        g ¦  «        ¦  «         t	          |j        du ¦  «         Œ;dS )z,Test if behavior on signal edges is correct.N)r   r   r   rO   r   rQ   rR   s      r'   Útest_signal_edgesz#TestLocalMaxima1d.test_signal_edges{   sU   € õ & aÑ(Ô(ð 	(ð 	(ˆEÝ˜¥¤¨¡¤Ñ-Ô-Ð-Ý�E”J $Ð&Ñ'Ô'Ð'Ð'ð	(ð 	(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   Úlistrq   ç       @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   rX   r_   rp   ÚpytestÚmarkÚparametrizer   rO   rv   r   © r)   r'   rM   rM   W   sÕ   € € € € € ð(ð (ð (ð(ð (ð (ð	(ð 	(ð 	(ð?ð ?ð ?ð „[×Ò˜SØˆŒ���ÑÔØˆŒÐ!Ð!Ð!Ñ"Ô"ØˆŒÐ'Ð'Ð'Ñ(Ô(ð#ñ ô ð
(ð (ñô ð
(ð	#ð 	#ð 	#ð 	#ð 	#r)   rM   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	          t          |¦  «        dk    ¦  «         d S )Nrl   rW   r   r+   r   ©r   r   r   Úfullr   r-   ©rS   Ú	test_matrÚliness      r'   rU   zTestRidgeLines.test_empty”   sN   € Ý”H˜b #˜YÑ'Ô'ˆ	Ý% iµ´¸¸Q±´ÀÑCÔCˆÝ•�E‘
”
˜a’Ñ Ô Ð Ð Ð r)   c                 óŠ  — t          j        ddg¦  «        }d|d<   t          |t          j        dd¦  «        d¦  «        }t	          t          |¦  «        dk    ¦  «         t          j        ddg¦  «        }d|dd…df<   t          |t          j        dd¦  «        d¦  «        }t	          t          |¦  «        dk    ¦  «         d S )Nrl   rW   r+   )r   r[   r   r   r[   rŠ   rŒ   s      r'   Útest_minimalzTestRidgeLines.test_minimal™   s°   € Ý”H˜b #˜YÑ'Ô'ˆ	Øˆ	�%ÑÝ% iµ´¸¸Q±´ÀÑCÔCˆÝ•�E‘
”
˜a’Ñ Ô Ð å”H˜b #˜YÑ'Ô'ˆ	Øˆ	�!�A�#�r�'ÑÝ% iµ´¸¸Q±´ÀÑCÔCˆÝ•�E‘
”
˜a’Ñ Ô Ð Ð Ð r)   c                 óN  — 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          ||g¦  «         d S )
N©r   r+   r   ri   )r   r+   r   r   r+   rl   r\   gê-�™—q=rd   r   é   r+   )r   r   rK   Úshaper‹   r5   r   r   )rS   rD   rE   r�   rC   ÚlineÚmax_distancesÚidentified_liness           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±ñ@ô @Ðõ 	Ð+¨d¨VÑ4Ô4Ð4Ð4Ð4r)   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          t          |¦  «        d
k    ¦  «         |D ]ª}	t          j	        |	d         ¦  «        }
t           j
                             t          j        |
¦  «        |¦  «         t          j	        |	d         ¦  «        }t           j
                             t          j        |¦  «        t          |¦  «        dz   ¦  «         Œ«d S )Nr’   )r   r+   r   ra   rl   r\   rd   r   r“   r+   r]   r   çš™™™™™¹?)r   r   rK   r”   r‹   r   r5   r   r-   ÚdiffÚtestingÚassert_array_lessÚabs)rS   rD   rE   r�   rC   r•   Úmax_distr–   r—   ÚilineÚadistsÚagapss               r'   Útest_single_bigdistz"TestRidgeLines.test_single_bigdist±   sF  € Ø �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                 óŽ  — 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          t          |	¦  «        dk    ¦  «         |	D ]ª}
t          j        |
d	         ¦  «        }t           j	         
                    t          j        |¦  «        |¦  «         t          j        |
d         ¦  «        }t           j	         
                    t          j        |¦  «        t          |¦  «        dz   ¦  «         Œ«d S )Nr’   r]   )r   ra   r   r+   rl   r\   rd   r   r“   r+   rt   r   rš   ©r   r   rK   r”   r‹   r   r   r-   r›   rœ   r�   rž   r5   ©rS   rD   Úmax_gaprE   r�   rC   r•   rŸ   r–   r—   r    r¡   r¢   s                r'   Útest_single_biggapz!TestRidgeLines.test_single_biggapÇ   s7  € Ø �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                 óŒ  — 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          t          |	¦  «        dk    ¦  «         |	D ]ª}
t          j        |
d         ¦  «        }t           j	         
                    t          j        |¦  «        |¦  «         t          j        |
d         ¦  «        }t           j	         
                    t          j        |¦  «        t          |¦  «        dz   ¦  «         Œ«d S )	Nr   r+   r]   rt   r\   é   r“   rš   r¥   r¦   s                r'   Útest_single_biggapsz"TestRidgeLines.test_single_biggapsÜ   s5  € Ø�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   € € € € € ð!ð !ð !ð
	!ð 	!ð 	!ð5ð 5ð 5ð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         |¦  «         t          j        d¦  «        }t	          |d¬¦  «        \  }}t          ||¦  «         t          ||¦  «         t	          |d¬¦  «        \  }}t          ||¦  «         t          ||¦  «         d S )Nr   ri   r+   r   )r]   ri   ©Úaxis)r   rO   r/   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ˆÝ•S˜‘V”V˜QÑÔÐÝ˜1˜Qœ4 Ñ-Ô-Ð-åŒX�e‰_Œ_ˆå˜R aÐ(Ñ(Ô(‰ˆˆSÝ˜3 Ñ,Ô,Ð,Ý˜3 Ñ,Ô,Ð,å˜R aÐ(Ñ(Ô(‰ˆˆSÝ˜3 Ñ,Ô,Ð,Ý˜3 Ñ,Ô,Ð,Ð,Ð,r)   c                 ó  — t          j        g d¢g d¢g d¢g d¢g d¢g¦  «        }t          |d¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢¦  «         t	          ||         g d	¢¦  «         t          |d
¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢¦  «         t	          ||         g d¢¦  «         t          |d¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢¦  «         t	          ||         g d¢¦  «         t          |d
¬¦  «        \  }}t          j        |¦  «        }t	          ||         g d¢¦  «         t	          ||         g 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]   )ra   r   r+   r+   )r   r]   ra   )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‘”ˆÝ�S˜”Z   Ñ+Ô+Ð+Ý�S˜”Z   Ñ+Ô+Ð+å˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ�S˜”Z   Ñ+Ô+Ð+Ý�S˜”Z   Ñ+Ô+Ð+å˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ�S˜”Z   Ñ+Ô+Ð+Ý�S˜”Z   Ñ+Ô+Ð+å˜Q QÐ'Ñ'Ô'‰ˆˆSÝ”
˜3‘”ˆÝ�S˜”Z   Ñ+Ô+Ð+Ý�S˜”Z   Ñ+Ô+Ð+Ð+Ð+r)   c                 óP  — d}g d¢}t          |d¦  «        \  }}||         dz  |||z   <   ||         dz  |||z
  <   t          ||d¬¦  «        d         }t          t          |¦  «        t          |¦  «        k    ¦  «         t          ||k                         ¦   «         ¦  «         d S )Nr   )rq   r{   ç      $@rs   g      .@éô  gwJëÿï?Úclip)rº   Úmoder   )r2   r	   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ˆå•�LÑ!Ô!¥S¨¡]¤]Ò2Ñ3Ô3Ð3Ý� Ò)×.Ò.Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1r)   c                 óô  — g d¢}t          |d¦  «        \  }}d}t          j        dt          |¦  «        ¦  «        |z
  }t          j        |||         g¦  «        }t          |dd¬¦  «        \  }}t          d|j        d         ¦  «        D ]l}	||	k    }
t          t          ||
         ¦  «        t          |¦  «        k    ¦  «         t          |||
         ||	z  z
  k     	                    ¦   «         ¦  «         Œmd S )N)rq   r{   r½   rW   rl   r   r+   )r°   rº   )
r2   r   r   r-   Úvstackr	   r?   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_gaussians6  s  € Ø!Ð!Ð!ˆÝ1°&¸#Ñ>Ô>Ñˆ	�8Øˆ
Ý”I˜a¥ Y¡¤Ñ0Ô0°:Ñ=ˆ	Ý”i ¨I°iÔ,@Ð AÑBÔBˆÝ%.¨{ÀÈ!Ð%LÑ%LÔ%LÑ"ˆ�lå˜˜;Ô,¨QÔ/Ñ0Ô0ð 	Nð 	NˆBØ  BÒ&ˆDå•C˜ TÔ*Ñ+Ô+­s°8©}¬}Ò<Ñ=Ô=Ð=Ý�X ,¨tÔ"4°zÀ"±}Ñ"DÒE×JÒJÑLÔLÑMÔMÐMÐMð		Nð 	Nr)   N)r€   r�   r‚   rU   r»   rÅ   rÏ   r†   r)   r'   r­   r­   ò   sU   € € € € € ð-ð -ð -ð0,ð ,ð ,ð>	2ð 	2ð 	2ðNð Nð Nð Nð N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 ]5\  }}t          |j        dk    ¦  «         t          |j        |k    ¦  «         Œ6t          g g ¦  «        }t          |t          j        t          j        t          j        g¦  «        D ]5\  }}t          |j        dk    ¦  «         t          |j        |k    ¦  «         Œ6dS )úN
        Test if an empty array is returned if no peaks are provided.
        r¸   r   N)r   Úzipr   rP   Úintpr   Úsizer   )rS   r8   Úarrr   s       r'   rU   zTestPeakProminences.test_emptyG  sÜ   € õ ˜y˜y˜y¨"Ñ-Ô-ˆÝ˜c¥B¤Jµ´½¼Ð#AÑBÔBð 	(ð 	(‰JˆC�Ý�C”H ’MÑ"Ô"Ð"Ý�C”I Ò&Ñ'Ô'Ð'Ð'å˜r 2Ñ&Ô&ˆÝ˜c¥B¤Jµ´½¼Ð#AÑBÔBð 	(ð 	(‰JˆC�Ý�C”H ’MÑ"Ô"Ð"Ý�C”I Ò&Ñ'Ô'Ð'Ð'ð	(ð 	(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         |¦  «         t	          |d         |¦  «         t	          |d         |¦  «         d	S )
zŠ
        Test if height of prominences is correctly calculated in signal with
        rising baseline (peak widths are 1 sample).
        )r:   ç333333ó?rÙ   r+   çš™™™™™	@gÍÌÌÌÌÌô?g
×£p=
@gÍÌÌÌÌÌ @)r+   r   ra   rt   )r   r   r   ri   )r]   r]   ri   rf   r   r¯   r+   r   N)r   rO   r5   r   r   )rS   rT   ÚpeaksÚlbasesÚrbasesÚpromsr8   s          r'   r»   zTestPeakProminences.test_basicU  sÎ   € õ ŒHÐ;Ð;Ð;Ñ<Ô<ˆÝ”˜˜˜Ñ&Ô&ˆÝ”˜,˜,˜,Ñ'Ô'ˆÝ”˜,˜,˜,Ñ'Ô'ˆØ�%”�2œ6 1 V¤9¨a°¬iÐ"8¸qÐAÑAÔAÑAˆå˜q %Ñ(Ô(ˆÝ�S˜”V˜UÑ#Ô#Ð#Ý�S˜”V˜VÑ$Ô$Ð$Ý�S˜”V˜VÑ$Ô$Ð$Ð$Ð$r)   c                 óv  — g d¢}g d¢}t          ||¦  «        \  }}}t          |g d¢¦  «         t          |g d¢¦  «         t          |g d¢¦  «         g d¢}t          j        g d¢¦  «        }t          ||¦  «        \  }}}t          |g d¢¦  «         t          ||dz
  ¦  «         t          ||dz   ¦  «         d	S )
z"
        Test edge cases.
        )r   r   r+   r   r+   r   r   ©r+   r]   ri   )r   r   r   )r   r   r   )rt   rt   rt   )r   r+   r   r+   r   r+   r   )r+   r+   r+   r+   N)r   r   r   rO   ©rS   rT   rÛ   rÞ   rÜ   rÝ   s         r'   Útest_edge_casesz#TestPeakProminences.test_edge_casesf  sâ   € ð
 "Ð!Ð!ˆØ�	�	ˆÝ 0°°EÑ :Ô :Ñˆˆv�vÝ�U˜I˜I˜IÑ&Ô&Ð&Ý�V˜Y˜Y˜YÑ'Ô'Ð'Ý�V˜Y˜Y˜YÑ'Ô'Ð'ð "Ð!Ð!ˆÝ”˜˜˜Ñ#Ô#ˆÝ 0°°EÑ :Ô :Ñˆˆv�vÝ�U˜I˜I˜IÑ&Ô&Ð&Ý�V˜U Q™YÑ'Ô'Ð'Ý�V˜U Q™YÑ'Ô'Ð'Ð'Ð'r)   c                 ó  — t          j        g d¢d¦  «        }t          j        g d¢d¦  «        }t          |ddd…         |ddd…         ¦  «        \  }}}t          |g d¢¦  «         t          |g d¢¦  «         t          |g d¢¦  «         dS )ú:
        Test with non-C-contiguous input arrays.
        )i÷ÿÿÿrj   rj   r   r]   r+   r   )r+   r   ra   N)rj   rj   r   )r   r   r]   )r]   r]   ri   )r   Úrepeatr   r   rá   s         r'   Útest_non_contiguousz'TestPeakProminences.test_non_contiguousz  s�   € õ ŒIÐ)Ð)Ð)¨1Ñ-Ô-ˆÝ”	˜)˜)˜) QÑ'Ô'ˆÝ 0°°3°3°Q°3´¸¸s¸sÀ¸s¼Ñ DÔ DÑˆˆv�vÝ�U˜I˜I˜IÑ&Ô&Ð&Ý�V˜Y˜Y˜YÑ'Ô'Ð'Ý�V˜Y˜Y˜YÑ'Ô'Ð'Ð'Ð'r)   c                 óº   — g d¢}dg}t          t          ||¦  «        g d¢¦  «         dD ]0\  }}t          t          |||¦  «        d|z
  d|z   d|z
  g¦  «         Œ1dS )	zO
        Test if wlen actually shrinks the evaluation range correctly.
        )r   r+   r   r]   r+   r   r:   r]   )rr   r   rt   ))rc   r   )rf   r   )rt   r   )ri   r+   )rÚ   r+   ©r]   r   )çš™™™™™ñ?r   rr   r   rt   N)r   r   )rS   rT   ÚpeakÚwlenr³   s        r'   Ú	test_wlenzTestPeakProminences.test_wlen…  s‰   € ð #Ð"Ð"ˆØˆsˆåÕ% a¨Ñ.Ô.°
°
°
Ñ;Ô;Ð;ØSð 	Rð 	R‰GˆD�!ÝÕ)¨!¨T°4Ñ8Ô8¸2À¹6À1ÀqÁ5È!ÈaÉ%Ð:PÑQÔQÐQÐQð	Rð 	R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 arrayrx   )r   r+   r+   r   r+   r   Nr]   r   únot a valid index)iœÿÿÿr:   r]   éè  ©r+   r   r   úcannot safely castré   çffffff@rë   r[   ri   ©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   rx   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Ñ   E  s€   € € € € € ð(ð (ð (ð%ð %ð %ð"(ð (ð (ð(	(ð 	(ð 	(ð	Rð 	Rð 	Rð<ð <ð <ð<	;ð 	;ð 	;ð 	;ð 	;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          |t          j        ¦  «        ¦  «         t          |j        d¦  «         t          g d¢g ¦  «        d         }t          t          |t          j        ¦  «        ¦  «         t          |j        d¦  «         t          g g ¦  «        }|D ]>}t          t          |t          j        ¦  «        ¦  «         t          |j        d¦  «         Œ?dS )rÓ   r   r¸   N)r   r   Ú
isinstancer   Úndarrayr   rÖ   )rS   Úwidthsr8   r×   s       r'   rU   zTestPeakWidths.test_empty¼  sß   € õ ˜R Ñ$Ô$ QÔ'ˆÝ•
˜6¥2¤:Ñ.Ô.Ñ/Ô/Ð/Ý�V”[ !Ñ$Ô$Ð$Ý˜Y˜Y˜Y¨Ñ+Ô+¨AÔ.ˆÝ•
˜6¥2¤:Ñ.Ô.Ñ/Ô/Ð/Ý�V”[ !Ñ$Ô$Ð$Ý˜"˜bÑ!Ô!ˆØð 	&ð 	&ˆCÝ•J˜s¥B¤JÑ/Ô/Ñ0Ô0Ð0Ý˜œ 1Ñ%Ô%Ð%Ð%ð	&ð 	&r)   ú#ignore:some peaks have a width of 0c                 ó  — t          j        g d¢¦  «        }d}dD ]d\  }}}}t          |dg|¦  «        \  }}}	}
t          ||¦  «         t          |d||z  z
  ¦  «         t          |	|¦  «         t          |
|¦  «         ŒedS )zk
        Test a simple use case with easy to verify results at different relative
        heights.
        )r+   r   r+   r   r+   r   r:   r   ))ç        r  rr   rr   )g      Ð?rq   ç      @ç      @)ç      à?r{   r{   ç      @)ç      è?rr   ç      ø?ç      @)rq   r  rq   rs   )r{   rs   rq   ç      @)rr   rs   rq   r  r]   N)r   rO   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Ð+Ð+Ð+Ñ,Ô,ˆØˆ
ð;
ð 	0ð 	0Ñ6ˆJ˜
 H¨hõ 6AØ�A�3˜
ñ6$ô 6$Ñ2ˆJ˜ ¨(å˜J¨
Ñ3Ô3Ð3Ý˜F A¨
°ZÑ(?Ñ$?Ñ@Ô@Ð@Ý˜H hÑ/Ô/Ð/Ý˜H hÑ/Ô/Ð/Ð/ð	0ð 	0r)   c                 óÈ   — t          j        g d¢d¦  «        }t          j        dgd¦  «        }t          |ddd…         |ddd…         ¦  «        }t          |g d¢¦  «         dS )rä   )r   rW   r\   ra   r+   r]   N)r  éK   r  r	  )r   rå   r   r   )rS   rT   rÛ   Úresults       r'   ræ   z"TestPeakWidths.test_non_contiguousã  sl   € õ ŒI�l�l�l AÑ&Ô&ˆÝ”	˜1˜#˜qÑ!Ô!ˆÝ˜Q˜s˜s ˜sœV U¨3¨3¨Q¨3¤ZÑ0Ô0ˆÝ�VÐ2Ð2Ð2Ñ3Ô3Ð3Ð3Ð3r)   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î   rx   )r]   ra   r]   Nr   r[   rè   r   rï   rc   rg   r+   r   rò   ré   ró   r  )r   r+   r   r+   r   r:   ©r  ÚNone)r+   r   r+   )NNN©Úprominence_data)	r   r>   r   r   r   r|   r   rÕ   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 0rx   ©r   r+   r   r+   r   r  Nrø   r   r  r  )r   r   r   r   rO   rP   rÕ   )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+   ))©rq   )r:   ©r   )r   ©r   )r]   )r   r!  r"  )©rq   rq   ©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 shaperx   r  N)r   r   rO   rP   rÕ   r   r>   r   )	rS   rT   rê   r³   ÚprominencesÚ
left_basesÚright_basesr  ry   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   ri   r   )rÛ   r  ))r  ©rr   ©rs   r,  gUUUUUUå?))r  r   r+  )g      @N)r   r   )rS   rT   s     r'   Útest_intersection_rulesz&TestPeakWidths.test_intersection_rules6  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)  r-  r†   r)   r'   rü   rü   º  sÂ   € € € € € ð&ð &ð &ð „[×ÒÐ EÑFÔFð0ð 0ñ GÔFð0ð.4ð 4ð 4ðLð Lð Lð@ð ð ð"Fð Fð Fð2 „[×ÒÐ EÑFÔFð	6ð 	6ñ GÔFð	6ð 	6ð 	6r)   rü   c                  ót  — t          j        d¦  «        } | }|dz   }|ddd…         }t          dt          d| |¦  «        k    ¦  «         t          dt          d| |¦  «        k    ¦  «         t          dt          d| |¦  «        k    ¦  «         t          dt          d| |¦  «        k    ¦  «         t          dt          d| |¦  «        k    ¦  «         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   )rr   r
  zarray size of lowerrx   rg   zarray size of upper)r   r   r   r   r   r   r>   )rT   Ú	amin_trueÚ	amax_truerÛ   Ú	amin_calcÚ	amax_calcs         r'   Útest_unpack_condition_argsr6  C  sX  € õ 	Œ	�"‰Œ€AØ€IØ˜B‘€IØ�a�d˜�dŒO€Eõ ˆLÕ2°<ÀÀEÑJÔJÒJÑKÔKÐKÝˆIÕ/°°1°eÑ<Ô<Ò<Ñ=Ô=Ð=ÝˆIÕ/°	¸1¸eÑDÔDÒDÑEÔEÐEÝˆIÕ/°	¸1¸eÑDÔDÒDÑEÔEÐEÝˆIÕ/°	¸1¸eÑDÔDÒDÑEÔEÐEõ 2°9¸iÐ2HÈ!ÈUÑSÔSÑ€IˆyÝ�˜I eÔ,Ñ-Ô-Ð-Ý�˜I eÔ,Ñ-Ô-Ð-õ 
•
Ð"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$   Ä)$EÅEÅ EÅ:&F-Æ-F1Æ4F1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¦  «        ||||¬¦  «        \  }}t          |j        dk    ¦  «         | j        D ] }t          ||         j        dk    ¦  «         Œ!dS )z@
        Test behavior for signal without local maxima.
        r0  r[   ©r  Ú	thresholdr  Úwidthr   N)r   r   r|   r   rÖ   Úproperty_keys)rS   Úopen_intervalrÛ   ÚpropsÚkeys        r'   Útest_constantzTestFindPeaks.test_constantf  s†   € ð %ˆÝ!¥"¤'¨"¡+¤+Ø)6À-Ø-:À-ðQñ Qô Q‰ˆˆuõ 	�”
˜a’Ñ Ô Ð ØÔ%ð 	*ð 	*ˆCÝ�E˜#”J”O qÒ(Ñ)Ô)Ð)Ð)ð	*ð 	*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¢¦  «         t          |d	         |¦  «         t          |d
         ||dz
  dz  z
  ¦  «         t          |d         ||dz  z   ¦  «         t          t          |d¬¦  «        d         g d¢¦  «         t          t          |d¬¦  «        d         g d¢¦  «         t          t          |d¬¦  «        d         ddg¦  «         dS )z8
        Test plateau size condition for peaks.
        )r+   r   r]   ra   rc   rl   éo   r   r+   Nr   r0  )Úplateau_size)r+   r]   rf   rg   re   é!   rW   Úplateau_sizesrn   ro   ra   r   )rg   re   rK  rW   )Nr  )r+   r]   rf   )ri   r\   re   rK  )	r   rO   r   rÖ   r|   r/   rå   r   r   )rS   rL  rT   ÚrepeatsrÛ   rE  s         r'   Útest_plateau_sizezTestFindPeaks.test_plateau_sizer  s‰  € õ
 œÐ!9Ð!9Ð!9Ñ:Ô:ˆÝŒH�]Ô'¨!Ñ+¨aÑ/Ñ0Ô0ˆØˆˆ!ˆ$ˆQˆ$‰Ý”'˜!œ&­Ð,Ñ,Ô,ˆØ˜!˜$˜Q˜$œˆ���1�‰ÝŒI�a˜Ñ!Ô!ˆõ " !°,Ð?Ñ?Ô?‰ˆˆuÝ�UÐ6Ð6Ð6Ñ7Ô7Ð7Ý�U˜?Ô+¨]Ñ;Ô;Ð;Ý�U˜<Ô(¨%°=À1Ñ3DÈÑ2JÑ*JÑKÔKÐKÝ�U˜=Ô)¨5°=ÀAÑ3EÑ+EÑFÔFÐFõ 	•Z °Ð2Ñ2Ô2°1Ô5Ð7HÐ7HÐ7HÑIÔIÐIÝ•Z °Ð<Ñ<Ô<¸QÔ?ÀÀÀÑKÔKÐKÝ•Z °Ð8Ñ8Ô8¸Ô;¸bÀ"¸XÑFÔFÐFÐFÐFr)   c                 ó"  — d}t          |d¬¦  «        \  }}t          |t          j        g d¢¦  «        ¦  «         t          |d         t          j        g d¢¦  «        ¦  «         t          t          |d¬¦  «        d         t          j        d	d
g¦  «        ¦  «         t          t          |d¬¦  «        d         t          j        dd	g¦  «        ¦  «         t          t          |d¬¦  «        d         t          j        d	g¦  «        ¦  «         dS )z2
        Test height condition for peaks.
        )r  çUUUUUUÕ?r  r  r   r  r   r0  )r  rà   r;  )rP  r  r  r  r   r]   ri   )Nr]   r+   )r   r]   N©r   r   r   rO   ©rS   rT   rÛ   rE  s       r'   Útest_height_conditionz#TestFindPeaks.test_height_conditionŠ  sò   € ð )ˆÝ! !¨LÐ9Ñ9Ô9‰ˆˆuÝ�U�BœH Y Y YÑ/Ô/Ñ0Ô0Ð0Ý�U˜>Ô*­B¬H°^°^°^Ñ,DÔ,DÑEÔEÐEÝ•Z ¨#Ð.Ñ.Ô.¨qÔ1µ2´8¸QÀ¸FÑ3CÔ3CÑDÔDÐDÝ•Z ¨)Ð4Ñ4Ô4°QÔ7½¼À1ÀaÀ&Ñ9IÔ9IÑJÔJÐJÝ•Z ¨&Ð1Ñ1Ô1°!Ô4µb´hÀ¸s±m´mÑDÔDÐDÐDÐDr)   c                 óP  — d}t          |d¬¦  «        \  }}t          |t          j        ddg¦  «        ¦  «         t          |d         t          j        ddg¦  «        ¦  «         t          |d         t          j        dd	g¦  «        ¦  «         t          t          |d¬¦  «        d
         t          j        dg¦  «        ¦  «         t          t          |d¬¦  «        d
         t          j        g ¦  «        ¦  «         t          t          |d¬¦  «        d
         t          j        ddg¦  «        ¦  «         t          t          |d¬¦  «        d
         t          j        dg¦  «        ¦  «         t          t          |d¬¦  «        d
         t          j        g ¦  «        ¦  «         dS )z5
        Test threshold condition for peaks.
        )r   r   r+   ra   r:   r0  )rA  r+   r]   r=  r   r>  ri   r   r  )Nri   )Nra   )r   ra   NrQ  rR  s       r'   Útest_threshold_conditionz&TestFindPeaks.test_threshold_condition–  sg  € ð ˆÝ! !¨|Ð<Ñ<Ô<‰ˆˆuÝ�U�BœH a¨ VÑ,Ô,Ñ-Ô-Ð-Ý�UÐ,Ô-­r¬x¸¸A¸Ñ/?Ô/?Ñ@Ô@Ð@Ý�UÐ-Ô.µ´¸!¸Q¸Ñ0@Ô0@ÑAÔAÐAÝ•Z ¨QÐ/Ñ/Ô/°Ô2µB´H¸a¸S±M´MÑBÔBÐBÝ•Z ¨SÐ1Ñ1Ô1°!Ô4µb´h¸r±l´lÑCÔCÐCÝ•Z ¨YÐ7Ñ7Ô7¸Ô:½B¼HÀaÈÀVÑ<LÔ<LÑMÔMÐMÝ•Z ¨YÐ7Ñ7Ô7¸Ô:½B¼HÀaÀS¹M¼MÑJÔJÐJÝ•Z ¨VÐ4Ñ4Ô4°QÔ7½¼À"¹¼ÑFÔFÐFÐFÐFr)   c                 ó@  — t          j        ddd¦  «        }t          j        d¦  «        }||xx         t          j        dd|j        ¦  «        z  cc<   t          t          |d¬¦  «        d         |¦  «         t          |d¬¦  «        d         }t          t          j        ||d¬	¦  «        j        dk    ¦  «         t          t          j	        |¦  «        d
¦  «         g d¢}t          |d¬¦  «        d         }t          |j        dk    o|d         dk    ¦  «         dS )z4
        Test distance condition for peaks.
        r+   é   r]   r   ©Údistancer   g9ÖÅm4 @T)Úassume_uniquert   )éþÿÿÿr+   r:   r   éýÿÿÿr[   N)
r   r   r   r.   rÖ   r   r   r   Ú	setdiff1dr›   )rS   Ú	peaks_allrT   Úpeaks_subsets       r'   Útest_distance_conditionz%TestFindPeaks.test_distance_condition¥  s  € õ
 ”I˜a  QÑ'Ô'ˆ	ÝŒH�R‰LŒLˆØ	ˆ)ˆˆŒ�œ A q¨)¬.Ñ9Ô9Ñ9ˆˆ‰õ 	•Z ¨AÐ.Ñ.Ô.¨qÔ1°9Ñ=Ô=Ð=õ " !¨fÐ5Ñ5Ô5°aÔ8ˆåÝŒL˜ yÀÐEÑEÔEÔJÈaÒOñ	
ô 	
ð 	
õ 	•R”W˜\Ñ*Ô*¨AÑ.Ô.Ð.ð ÐÐˆÝ! !¨bÐ1Ñ1Ô1°!Ô4ˆÝ�Ô! QÒ&Ð?¨<¸¬?¸aÒ+?Ñ@Ô@Ð@Ð@Ð@r)   c                 ó,  — 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          |||         ¦  «         t          |d	         ||         ¦  «         t          |d
         d¦  «         t          |d         ||         dz   ¦  «         dS )z6
        Test prominence condition for peaks.
        r   r[   rW   r+   éc   r   )r]   rj   )r  r&  r'  r(  N)r   r.   r   rÖ   Únonzeror   r   )	rS   rT   Ú
peaks_trueÚoffsetr&  ÚintervalÚkeepÚ
peaks_calcÚ
propertiess	            r'   Útest_prominence_conditionz'TestFindPeaks.test_prominence_condition¿  s   € õ Œ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Ý�Z ¨DÔ!1Ñ2Ô2Ð2Ý�Z Ô.°¸DÔ0AÑBÔBÐBÝ�Z Ô-¨qÑ1Ô1Ð1Ý�Z Ô.°
¸4Ô0@À1Ñ0DÑEÔEÐEÐEÐEr)   c                 óV  — t          j        g d¢¦  «        }t          |dd¬¦  «        \  }}t          |j        d¦  «         t          |d¦  «         t          |d         d¦  «         t          |d	         d
¦  «         t          |d         d¦  «         t          |d         d¦  «         dS )z1
        Test width condition for peaks.
        )	r+   r   r+   r   r+   r   r:   ra   r   r1  r  )rB  r  r+   rf   r   gš™™™™™õ?r<  rq   r9  gš™™™™™@r:  g      @N)r   rO   r   r   rÖ   r   rR  s       r'   Útest_width_conditionz"TestFindPeaks.test_width_conditionÒ  s­   € õ ŒHÐ1Ð1Ð1Ñ2Ô2ˆÝ! !¨9ÀÐFÑFÔF‰ˆˆuÝ�U”Z Ñ#Ô#Ð#Ý�U˜AÑÔÐÝ˜˜hœ¨Ñ.Ô.Ð.Ý˜˜oÔ.°Ñ3Ô3Ð3Ý˜˜jÔ)¨3Ñ/Ô/Ð/Ý˜˜kÔ*¨DÑ1Ô1Ð1Ð1Ð1r)   c                 óþ   — d}g d¢}t          |||||¬¦  «        \  }}t          t          |¦  «        t          | j        ¦  «        k    ¦  «         | j        D ]%}t          |j        ||         j        k    ¦  «         Œ&dS )z+
        Test returned properties.
        r0  )
r   r+   r   r   r	  r   r]   r   ri   rj   r@  N)r   r   r-   rC  rÖ   )rS   rD  rT   rÛ   rE  rF  s         r'   Útest_propertieszTestFindPeaks.test_propertiesß  s›   € ð %ˆØ,Ð,Ð,ˆÝ! !Ø)6À-Ø-:À-ðQñ Qô Q‰ˆˆuõ 	•�E‘
”
�c $Ô"4Ñ5Ô5Ò5Ñ6Ô6Ð6ØÔ%ð 	3ð 	3ˆCÝ�E”J %¨¤*¤/Ò1Ñ2Ô2Ð2Ð2ð	3ð 	3r)   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î   rx   r+   Nr%  rY  r[   r:   rX  )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          |d         d¦  «         t          |d         d¦  «         t          |d         d	¦  «         d
D ]}t          ||         |¦  «         Œ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ø   r0  r   )r  rB  rë   r&  r   r   r<  r+   )r'  r(  r9  r:  N)r   r   )rS   rÛ   rE  rF  s       r'   Útest_wlen_smaller_plateauz'TestFindPeaks.test_wlen_smaller_plateau÷  s§   € õ " / / /¸lØ(4¸1ð>ñ >ô >‰ˆˆuå�U˜AÑÔÐÝ�U˜=Ô)¨1Ñ-Ô-Ð-Ý�U˜8”_ aÑ(Ô(Ð(Ý�U˜?Ô+¨QÑ/Ô/Ð/ØIð 	,ð 	,ˆCÝ˜˜sœ UÑ+Ô+Ð+Ð+ð	,ð 	,r)   ÚkwargsrY  rr   r  r0  rB  r1  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.   r;   ÚflagsÚ	writeabler   r   )rS   rs  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‚   rC  rG  rN  rS  rU  r`  rj  rl  rn  rp  rƒ   r„   r.  rr  r…   r{  r†   r)   r'   r8  r8  _  sG  € € € € € ð?ð ?ð ?€Mð
*ð 
*ð 
*ðGð Gð Gð0
Eð 
Eð 
EðGð Gð GðAð Að Að4Fð Fð Fð&2ð 2ð 2ð3ð 3ð 3ð	3ð 	3ð 	3ð „[×ÒÐ JØ EñGô Gð,ð ,ñGô Gð,ð  „[×Ò˜XØ
Ø	�SÐØ	�|Ð$Ø	�)Ðð	(ñ ô ð/ð /ñô ð/ð /ð /r)   r8  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          j                             ||d¦  «         dS )	zX
        Generate a series of gaussians and attempt to find the peak locations.
        ©rs   rr   r½   g      4@r½   g      I@r¾   rš   r   r   N)Ú
gap_threshÚmin_snrÚ
min_lengthz4Found maximum locations did not equal those expected)r2   r   r   r5   r   rœ   r   )rS   r    Ú
num_pointsrÂ   rÃ   r   Ú
found_locss          r'   Útest_find_peaks_exactz&TestFindPeaksCwt.test_find_peaks_exact   sŽ   € ð 4Ð3Ð3ˆØˆ
Ý1°&¸*ÑEÔEÑˆ	�8Ý”˜3¥ F¡¤Ñ,Ô,ˆÝ# I¨vÀ!ÈQØ48ð:ñ :ô :ˆ
å
Œ
×%Ò% j°(ØNñ	Pô 	Pð 	Pð 	Pð 	Pr)   c                 ób  — g d¢}d}t          ||¦  «        \  }}t          j        dt          |¦  «        ¦  «        }d}t          j                             d¦  «         |t          j                             |¦  «        dz
  d|z  z  z  }t          ||dd	|d
z  ¬¦  «        }t          j         	                    t          |¦  «        t          |¦  «        d¦  «         t          j        ||z
  ¦  «        }t          j        |¦  «        d
z  }	t          j                             ||	dd|	z  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   ru  r+   ri   )r‚  r€  r�  z,Different numberof peaks found than expectedzMaximum location differedzby more than %sN)r2   r   r   r5   ÚrandomÚseedÚrandr   rœ   r   r-   rž   rO   r�   )
rS   r    rƒ  rÂ   rÃ   r   Ú	noise_ampr„  ÚdiffsÚ	max_diffss
             r'   Útest_find_peaks_withnoisez*TestFindPeaksCwt.test_find_peaks_withnoise-  s?  € ð
 4Ð3Ð3ˆØˆ
Ý1°&¸*ÑEÔEÑˆ	�8Ý”˜3¥ F¡¤Ñ,Ô,ˆØˆ	Ý
Œ	�Š�xÑ Ô Ð Ø•b”i—n’n ZÑ0Ô0°3Ñ6¸¸9¹ÑEÑEˆ	Ý# I¨vÀ"Ø45¸yÈ1¹}ðNñ Nô Nˆ
õ 	Œ
×Ò¥ J¡¤µ°X±´ð A?ñ 	@ô 	@ð 	@å”�z HÑ,Ñ-Ô-ˆÝ”H˜VÑ$Ô$ qÑ(ˆ	Ý
Œ
×$Ò$ U¨IÐ7RØ%6¸)Ñ%Dñ8Eñ 	Fô 	Fð 	Fð 	Fð 	Fr)   c                 óF  — d}d}t           j                             d¦  «         t           j                             |¦  «        dz
  d|z  z  }t          j        dd¦  «        }t          ||dd	¬
¦  «        }t           j                             t          |¦  «        d¦  «         dS )zQ
        Verify that no peak is found in
        data that's just noise.
        rq   rW   iWÖ
r  r   r[   r\   ri   rª   )r�  Ú
noise_percr   N)	r   rˆ  r‰  rŠ  r   r   rœ   r   r-   )rS   r‹  rƒ  rÂ   r   r„  s         r'   Útest_find_peaks_nopeakz'TestFindPeaksCwt.test_find_peaks_nopeakC  sŽ   € ð
 ˆ	Øˆ
Ý
Œ	�Š�yÑ!Ô!Ð!Ý”Y—^’^ JÑ/Ô/°#Ñ5¸¸)¹ÑDˆ	Ý”˜2˜rÑ"Ô"ˆÝ# I¨v¸qÈRÐPÑPÔPˆ
Ý
Œ
×Ò¥ J¡¤°Ñ3Ô3Ð3Ð3Ð3r)   c                 óæ   — t          dd¦  «        }t          j        g d¢¦  «        }t          ||t           ¬¦  «        }t          j                             t          j        dg¦  «        |¦  «         d S )NéÈ   r   )r+   r   r]   ra   )ÚwaveletrW   )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_waveletsP  s`   € Ý�S˜!ÑÔˆÝ”˜,˜,˜,Ñ'Ô'ˆÝ˜1˜f­hÐ7Ñ7Ô7ˆå
Œ
×Ò¥¤¨#¨¡¤°Ñ3Ô3Ð3Ð3Ð3r)   c                 ó:  — ddg}d}t          ||¦  «        \  }}t          j        dt          |¦  «        d¦  «        }d}t          j                             d¦  «         |t          j                             |¦  «        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_sizerl   )r2   r   r   r5   rˆ  r‰  rŠ  r   rƒ   r   ÚAssertionErrorrÖ   )rS   r    rƒ  rÂ   rÃ   r   r‹  r„  s           r'   Útest_find_peaks_window_sizez,TestFindPeaksCwt.test_find_peaks_window_sizeW  s‚  € ð
 �s�ˆØˆ
Ý1°&¸*ÑEÔEÑˆ	�8Ý”˜3¥ F¡¤¨SÑ1Ô1ˆØˆ	Ý
Œ	�Š�xÑ Ô Ð Ø•b”i—n’n ZÑ0Ô0°3Ñ6¸¸9¹ÑEÑEˆ	ð 	�#�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-Ã0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œ   r   )rS   ÚxsrÂ   r   r„  s        r'   Útest_find_peaks_with_one_widthz/TestFindPeaksCwt.test_find_peaks_with_one_widthq  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}    st   € € € € € ðPð Pð PðFð Fð Fð,4ð 4ð 4ð4ð 4ð 4ð0ð 0ð 0ð4
0ð 
0ð 
0ð 
0ð 
0r)   r}  )$r;   Únumpyr   Únumpy.testingr   r   r   r   rƒ   r   r   Úscipy.signal._peak_findingr	   r
   r   r   r   r   r   r   Úscipy.signal.windowsr   Ú scipy.signal._peak_finding_utilsr   r   r(   r2   rK   rM   rˆ   r­   rÑ   rü   r6  r8  r}  r†   r)   r'   ú<module>r¨     s³  ðØ €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð *Ð )Ð )Ð )Ð )Ð )Ø 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ð@PNð PNð PNð PNð PNñ PNô PNð PNðfr;ð r;ð r;ð r;ð r;ñ r;ô r;ð r;ðjF6ð F6ð F6ð F6ð F6ñ F6ô F6ð F6ðRHð Hð Hð8|/ð |/ð |/ð |/ð |/ñ |/ô |/ð |/ð~]0ð ]0ð ]0ð ]0ð ]0ñ ]0ô ]0ð ]0ð ]0ð ]0r)   