Ë
    âQ(hìŒ  ã                   ó$  — 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!y)é    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|«      j                  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/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/signal/tests/test_peak_finding.pyÚ_gen_gaussiansr&      sy   € Ü�I‰I�a˜Ó&×-Ñ-¬eÓ4€EÜ�x‰x˜¬EÔ2€HÜ Ó'ò &‰
ˆˆUØ�{ 3Ñ'Ñ'¨5Ñ0ˆØ”B—F‘F˜S !™V˜9Ó%Ñ%‰ð&ð €Oó    c                 ó¦   — t        | «      }||dz   z  }t        j                  |||z
  |¬«      j                  t        «      }t        || |«      }||fS )Né   )Únum)Úlenr   Úlinspacer   Úintr&   )r   r   Ú	num_peaksÚdeltar   r!   s         r%   Ú_gen_gaussians_evenr0      sU   € Ü�F“€IØ˜I¨™MÑ*€EÜ—+‘+˜e \°EÑ%9¸yÔI×PÑPÔQTÓ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(  r't        |«      dkD  r|d|
z  |j                  «       z  z  }|
|	z  dk(  r!t        |«      dkD  r||j                  «       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                 ó6   — t        | d«      }t        ||«      }|S )Nr   )ÚmaxÚmin)r*   Úmax_valÚouts      r%   Úkeep_boundsz$_gen_ridge_line.<locals>.keep_bounds5   s   € Ü�#�q‹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‰8�V˜Q�K¤sÔ+€DØ€DˆŠAˆ�JØ˜A‘; ¨A¡Ñ.´°T³Ñ:€LØ�fÒÜÐNÓOÐOØœ˜I›Ñ&¨Ñ*€HØ”s˜4“yÑ  1Ñ$€GÜ�Q˜Óò 	*ˆØ�s˜Q‘w �zÑ"ˆØ�s˜Q‘w �zÑ" QÑ&ˆØ�(‰N˜aÒ¤c¨)£n°qÒ&8Ø˜˜c™	 9§=¡=£?Ñ2Ñ2ˆGØ�'‰M˜QÒ¤S¨£Y°¢]Ø�t—x‘x“zÑ!ˆGÙ˜g x°¡{Ó3ˆÙ˜g x°¡{Ó3ˆØ Ð)ˆˆS’!ˆVŠð	*ð ’�A�‰J˜šQ ˜T™
Ð#Ð#r'   c            	       óà   — e Zd Zd„ Zd„ Zd„ Zd„ Zej                  j                  d e
j                  g d¢«       e
j                  g d¢«       e
j                  g d¢«      g«      d	„ «       Zd
„ Zy)ÚTestLocalMaxima1dc                 óÌ   — t        j                  g t         j                  ¬«      }t        |«      D ]1  }t	        |t        j                  g «      d¬«       |j
                  €Œ1J ‚ y)zTest with empty signal.r   F©Úcheck_dtypeN)r   ÚarrayÚfloat64r   r   Úbase©ÚselfÚxrO   s      r%   Ú
test_emptyzTestLocalMaxima1d.test_emptyT   sN   € ä�H‰H�RœrŸz™zÔ*ˆÜ% aÓ(ò 	&ˆEÜ˜E¤2§8¡8¨B£<¸UÕCØ—:‘:Ñ%Ð%Ð%ñ	&r'   c                 óÊ   — t        j                  dd«      }t        |«      D ]?  }t        |t        j                  g t         j
                  ¬«      «       |j                  €Œ?J ‚ y)zTest with linear signal.r   éd   r   N)r   r,   r   r   rO   ÚintprQ   rR   s      r%   Útest_linearzTestLocalMaxima1d.test_linear[   sO   € ä�K‰K˜˜3ÓˆÜ% aÓ(ò 	&ˆEÜ˜E¤2§8¡8¨B´b·g±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 ‚ y)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   sq   € ä�K‰K˜˜R Ó$ˆØ	ˆ!ˆ$ˆQˆ$‹�1‰‹Ü—9‘9˜Q  A¬R¯W©WÔ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¬«       y)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   sh   € ä�H‰Hò /ó 0ˆä-=¸aÓ-@Ñ*ˆ	�:˜{Ü˜	¤2§8¡8Ò,=Ó#>ÈEÕRÜ˜
¤B§H¡HÒ->Ó$?ÈUÕSÜ˜¤R§X¡XÒ.?Ó%@ÈeÖTr'   rT   )ç      ð?r   r   )ç      @r^   r   rb   rb   )ç      @rj   rj   r   é   ru   ru   c                 óž   — t        |«      D ]?  }t        |t        j                  g t        j                  ¬«      «       |j
                  €Œ?J ‚ y)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   sA   € ô & aÓ(ò 	&ˆEÜ˜E¤2§8¡8¨B´b·g±gÔ#>Ô?Ø—:‘:Ñ%Ð%Ð%ñ	&r'   c                 óè  — t        t        d¬«      5  t        t        j                  d«      «       ddd«       t        t        d¬«      5  t        t        j                  dt
        ¬«      «       ddd«       t        t        d¬«      5  t        d	d
g«       ddd«       t        t        d¬«      5  t        d«       ddd«       y# 1 sw Y   Œ”xY w# 1 sw Y   ŒbxY w# 1 sw Y   ŒGxY w# 1 sw Y   yxY w)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ñ 	.ÜœRŸW™W V›_Ô-÷	.ä”JÐ&BÔCñ 	4ÜœRŸW™W Q¬cÔ2Ô3÷	4ä”I VÔ,ñ 	'Ü˜b "˜XÔ&÷	'ä”IÐ%;Ô<ñ 	#Ü˜TÔ"÷	#ð 	#÷	.ð 	.ú÷	4ð 	4ú÷	'ð 	'ú÷	#ð 	#ús/   ’CÁ
%CÂCÂ/C(ÃCÃCÃC%Ã(C1N)Ú__name__Ú
__module__Ú__qualname__rU   rY   r`   rq   ÚpytestÚmarkÚparametrizer   rO   rw   r€   © r'   r%   rK   rK   R   sr   „ ò&ò&ò	&òUð ‡[�[×Ñ˜SØˆ�‰’ÓØˆ�‰Ò!Ó"Øˆ�‰Ò'Ó(ð#ó ñ
&óð
&ó	#r'   rK   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestRidgeLinesc                 ó”   — t        j                  ddg«      }t        |t        j                  dd«      d«      }t	        |«      dk(  sJ ‚y )Nrm   rW   r   r)   r   ©r   r   r   Úfullr+   ©rS   Ú	test_matrÚliness      r%   rU   zTestRidgeLines.test_empty�   s<   € Ü—H‘H˜b #˜YÓ'ˆ	Ü% i´·±¸¸Q³ÀÓCˆÜ�5‹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 ‚y )Nrm   rW   r)   )r   r\   r   r   r\   r‹   r�   s      r%   Útest_minimalzTestRidgeLines.test_minimal”   s’   € Ü—H‘H˜b #˜YÓ'ˆ	Øˆ	�%ÑÜ% i´·±¸¸Q³ÀÓCˆÜ�5‹z˜QŠÐˆä—H‘H˜b #˜YÓ'ˆ	Øˆ	�!�A�#�r�'ÑÜ% i´·±¸¸Q³ÀÓCˆÜ�5‹z˜QŠÐ‰r'   c                 óv  — 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
¬«       Œ y )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Ë   € Ú ˆ	ÚˆÜ—H‘H˜b "˜XÓ&¨Ñ.ˆ	ØˆÜ  2˜w¨	¯©¸ÀÈDÓQˆØ&'ˆ	�$�q‘'˜4 ™7Ð"Ñ#ÜŸ™ ¤C¨	£NÓ3ˆÜ0°Ø1>Ü14°T³¸Q±ó@Ðô Ð#Ó$¨Ò)Ð)Ð)Ü Ð!1°!Ñ!4°dÓ;ò 	>‰MˆF�EÜ˜F E°uÖ=ñ	>r'   c                 ój  — 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                  j                  t        j                  |
«      |«       t        j                  |	d   «      }t         j                  j                  t        j                  |«      t        |«      dz   «       Œ¦ y )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®   s  € Ú ˆ	ÚˆÜ—H‘H˜b "˜XÓ&ˆ	ØˆÜ  2˜w¨	¯©¸ÀÈDÓQˆØ&'ˆ	�$�q‘'˜4 ™7Ð"Ñ#ØˆÜŸ™  HÓ-ˆä0°Ø1>Ü14°T³¸Q±ó@Ðô Ð#Ó$¨Ò)Ð)Ð)à%ò 	IˆEÜ—W‘W˜U 1™XÓ&ˆFÜ�J‰J×(Ñ(¬¯©°«¸ÔBä—G‘G˜E !™HÓ%ˆEÜ�J‰J×(Ñ(¬¯©°«¼¸D»	ÀC¹ÕHñ	Ir'   c                 óV  — 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                  j                  t        j                  |«      |«       t        j                  |
d   «      }t         j                  j                  t        j                  |«      t        |«      dz   «       Œ¦ y )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Ä   s  € Ú ˆ	ØˆÚˆÜ—H‘H˜b "˜XÓ&ˆ	ØˆÜ  2˜w¨	¯©¸ÀÈDÓQˆØ&'ˆ	�$�q‘'˜4 ™7Ð"Ñ#ØˆÜŸ™  HÓ-ˆä0°¸MÈ7ÓSÐÜÐ#Ó$¨Ò)Ð)Ð)à%ò 	IˆEÜ—W‘W˜U 1™XÓ&ˆFÜ�J‰J×(Ñ(¬¯©°«¸ÔBä—G‘G˜E !™HÓ%ˆEÜ�J‰J×(Ñ(¬¯©°«¼¸D»	ÀC¹ÕHñ	Ir'   c                 óT  — 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                  j                  t        j                  |«      |«       t        j                  |
d   «      }t         j                  j                  t        j                  |«      t        |«      dz   «       Œ¦ y )	Nr   r)   r^   ru   r]   é   r”   rž   r©   rª   s                r%   Útest_single_biggapsz"TestRidgeLines.test_single_biggapsÙ   s  € Ø�Cˆ	ØˆØ�1ˆvˆÜ—H‘H˜b "˜XÓ&ˆ	ØˆÜ  2˜w¨	¯©¸ÀÈDÓQˆØ&'ˆ	�$�q‘'˜4 ™7Ð"Ñ#ØˆÜŸ™  HÓ-ˆä0°¸MÈ7ÓSÐÜÐ#Ó$¨Ò)Ð)Ð)à%ò 	IˆEÜ—W‘W˜U 1™XÓ&ˆFÜ�J‰J×(Ñ(¬¯©°«¸ÔBä—G‘G˜E !™HÓ%ˆEÜ�J‰J×(Ñ(¬¯©°«¼¸D»	ÀC¹ÕHñ	Ir'   N)	r�   r‚   rƒ   rU   r‘   rœ   r§   r¬   r¯   r‡   r'   r%   r‰   r‰   �   s#   „ òò
	ò>òIò,Ió*Ir'   r‰   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
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¬«       y )	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‘h˜r¬Ô-ˆä�X‰X�a‹[ˆä�b‹MˆÜœ˜A› Ô"Ü˜˜!™˜k°uÕ=ä�X‰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	¬
«       y )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‰H’oÚ%Ú%Ú%Ú%ð	'ó (ˆô ˜Q QÔ'‰ˆˆSÜ—
‘
˜3“ˆÜ˜˜E™
¢I¸5ÕAÜ˜˜E™
¢I¸5ÕAä˜Q QÔ'‰ˆˆSÜ—
‘
˜3“ˆÜ˜˜E™
¢I¸5ÕAÜ˜˜E™
¢I¸5ÕAä˜Q QÔ'‰ˆˆSÜ—
‘
˜3“ˆÜ˜˜E™
¢I¸5ÕAÜ˜˜E™
¢I¸5ÕAä˜Q QÔ'‰ˆˆSÜ—
‘
˜3“ˆÜ˜˜E™
¢I¸5ÕAÜ˜˜E™
¢I¸5ÖAr'   c                 óä   — d}g d¢}t        |d«      \  }}||   dz  |||z   <   ||   dz  |||z
  <   t        ||d¬«      d   }t        |«      t        |«      k(  sJ ‚||k(  j                  «       sJ ‚y )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ÀaÑHˆä�<Ó ¤C¨£MÒ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 ]A  }	||	k(  }
t        ||
   «      t        |«      k(  sJ ‚|||
   ||	z  z
  k(  j                  «       rŒAJ ‚ y )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‘I˜a¤ Y£Ó0°:Ñ=ˆ	Ü—i‘i ¨I°iÑ,@Ð AÓBˆÜ%.¨{ÀÈ!Ô%LÑ"ˆ�lä˜˜;×,Ñ,¨QÑ/Ó0ò 	LˆBØ  BÑ&ˆDä�| DÑ)Ó*¬c°(«mÒ;Ð;Ð;Ø ¨dÑ!3°jÀ±mÑ!CÑD×IÑIÕKÐKÐKñ		Lr'   N)r�   r‚   rƒ   rU   r¿   rÉ   rÓ   r‡   r'   r%   r±   r±   ï   s   „ ò=ò0Bò>	0óLr'   r±   c                   óh   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze	j                  j                  d„ «       Zy)	ÚTestPeakProminencesc                 óÄ  — t        g d¢g «      }t        |t        j                  t        j                  t        j                  g«      D ]'  \  }}|j
                  dk(  sJ ‚|j                  |k(  rŒ'J ‚ t        g g «      }t        |t        j                  t        j                  t        j                  g«      D ]'  \  }}|j
                  dk(  sJ ‚|j                  |k(  rŒ'J ‚ y)ú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¨"Ó-ˆÜ˜c¤B§J¡J´·±¼¿¹Ð#AÓBò 	&‰JˆC�Ø—8‘8˜q’=Ð �=Ø—9‘9 Ó%Ð%Ð%ð	&ô ˜r 2Ó&ˆÜ˜c¤B§J¡J´·±¼¿¹Ð#AÓBò 	&‰JˆC�Ø—8‘8˜q’=Ð �=Ø—9‘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¬«       y)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‰HÒ;Ó<ˆÜ—‘šÓ&ˆÜ—‘š,Ó'ˆÜ—‘š,Ó'ˆØ�%‘œ2Ÿ6™6 1 V¡9¨a°©iÐ"8¸qÔAÑAˆä˜q %Ó(ˆÜ˜˜A™ °5Õ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¬«       y)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™zª+Ó6ÀEÕJÜ˜¢	°uÕ=Ü˜¢	°uÕ=ò "ˆÜ—‘šÓ#ˆÜ 0°°EÓ :Ñˆˆv�vÜ˜œrŸz™zª+Ó6Ô7Ü˜ ¨¡	°uÕ=Ü˜ ¨¡	°uÖ=r'   c                 ó  — 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¬«       y)
ú:
        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  ss   € ô �I‰IÒ)¨1Ó-ˆÜ—	‘	š) QÓ'ˆÜ 0°±3°Q°3±¸¹sÀ¸s¹Ó DÑˆˆv�vÜ˜œrŸz™zª+Ó6Ô7Ü˜¢	°uÕ=Ü˜¢	°uÖ=r'   c                 óà   — g d¢}dg}t        ||«      }t        |g d¢«      D ]  \  }}||k(  rŒJ ‚ dD ]9  \  }}t        |||«      }t        |d|z
  d|z   d|z
  g«      D ]  \  }}||k(  rŒJ ‚ Œ; y)	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Ó0ò 	‰IˆD�#Ø˜3“;Ð�;ð	ð Tò 	#‰GˆD�!Ü$ Q¨¨dÓ3ˆEÜ  ¨¨a©°°Q±¸¸A¹Ð(>Ó?ò #‘	��cØ˜s“{Ð"�{ñ#ñ	#r'   c                 ó$  — t        t        d¬«      5  t        g d¢gddg«       ddd«       t        t        d¬«      5  t        g d¢ddgg«       ddd«       t        t        d¬«      5  t        ddg«       ddd«       t        t        d	¬«      5  t        g dg«       ddd«       d
D ]+  }t        t        d	¬«      5  t        g d¢|g«       ddd«       Œ- t        t        d¬«      5  t        g d¢ddg«       ddd«       t        t        d¬«      5  t        t	        j
                  d«      ddgd¬«       ddd«       y# 1 sw Y   �ŒxY w# 1 sw Y   ŒüxY w# 1 sw Y   ŒáxY w# 1 sw Y   ŒÆxY w# 1 sw Y   ŒÐxY w# 1 sw Y   Œ„xY w# 1 sw Y   yxY w)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’  so  € ô
 ”J kÔ2ñ 	5Üšl˜^¨a°¨VÔ4÷	5ô ”J kÔ2ñ 	5Üš\¨Q°¨F¨8Ô4÷	5ô ”J kÔ2ñ 	&Ü˜Q  Ô%÷	&ô ”JÐ&9Ô:ñ 	&Ü˜R ! Ô%÷	&ð %ò 	1ˆAÜœ
Ð*=Ô>ñ 1Ü ¢¨Q¨CÔ0÷1ð 1ð	1ô
 ”IÐ%9Ô:ñ 	7Üš\¨C°¨:Ô6÷	7ô ”J fÔ-ñ 	<ÜœRŸY™Y r›]¨Q°¨F¸Õ;÷	<ð 	<÷-	5ñ 	5ú÷	5ð 	5ú÷	&ð 	&ú÷	&ð 	&ú÷1ð 1ú÷	7ð 	7ú÷	<ð 	<úsR   ’D=½E
Á(EÂE"Â;E.Ã&E:Ä$FÄ=EÅ
EÅEÅ"E+Å.E7	Å:FÆFc                 óî   — d}dD ]+  }t        t        |¬«      5  t        g d¢|g«       ddd«       Œ- t        t        |¬«      5  t        g d¢dgd¬«       ddd«       y# 1 sw Y   ŒcxY w# 1 sw Y   yxY w)	ú>
        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ˆAÜÔ*°#Ô6ñ 2Ü ¢¨Q¨DÔ1÷2ð 2ð	2ô Ô&¨cÔ2ñ 	;Üš_¨q¨c¸Õ:÷	;ð 	;÷2ð 2ú÷	;ð 	;ús   ™AÁA+ÁA(	Á+A4N)r�   r‚   rƒ   rU   r¿   rå   ré   rñ   r€   r„   r…   Úthread_unsaferÿ   r‡   r'   r%   rÕ   rÕ   B  s>   „ ò&ò;ò">ò(	>ò#ò <ð< ‡[�[×Ññ	;ó ñ	;r'   rÕ   c                   óà   — e Zd Zd„ Zej
                  j                  d«      d„ «       Zd„ Zd„ Z	ej
                  j                  d„ «       Zd„ Zej
                  j                  d«      d„ «       Zy	)
ÚTestPeakWidthsc                 óx  — 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(  rŒ/J ‚ y)r×   r   r¼   N)r
   Ú
isinstancer   ÚndarrayrØ   )rS   Úwidthsr6   rÙ   s       r%   rU   zTestPeakWidths.test_empty¿  s±   € ô ˜R Ó$ QÑ'ˆÜ˜&¤"§*¡*Ô-Ð-Ð-Ø�{‰{˜aÒÐÐÜšY¨Ó+¨AÑ.ˆÜ˜&¤"§*¡*Ô-Ð-Ð-Ø�{‰{˜aÒÐÐÜ˜"˜bÓ!ˆØò 	!ˆCÜ˜c¤2§:¡:Ô.Ð.Ð.Ø—8‘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«      «       Œ¢ y)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‰HÒ+Ó,ˆØˆ
ð;
ò 	>Ñ6ˆJ˜
 H¨hô 6AØ�A�3˜
ó6$Ñ2ˆJ˜ ¨(ä˜J¬¯
©
°J°<Ó(@ÔAÜ˜F¤B§J¡J°°JÀÑ4KÑ0KÐ/LÓ$MÔNÜ˜H¤b§j¡j°(°Ó&<Ô=Ü˜H¤b§j¡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«      «       y)	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æ  si   € ô �I‰I’l AÓ&ˆÜ—	‘	˜1˜#˜qÓ!ˆÜ˜Q™s ˜s™V U©3¨Q¨3¡ZÓ0ˆÜ˜ÜŸ
™
 T F¨R¨D°4°&¸3¸%Ð#@ÓAõ	
r'   c                 óÞ  — t        t        d¬«      5  t        t        j                  d«      t        j
                  d«      «       ddd«       t        t        d¬«      5  t        ddg«       ddd«       t        t        d¬«      5  t        t        j                  d«      t        j
                  dt        j                  ¬	«      «       ddd«       t        t        d¬«      5  t        t        j                  d«      d«       ddd«       t        t        d
¬«      5  t        t        j                  d«      ddg«       ddd«       t        t        d
¬«      5  t        g ddg«       ddd«       t        t        d¬«      5  t        t        j                  d«      ddg«       ddd«       t        t        d¬«      5  t        g d¢ddgd¬«       ddd«       t        t        d¬«      5  t        g d¢dgd¬«       ddd«       y# 1 sw Y   �Œ¼xY w# 1 sw Y   �Œ¢xY w# 1 sw Y   �ŒSxY w# 1 sw Y   �Œ'xY w# 1 sw Y   ŒøxY w# 1 sw Y   ŒÜxY w# 1 sw Y   Œ­xY w# 1 sw Y   Œ�xY w# 1 sw Y   yxY w)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ñ 	6äœŸ™ Ó(¬"¯'©'°!«*Ô5÷	6ô ”J kÔ2ñ 	 ä˜˜A˜3Ô÷	 ô ”J kÔ2ñ 	GäœŸ	™	 "›¤r§w¡w¨v¼R¿W¹WÔ'EÔF÷	Gô ”J kÔ2ñ 	*äœŸ	™	 "› qÔ)÷	*ô ”JÐ&9Ô:ñ 	0äœŸ	™	 "›¨¨2 wÔ/÷	0ô ”JÐ&9Ô:ñ 	$ä˜˜Q ˜FÔ#÷	$ô ”IÐ%9Ô:ñ 	3äœŸ	™	 "›¨¨S zÔ2÷	3ô ”J lÔ3ñ 	@äš¨!¨Q¨¸BÕ?÷	@ô ”I VÔ,ñ 	Läš	 A 3Ð8JÕK÷	Lð 	L÷1	6ñ 	6ú÷	 ñ 	 ú÷	Gñ 	Gú÷	*ñ 	*ú÷	0ð 	0ú÷	$ð 	$ú÷	3ð 	3ú÷	@ð 	@ú÷	Lð 	Lúsl   ’3G?ÁHÂAHÃ! H&Ä"H3ÅH?Å="IÆ8IÇ$I#Ç?H	ÈHÈH#È&H0È3H<È?IÉIÉI É#I,c                 ó¼  — d}t        t        |¬«      5  t        g d¢dgd¬«       ddd«       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«       y# 1 sw Y   Œ¡xY w# 1 sw Y   yxY w)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  s®   € ð
 -ˆÜÔ&¨cÔ2ñ 	6äš	 A 3°1Õ5÷	6ô Ô&¨cÔ2ñ 	äÚ ! Ü!#§¡¨2¨$´·
±
Ó!;Ü!#§¡¨1¨#¬r¯w©wÓ!7Ü!#§¡¨1¨#¬r¯w©wÓ!7ð!9õ÷	ð 	÷	6ð 	6ú÷	ð 	ús   ”C¿A>CÃ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
«       Œ« y
# 1 sw Y   Œ¶xY w)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#  s¾   € âˆØˆsˆÜ9Bò D
ó :ò 	FÑ5ˆAÑ5�˜Z¨ô  "Ÿx™x¨¼2¿:¹:ÔFÜ!Ÿx™x¨
¼"¿'¹'ÔBÜ!Ÿx™x¨¼2¿7¹7ÔCðEˆOð �1ŠuØ=‘àN�Üœ
¨%Ô0ñ FÜ˜A˜t°_ÕE÷Fð Fñ%	F÷$Fð Fús   Â(CÃC	c                 óx   — g d¢}t        t        |dgd¬«      g d¢«       t        t        |dgd¬«      g d¢«       y)	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   r2  gUUUUUUå?))r  r&  r1  )g      @N)r   r
   )rS   rT   s     r%   Útest_intersection_rulesz&TestPeakWidths.test_intersection_rules<  s;   € ò .ˆäœ A¨a¨S¸QÔ?Ú4ô	6ô 	œ A¨a¨S¸SÔAÚ4õ	6r'   N)r�   r‚   rƒ   rU   r„   r…   Úfilterwarningsr¿   ré   r€   r   rÿ   r/  r3  r‡   r'   r%   r  r  ½  s�   „ ò!ð ‡[�[×ÑÐ EÓFñ>ó Gð>ò.	
òLð@ ‡[�[×Ññó ðò"Fð2 ‡[�[×ÑÐ EÓFñ	6ó Gñ	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«       t	        t
        d¬
«      5  t        d|ft        j                  d«      |«       ddd«       y# 1 sw Y   ŒFxY w# 1 sw Y   yxY w)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<  I  s]  € ô 	�	‰	�"‹€AØ€IØ˜B‘€IØ�a�d˜�d‰O€Eð Ô1°,ÀÀ5ÓIÒIÐIÐIØÔ.¨q°!°UÓ;Ò;Ð;Ð;ØÔ.¨y¸!¸UÓCÒCÐCÐCØÔ.¨y¸!¸UÓCÒCÐCÐCØÔ.¨y¸!¸UÓCÒCÐCÐCô 2°9¸iÐ2HÈ!ÈUÓSÑ€IˆyÜ�I˜y¨Ñ/Ô0Ü�I˜y¨Ñ/Ô0ô 
”
Ð"7Ô	8ñ @Ü˜y¬"¯)©)°B«-¸Ô?÷@ä	”
Ð"7Ô	8ñ HÜ  iÐ0´"·)±)¸B³-ÀÔG÷Hð H÷@ð @ú÷Hð Hús   Ã !D&Ã:#D2Ä&D/Ä2D;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                  j                  dd«      d„ «       Zej                  j#                  di ddiddiddig«      d„ «       Zy)Ú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(  rŒJ ‚ y)z@
        Test behavior for signal without local maxima.
        r6  r\   ©r  Ú	thresholdr  Úwidthr   N)r   r   r}   rØ   Úproperty_keys)rS   Úopen_intervalrÝ   ÚpropsÚkeys        r%   Útest_constantzTestFindPeaks.test_constantl  si   € ð %ˆÜ!¤"§'¡'¨"£+Ø)6À-Ø-:À-ôQ‰ˆˆuð �z‰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	¬
«       y)z8
        Test plateau size condition for peaks.
        )r)   r   r^   rb   rd   rm   éo   r   r)   Nr   r6  )Úplateau_size)r)   r^   rg   rh   rf   é!   rW   FrM   Úplateau_sizesro   rp   rb   r   )rh   rf   rQ  rW   )Nr  )r)   r^   rg   )rj   r]   rf   rQ  )	r   rO   r   rØ   r}   r-   rè   r   r   )rS   rR  rT   ÚrepeatsrÝ   rK  s         r%   Útest_plateau_sizezTestFindPeaks.test_plateau_sizex  sF  € ô
 Ÿ™Ò!9Ó:ˆÜ�H‰H�]×'Ñ'¨!Ñ+¨aÑ/Ó0ˆØˆˆ!ˆ$ˆQˆ$‰Ü—'‘'˜!Ÿ&™&¬Ô,ˆØ˜!˜$˜Q˜$™ˆ���1�‰Ü�I‰I�a˜Ó!ˆô " !°,Ô?‰ˆˆuÜ˜Ò9ÀuÕMÜ˜˜oÑ.°È5ÕQÜ˜˜lÑ+¨U°mÀaÑ6GÈAÑ5MÑ-MØ$)õ	+ä˜˜mÑ,¨e°mÀqÑ6HÑ.HØ$)õ	+ô 	œ
 1°1Ô5°aÑ8Ò:KØ$)õ	+äœ
 1°;Ô?ÀÑBÂIØ$)õ	+äœ
 1°7Ô;¸AÑ>ÀÀRÀØ$)ö	+r'   c                 óÞ  — 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¬«       y)z2
        Test height condition for peaks.
        )r	  çUUUUUUÕ?r	  r
  r   r  r   r6  )r  râ   FrM   rA  )rV  r
  r  r  r   r^   rj   )Nr^   r)   )r   r^   N)r   r   r   rO   ©rS   rT   rÝ   rK  s       r%   Útest_height_conditionz#TestFindPeaks.test_height_condition•  sÀ   € ð )ˆÜ! !¨LÔ9‰ˆˆuÜ˜œrŸx™xª	Ó2ÀÕFÜ˜˜nÑ-¬r¯x©xºÓ/GØ$)õ	+äœ
 1¨SÔ1°!Ñ4´b·h±hÀÀ1¸vÓ6FØ$)õ	+äœ
 1¨YÔ7¸Ñ:¼B¿H¹HÀaÈÀVÓ<LØ$)õ	+äœ
 1¨VÔ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¬«       y)z5
        Test threshold condition for peaks.
        )r   r   r)   rb   r8   r6  )rG  r)   r^   FrM   rC  r|   rs   rD  rr   rt   r   r   r  r   )Nrj   )Nrb   )r   rb   N)r   r   r   rO   r-   rW  s       r%   Útest_threshold_conditionz&TestFindPeaks.test_threshold_condition¥  s*  € ð ˆÜ! !¨|Ô<‰ˆˆuÜ˜œrŸx™x¨¨A¨Ó/¸UÕCÜ˜Ð/Ñ0´"·(±(¸CÀ¸:Ó2FÔGÜ˜Ð0Ñ1´2·8±8¸SÀ#¸JÓ3GÔHÜœ
 1°Ô2°1Ñ5´r·x±xÀÀ³}Ø$)õ	+äœ
 1°Ô4°QÑ7¼¿¹À"ÌCÔ9PØ$)õ	+äœ
 1°	Ô:¸1Ñ=¼r¿x¹xÈÈAÈÓ?OØ$)õ	+äœ
 1°	Ô:¸1Ñ=¼r¿x¹xÈÈ»}Ø$)õ	+äœ
 1°Ô7¸Ñ:¼B¿H¹HÀRÌsÔ<SØ$)ö	+r'   c                 ó"  — 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 ‚y)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‘I˜a  QÓ'ˆ	Ü�H‰H�R‹LˆØ	ˆ)‹œŸ™ A q¨)¯.©.Ó9Ñ9‹ô 	œ
 1¨qÔ1°!Ñ4°iÈUÕSô " !¨fÔ5°aÑ8ˆä�|‰|˜L¨)À4ÔH×MÑMÐQRÒRÐRÐRô �g‰g�lÓ#ˆÜ˜˜QœrŸ|™|¨CÓ0Ñ0Ô1ò ˆÜ! !¨bÔ1°!Ñ4ˆØ× Ñ  AÒ%¨,°q©/¸QÒ*>Ð>Ð>Ð*>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        |||   d	¬
«       t        |d   ||   d	¬
«       t        |d   t        j                  |d   «      «       t        |d   ||   dz   d	¬
«       y)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Ó  s  € ô �K‰K˜˜2˜sÓ#ˆÜ—Y‘Y˜q " aÓ(ˆ
Ü—‘˜Q  J§O¡OÓ4ˆØ	ˆ*‹˜Ñ‹Ø˜
‘m a¨
°Q©Ñ&7Ñ7ˆØˆÜ�z‰zØ�a‰[˜KÑ'¨K¸8ÀA¹;Ñ,FÑGóIˆô ",¨A¸(Ô!CÑˆ
�JÜ˜
 J¨tÑ$4À%ÕHÜ˜
 =Ñ1°;¸tÑ3DÐRWÕXÜ˜
 <Ñ0ÜŸ™ j°Ñ&>Ó?ô	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«      «       y)z1
        Test width condition for peaks.
        )	r)   r   r)   r   r)   r   r8   rb   r   r7  r  )rH  r  r)   rg   r  gš™™™™™õ?rB  rr   r?  gš™™™™™@r@  g      @N)r   rO   r   rØ   r   rc  r   rã   rW  s       r%   Útest_width_conditionz"TestFindPeaks.test_width_conditionè  s´   € ô �H‰HÒ1Ó2ˆÜ! !¨9ÀÔF‰ˆˆuØ�z‰z˜QŠÐˆÜ˜˜q¤§¡¨eÓ!4Ñ4Ô5Ü˜˜h™¬¯©°T°FÓ);Ô<Ü˜˜oÑ.´·
±
¸B¸4Ó0@ÔAÜ˜˜jÑ)¬2¯:©:°s°eÓ+<Ô=Ü˜˜kÑ*¬B¯J©J¸°vÓ,>Õ?r'   c                 óÚ   — d}g d¢}t        |||||¬«      \  }}t        |«      t        | j                  «      k(  sJ ‚| j                  D ]   }|j                  ||   j                  k(  rŒ J ‚ y)z+
        Test returned properties.
        r6  )
r   r)   r   r   r  r   r^   r   rj   rk   rF  N)r   r+   rI  rØ   )rS   rJ  rT   rÝ   rK  rL  s         r%   Útest_propertieszTestFindPeaks.test_propertiesõ  sw   € ð %ˆÚ,ˆÜ! !Ø)6À-Ø-:À-ôQ‰ˆˆuô �5‹zœS ×!3Ñ!3Ó4Ò4Ð4Ð4Ø×%Ñ%ò 	1ˆCØ—:‘:  s¡§¡Ó0Ð0Ð0ñ	1r'   c                 ó   — t        t        d¬«      5  t        t        j                  d«      «       ddd«       t        t        d¬«      5  t        t        j
                  d«      «       ddd«       t        t        d¬«      5  t        t        j                  d«      d¬	«       ddd«       y# 1 sw Y   Œ|xY w# 1 sw Y   ŒPxY w# 1 sw Y   yxY w)
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ñ 	$Ü”r—x‘x “{Ô#÷	$ä”J kÔ2ñ 	(Ü”r—w‘w˜v“Ô'÷	(ä”J jÔ1ñ 	3Ü”r—y‘y “}¨rÕ2÷	3ð 	3÷		$ð 	$ú÷	(ð 	(ú÷	3ð 	3ús#   ’B,Á
B8Â!CÂ,B5Â8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	¬
«       Œ y)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ý   r6  r   )r  rH  rð   r,  r  rB  )r-  r.  r?  r@  FrM   N)r   r   r   rc  rk  )rS   rÝ   rK  rL  s       r%   Útest_wlen_smaller_plateauz'TestFindPeaks.test_wlen_smaller_plateau  s©   € ô "¢/¸lØ(4¸1ô>‰ˆˆuä˜˜q¤2§<¡<°Ó#6Ñ6Ô7Ü˜˜mÑ,¬b¯m©m¸EÀ-Ñ<PÓ.QÔRÜ˜˜h™¬¯©°u¸X±Ó)GÔHÜ˜˜oÑ.´·±¸UÀ?Ñ=SÓ0TÔUØIò 	BˆCÜ˜E #™J¨¸5ÖAñ	Br'   Úkwargsr^  rs   r  r6  rH  r7  c                 óÆ   — t        j                  ddd«      }|j                  «       }d|j                  _        t        |«      \  }}t        |fi |¤Ž\  }}t        ||«       y)z4
        Test readonly arrays are accepted.
        r   r\   é   FN)r   r,   r9   ÚflagsÚ	writeabler   r   )rS   r{  rT   Ú
x_readonlyrÝ   Ú_Úpeaks_readonlys          r%   Útest_readonly_arrayz!TestFindPeaks.test_readonly_array  sZ   € ô �K‰K˜˜2˜rÓ"ˆØ—V‘V“Xˆ
Ø%*ˆ
×ÑÔ"ä˜a“=‰ˆˆqÜ& zÑ<°VÑ<Ñˆ˜ä˜˜~Õ.r'   N)r�   r‚   rƒ   rI  rM  rT  rX  rZ  rg  rr  rt  rv  rx  r„   r…   r4  rz  r†   rƒ  r‡   r'   r%   r>  r>  e  s©   „ ò?€Mò
(ò+ò:+ò +ò(?ò4+ò*@ò1ò	3ð ‡[�[×ÑÐ JØ EóGñBóGðBð  ‡[�[×Ñ˜XØ
Ø	�SÐØ	�|Ð$Ø	�)Ðð	(ó ñ/óñ/r'   r>  c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestFindPeaksCwtc                 óª   — g d¢}d}t        ||«      \  }}t        j                  dt        |«      «      }t	        ||ddd¬«      }t        ||dd	¬
«       y)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_exact6  sZ   € ò 4ˆØˆ
Ü1°&¸*ÓEÑˆ	�8Ü—‘˜3¤ F£Ó,ˆÜ# I¨vÀ!ÈQØ48ô:ˆ
ä˜
 HØ$)Ø Vö	
r'   c                 ó  — g d¢}d}t        ||«      \  }}t        j                  dt        |«      «      }d}t        j                  j                  d«       |t        j                  j                  |«      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                  j                  |	|
dd|
› �z   «       y)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ÚseedÚrandr   r+   r¢   rO   r    r¡   )rS   r   rŒ  rÆ   rÇ   r  Ú	noise_ampr�  r‹  ÚdiffsÚ	max_diffss              r%   Útest_find_peaks_withnoisez*TestFindPeaksCwt.test_find_peaks_withnoiseE  sú   € ò
 4ˆØˆ
Ü1°&¸*ÓEÑˆ	�8Ü—‘˜3¤ F£Ó,ˆØˆ	Ü
�	‰	�‰�xÔ Ø”b—i‘i—n‘n ZÓ0°3Ñ6¸¸9¹ÑEÑEˆ	Ü# I¨vÀ"Ø45¸yÈ1¹}ôNˆ
ð AˆÜ�:‹¤# h£-Ò/Ð8°Ó8Ð/Ü—‘�z HÑ,Ó-ˆÜ—H‘H˜VÓ$ qÑ(ˆ	Ü
�
‰
×$Ñ$ U¨IÐ7RØ'4°Y°KÐ%@ñ8Aõ 	Br'   c                 óè   — d}d}t         j                  j                  d«      }|j                  |«      dz
  d|z  z  }t        j                  dd«      }t        ||dd	¬
«      }t        |«      dk(  sJ ‚y)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‘  ÚRandomStater“  r   r   r+   )rS   r”  rŒ  ÚrngrÆ   r  r�  s          r%   Útest_find_peaks_nopeakz'TestFindPeaksCwt.test_find_peaks_nopeak[  sp   € ð
 ˆ	Øˆ
Ü�i‰i×#Ñ# IÓ.ˆØ—X‘X˜jÓ)¨CÑ/°!°I±+Ñ>ˆ	Ü—‘˜2˜rÓ"ˆÜ# I¨v¸qÈRÔPˆ
Ü�:‹ !Ò#Ð#Ñ#r'   c                 ó²   — t        dd«      }t        j                  g d¢«      }t        ||t         ¬«      }t	        |t        j
                  dg«      d¬«       y )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_waveletsh  sA   € Ü�S˜!ÓˆÜ—‘š,Ó'ˆÜ˜1˜f¬hÔ7ˆä˜œ2Ÿ:™: s eÓ,¸%Ö@r'   c                 ó  — ddg}d}t        ||«      \  }}t        j                  dt        |«      d«      }d}t        j                  j                  d«      }||j                  |«      dz
  d|z  z  z  }|d	d
xxx dz  ccc t        ||dddd¬«      }t        j                  t        «      5  |j                  |j                  k(  sJ ‚	 ddd«       t        ||dddd¬«      }|j                  |j                  k(  sJ ‚y# 1 sw Y   Œ6xY w)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_sizeo  s  € ð
 �s�ˆØˆ
Ü1°&¸*ÓEÑˆ	�8Ü—‘˜3¤ F£¨SÓ1ˆØˆ	Ü�i‰i×#Ñ# HÓ-ˆØ�c—h‘h˜zÓ*¨SÑ0°1°Y±;Ñ?Ñ?ˆ	ð 	�#�cÓ˜aÑÓä# I¨vÀ!ÈQØ/3ÀôGˆ
ä�]‰]œ>Ó*ñ 	4Ø—?‘? h§m¡mÒ3Ð3Ñ3÷	4ô $ I¨vÀ!ÈQØ/3ÀôEˆ
à�‰ (§-¡-Ò/Ð/Ñ/÷	4ð 	4ús   Â,C>Ã>Dc                 óÔ   — t        j                  dt         j                  d«      }t        j                  |«      }d}t	        ||«      }t         j
                  j                  |d«       y)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‰  sL   € ô
 �Y‰Y�qœ"Ÿ%™% Ó&ˆÜ—F‘F˜2“Jˆ	ØˆÜ# I¨vÓ6ˆ
ä
�
‰
×Ñ 
¨BÕ/r'   N)	r�   r‚   rƒ   rŽ  r—  rœ  r¡  r§  r®  r‡   r'   r%   r…  r…  4  s"   „ ò
òBò,$òAò0ó4
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÷	÷ 	ó 	õ *ß Ròò!ò($÷V8#ñ 8#÷v_Iñ _I÷DPLñ PL÷fx;ñ x;÷vI6ñ I6òXH÷8L/ñ L/÷^_0ò _0r'   