o
    Ö­jÉ  ã                   @   sJ   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	 G dd„ dƒZ
dS )é    N)Úassert_allcloseÚassert_equal)Úpava)Úisotonic_regressionc                   @   s  e Zd Zej dddggddfddgddggdfddgdgdfdddgdfddgddfddgddgdfg¡d	d
„ ƒZdd„ Zej dej	ej
ejejg¡ej dej	ej
ejejg¡ej dddg¡dd„ ƒƒƒZej dddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚTestIsotonicRegression)ÚyÚwÚmsgr   é   Nz7array has incorrect number of dimensions: 2; expected 1é   z<Input arrays y and w must have one dimension of equal lengthz#Weights w must be strictly positivec                 C   s@   t jt|d�� t||d� W d   ƒ d S 1 sw   Y  d S )N)Úmatch)r   Úweights)ÚpytestÚraisesÚ
ValueErrorr   )Úselfr   r   r	   © r   új/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_isotonic_regression.pyÚtest_raise_error
   s   "ÿz'TestIsotonicRegression.test_raise_errorc                 C   st   t jg d¢t jd�}t  |¡}t j|jd d dt jd�}t|||ƒ t|g d¢ƒ t|g d¢ƒ t|g d	¢ƒ d S )
N©é   é   r   r   r   r   r   ©Údtyper   r
   éÿÿÿÿ)ÚshapeÚ
fill_valuer   ©r   r   r   r   r   r   r   )é   r
   r
   r
   r
   r
   r
   )r   r   é   r   r   r   r   r   )	ÚnpÚarrayÚfloat64Ú	ones_likeÚfullr   Úintpr   r   )r   r   r   Úrr   r   r   Útest_simple_pava   s   
z'TestIsotonicRegression.test_simple_pavaÚy_dtypeÚw_dtyper   Úonesc                 C   s¦   t jg d¢|d�}|d urt j||d�}t||d�}|jjt jks#J ‚|jjt jks,J ‚t|jg d¢ƒ t|jddgƒ t|j	g d¢ƒ t
|t jg d¢t jd�ƒ d S )Nr   r   ©r   r   r   r
   )r   r   r   )r    r!   r#   r   Úxr   r"   r   r   Úblocksr   )r   r   r)   r(   r   Úresr   r   r   Útest_simple_isotonic_regression,   s   z6TestIsotonicRegression.test_simple_isotonic_regressionÚ
increasingTFc                 C   sV   d}|rt  dd|¡nt  dd|¡}t||d�}t|j|ƒ t|jt  |d ¡ƒ d S )Né
   r   r
   ©r0   )r    Úlinspacer   r   r,   r-   Úarange)r   r0   Únr   r.   r   r   r   Útest_linspace>   s
    z$TestIsotonicRegression.test_linspacec                 C   sä   t  g d¢¡}t  g d¢¡}t||d�}t|jg d¢ƒ t|jg d¢ƒ t|jg d¢ƒ t  g d¢¡}t  g d¢¡}t||d�}tt  |jd	d
… ¡d	ƒ t|jdd … |jƒ t|j|jƒ t|jdd … d |jdd … ƒ d S )N)r
   r   é   ç      à?r8   r8   r
   é   )r9   r   r
   r1   é	   r   é   r1   r+   )ç      ø?r<   r<   r:   r:   r:   ç      )@r=   )r   r<   r   )r   r9   r   r   )r
   r   r
   r
   r
   r
   r
   r8   r8   r8   r
   r9   )r9   r   r
   r
   r
   r
   r
   r1   r:   r   r;   r1   r   r   r   r
   )r    r!   r   r   r,   r   r-   Údiff)r   r   r   r.   Úw2Úy2Úres2r   r   r   Útest_weightsF   s   &z#TestIsotonicRegression.test_weightsc                 C   sÞ   g d¢}t |ƒ}g d¢}t|j|ƒ t|jg d¢ƒ d}tjdd|dd�}d	| t d
| ¡ }t |ƒ}g d¢}t|j|ƒ t t 	|j¡dk¡sKJ ‚tt 
|j¡t 
|¡ƒ t | dd�}t|j |jƒ t|j|jƒ d S )N)
r   r   r   r9   r7   r   r
   r   r:   r   )
r   ç8Tç¬ªª@rC   rC   rC   rC   rC   ç8Tç¬ªª@rD   rD   )r   r
   r   r1   éd   r   r
   F)ÚnumÚendpointr7   r1   )dg        gø¸_Ó½-Ã?gOÄ*÷eÓ?g%ê2gƒÜ?g±Í¾ÙƒÜâ?g6Yå:tWç?gÃ>l¯&«ë?góô�¡Ðï?g:•ˆÇ°àñ?gµ {ÿ´»ó?g!:Fªvõ?g Eßr/÷?gÊå»k;ƒø?ç$'·
"ù?rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   rH   gV± ¿©üù?gQk?øvû?g’0¡¼ný?gô<òæôÕþ?g¬ å«[ @g¶�7à�Y@gõ[Çúþd@g“2-Ú±{@g+¾�æ›@g>	lÎÁÃ@goð…ÉTñ@gZ¥O¢"@gN%¨†¢U	@g†™lòJˆ
@gt NÔ�¸@g—ÏêËoä@gDN>Áî	@gViæ$'@g£lüO@g¤cÁ @g–]ª@gÇ¾àª“@g®{ur @g´fu¼e@gŸþƒÀ@g£k²ˆY@g·•ÁÅHZ@çˆDF¬jv@rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   r2   )r   r   r,   r   r-   r    r3   ÚsinÚallr>   Úsum)r   r   r.   Úx_Rr5   Úres_invr   r   r   Útest_against_R_monotoneX   s    z.TestIsotonicRegression.test_against_R_monotonec                 C   s~   t jdtd�}t jdtd�}d|j_d|j_t||d�}t  t  |j	¡¡s'J ‚t  t  |j
¡¡s2J ‚t  t  |j¡¡s=J ‚d S )Nr9   r   Fr+   )r    r4   Úfloatr*   ÚflagsÚ	writeabler   rK   Úisfiniter,   r   r-   ©r   r,   r   r.   r   r   r   Útest_readonly�   s   z$TestIsotonicRegression.test_readonlyc                 C   s²   t jdtd�d d d… }t jdtd�d d d… }|jjrJ ‚|jjr$J ‚|jjr*J ‚|jjr0J ‚t||d�}t  t  	|j
¡¡sAJ ‚t  t  	|j¡¡sLJ ‚t  t  	|j¡¡sWJ ‚d S )Nr1   r   r9   r+   )r    r4   rP   r*   rQ   Úc_contiguousÚf_contiguousr   rK   rS   r,   r   r-   rT   r   r   r   Útest_non_contiguous_arraysœ   s   z1TestIsotonicRegression.test_non_contiguous_arrays)Ú__name__Ú
__module__Ú__qualname__r   ÚmarkÚparametrizer   r'   r    r"   Úfloat32Úint64Úint32r/   r6   rB   rO   rU   rX   r   r   r   r   r   	   sF    
ÿÿ
ÿÿÿÿõþ

8r   )Únumpyr    Únumpy.testingr   r   r   Úscipy.optimize._pava_pybindr   Úscipy.optimizer   r   r   r   r   r   Ú<module>   s    