Ë
    æÿæiN"  ã                   ó,  — d Z ddlZddlmZ g d¢Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ de«      Z e«       Zd„ Z G d„ de«      Z e«       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ de«      Z e«       Z G d„ d e«      Z  e «       Z!y)!zI Collection of Model instances for use with the odrpack fitting package.
é    N)ÚModel)r   ÚexponentialÚmultilinearÚ	unilinearÚ	quadraticÚ
polynomialc                 ó†   — | d   | dd  }}|j                  |j                  d   df«      }|||z  j                  d¬«      z   S ©Nr   é   ©Úaxis)ÚreshapeÚshapeÚsum)ÚBÚxÚaÚbs       úf/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/odr/_models.pyÚ_lin_fcnr   
   sI   € ØˆQ‰4��1�2�€q€AØ	�	‰	�1—7‘7˜1‘:˜q�/Ó"€Aà��!‘�y‰y˜aˆyÓ Ñ Ð ó    c                 óô   — t        j                  |j                  d   t        «      }t        j                  ||j                  «       f«      }|j                  | j                  d   |j                  d   f«      S ©Néÿÿÿÿ)ÚnpÚonesr   ÚfloatÚconcatenateÚravelr   )r   r   r   Úress       r   Ú_lin_fjbr!      sV   € Ü
�‰�—‘˜‘œUÓ#€AÜ
�.‰.˜!˜QŸW™W›Y˜Ó
(€CØ�;‰;˜Ÿ™ ™ Q§W¡W¨R¡[Ð1Ó2Ð2r   c                 ó®   — | dd  }t        j                  ||j                  d   f|j                  d   z  d¬«      }|j                  |j                  «      S )Nr   r   r   r   )r   Úrepeatr   r   )r   r   r   s      r   Ú_lin_fjdr$      sI   € Ø	ˆ!ˆ"ˆ€AÜ
�	‰	�!�a—g‘g˜b‘k�^ A§G¡G¨B¡KÑ/°aÔ8€AØ�9‰9�Q—W‘WÓÐr   c                 óº   — t        | j                  j                  «      dk(  r| j                  j                  d   }nd}t        j                  |dz   ft
        «      S ©Né   r   r   )Úlenr   r   r   r   r   )ÚdataÚms     r   Ú_lin_estr+      sF   € ô
 ˆ4�6‰6�<‰<Ó˜AÒØ�F‰F�L‰L˜‰O‰àˆä�7‰7�A˜‘E�8œUÓ#Ð#r   c                 ó¸   — | d   | dd  }}|j                  |j                  d   df«      }|t        j                  |t        j                  ||«      z  d¬«      z   S r
   ©r   r   r   r   Úpower)r   r   Úpowersr   r   s        r   Ú	_poly_fcnr0   *   sU   € ØˆQ‰4��1�2�€q€AØ	�	‰	�1—7‘7˜1‘:˜q�/Ó"€AàŒr�v‰v�aœ"Ÿ(™( 1 fÓ-Ñ-°AÔ6Ñ6Ð6r   c                 ó  — t        j                  t        j                  |j                  d   t        «      t        j
                  ||«      j                  f«      }|j                  | j                  d   |j                  d   f«      S r   )r   r   r   r   r   r.   Úflatr   )r   r   r/   r    s       r   Ú_poly_fjacbr3   1   sb   € Ü
�.‰.œ"Ÿ'™' !§'¡'¨"¡+¬uÓ5ÜŸ(™( 1 fÓ-×2Ñ2ð4ó 5€Cà�;‰;˜Ÿ™ ™ Q§W¡W¨R¡[Ð1Ó2Ð2r   c                 ó¸   — | dd  }|j                  |j                  d   df«      }||z  }t        j                  |t        j                  ||dz
  «      z  d¬«      S )Nr   r   r   r-   )r   r   r/   r   s       r   Ú_poly_fjacdr5   7   sU   € Ø	ˆ!ˆ"ˆ€AØ	�	‰	�1—7‘7˜1‘:˜q�/Ó"€Aà	ˆF‰
€Aä�6‰6�!”b—h‘h˜q &¨¡(Ó+Ñ+°!Ô4Ð4r   c                 óD   — | d   t        j                  | d   |z  «      z   S ©Nr   r   ©r   Úexp©r   r   s     r   Ú_exp_fcnr;   @   ó"   € ØˆQ‰4”"—&‘&˜˜1™ ™Ó"Ñ"Ð"r   c                 óD   — | d   t        j                  | d   |z  «      z  S )Nr   r8   r:   s     r   Ú_exp_fjdr>   D   r<   r   c                 óò   — t        j                  t        j                  |j                  d   t        «      |t        j
                  | d   |z  «      z  f«      }|j                  d|j                  d   f«      S )Nr   r   r'   )r   r   r   r   r   r9   r   )r   r   r    s      r   Ú_exp_fjbr@   H   sZ   € Ü
�.‰.œ"Ÿ'™' !§'¡'¨"¡+¬uÓ5°q¼2¿6¹6À!ÀAÁ$ÈÁ(Ó;KÑ7KÐLÓ
M€CØ�;‰;˜˜1Ÿ7™7 2™;Ð'Ó(Ð(r   c                 ó0   — t        j                  ddg«      S )Nç      ð?)r   Úarray©r)   s    r   Ú_exp_estrE   M   s   € ä�8‰8�R˜�HÓÐr   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú_MultilinearModelaÎ  
    Arbitrary-dimensional linear model

    .. deprecated:: 1.17.0
        `scipy.odr` is deprecated and will be removed in SciPy 1.19.0. Please use
        `pypi.org/project/odrpack/ <https://pypi.org/project/odrpack/>`_
        instead.


    This model is defined by :math:`y=\beta_0 + \sum_{i=1}^m \beta_i x_i`

    Examples
    --------
    We can calculate orthogonal distance regression with an arbitrary
    dimensional linear model:

    >>> from scipy import odr
    >>> import numpy as np
    >>> x = np.linspace(0.0, 5.0)
    >>> y = 10.0 + 5.0 * x
    >>> data = odr.Data(x, y)
    >>> odr_obj = odr.ODR(data, odr.multilinear)
    >>> output = odr_obj.run()
    >>> print(output.beta)
    [10.  5.]

    c           
      óV   •— t         ‰| �  t        t        t        t
        ddddœ¬«       y )NzArbitrary-dimensional Linearz y = B_0 + Sum[i=1..m, B_i * x_i]z&$y=\beta_0 + \sum_{i=1}^m \beta_i x_i$©ÚnameÚequÚTeXequ)ÚfjacbÚfjacdÚestimateÚmeta)ÚsuperÚ__init__r   r!   r$   r+   ©ÚselfÚ	__class__s    €r   rR   z_MultilinearModel.__init__o   s.   ø€ Ü‰ÑÜœH¬H¼xØ8Ø;ØEñGð 	õ 	Hr   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__rR   Ú__classcell__©rU   s   @r   rG   rG   R   s   ø„ ñ÷8Hð Hr   rG   c                 ó6  — t        j                  | «      }|j                  dk(  rt        j                  d|dz   «      }|j	                  t        |«      df«      }t        |«      dz   }|fd„}t        t        t        t        ||fdd|dz
  z  d|dz
  z  dœ¬«      S )	az  
    Factory function for a general polynomial model.

    .. deprecated:: 1.17.0
        `scipy.odr` is deprecated and will be removed in SciPy 1.19.0. Please use
        `pypi.org/project/odrpack/ <https://pypi.org/project/odrpack/>`_
        instead.

    Parameters
    ----------
    order : int or sequence
        If an integer, it becomes the order of the polynomial to fit. If
        a sequence of numbers, then these are the explicit powers in the
        polynomial.
        A constant term (power 0) is always included, so don't include 0.
        Thus, polynomial(n) is equivalent to polynomial(range(1, n+1)).

    Returns
    -------
    polynomial : Model instance
        Model instance.

    Examples
    --------
    We can fit an input data using orthogonal distance regression (ODR) with
    a polynomial model:

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> from scipy import odr
    >>> x = np.linspace(0.0, 5.0)
    >>> y = np.sin(x)
    >>> poly_model = odr.polynomial(3)  # using third order polynomial model
    >>> data = odr.Data(x, y)
    >>> odr_obj = odr.ODR(data, poly_model)
    >>> output = odr_obj.run()  # running ODR fitting
    >>> poly = np.poly1d(output.beta[::-1])
    >>> poly_y = poly(x)
    >>> plt.plot(x, y, label="input data")
    >>> plt.plot(x, poly_y, label="polynomial ODR")
    >>> plt.legend()
    >>> plt.show()

    © r   c                 ó8   — t        j                  |ft        «      S )N)r   r   r   )r)   Úlen_betas     r   Ú	_poly_estzpolynomial.<locals>._poly_est°   s   € ä�w‰w˜�{¤EÓ*Ð*r   zSorta-general Polynomialz$y = B_0 + Sum[i=1..%s, B_i * (x**i)]z)$y=\beta_0 + \sum_{i=1}^{%s} \beta_i x^i$rI   )rN   rM   rO   Ú
extra_argsrP   )
r   Úasarrayr   Úaranger   r(   r   r0   r5   r3   )Úorderr/   r`   ra   s       r   r   r   z   sž   € ô\ �Z‰Z˜Ó€FØ‡|�|�rÒä—‘˜1˜f q™jÓ)ˆà�^‰^œS ›[¨!Ð,Ó-€FÜ�6‹{˜Q‰€Hà!)ó +ô ”¤+´[Ø#°°	Ø9Ø>À(È1Á*ÑMØGØ! !™ñ%ñ&ô'ð 'r   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú_ExponentialModela§  
    Exponential model

    .. deprecated:: 1.17.0
        `scipy.odr` is deprecated and will be removed in SciPy 1.19.0. Please use
        `pypi.org/project/odrpack/ <https://pypi.org/project/odrpack/>`_
        instead.

    This model is defined by :math:`y=\beta_0 + e^{\beta_1 x}`

    Examples
    --------
    We can calculate orthogonal distance regression with an exponential model:

    >>> from scipy import odr
    >>> import numpy as np
    >>> x = np.linspace(0.0, 5.0)
    >>> y = -10.0 + np.exp(0.5*x)
    >>> data = odr.Data(x, y)
    >>> odr_obj = odr.ODR(data, odr.exponential)
    >>> output = odr_obj.run()
    >>> print(output.beta)
    [-10.    0.5]

    c           
      óV   •— t         ‰| �  t        t        t        t
        ddddœ¬«       y )NÚExponentialzy= B_0 + exp(B_1 * x)z$y=\beta_0 + e^{\beta_1 x}$rI   ©rN   rM   rO   rP   )rQ   rR   r;   r>   r@   rE   rS   s    €r   rR   z_ExponentialModel.__init__×   s.   ø€ Ü‰Ñœ¬¼Ü"*Ø'4Ø&=Ø)GñIð 	õ 	Jr   rV   r\   s   @r   rg   rg   ¼   ó   ø„ ñ÷4Jð Jr   rg   c                 ó   — || d   z  | d   z   S r7   r^   r:   s     r   Ú_unilinrm   â   s   € ØˆQˆq‰T‰6�A�a‘D‰=Ðr   c                 óV   — t        j                  |j                  t        «      | d   z  S )Nr   )r   r   r   r   r:   s     r   Ú_unilin_fjdro   æ   s    € Ü�7‰7�1—7‘7œEÓ" Q q¡TÑ)Ð)r   c                 ó°   — t        j                  |t        j                  |j                  t        «      f«      }|j                  d|j                  z   «      S )N)r'   ©r   r   r   r   r   r   ©r   r   Ú_rets      r   Ú_unilin_fjbrt   ê   s;   € Ü�>‰>˜1œbŸg™g a§g¡g¬uÓ5Ð6Ó7€DØ�<‰<˜˜qŸw™w™Ó'Ð'r   c                  ó   — y)N)rB   rB   r^   rD   s    r   Ú_unilin_estrv   ï   s   € Ør   c                 ó0   — ||| d   z  | d   z   z  | d   z   S )Nr   r   r'   r^   r:   s     r   Ú
_quadraticrx   ó   s&   € Øˆa��!‘‰f�q˜‘t‰mÑ˜q ™tÑ#Ð#r   c                 ó$   — d|z  | d   z  | d   z   S r&   r^   r:   s     r   Ú	_quad_fjdrz   ÷   s   € ØˆQ‰3ˆq�‰t‰8�a˜‘d‰?Ðr   c                 ó¸   — t        j                  ||z  |t        j                  |j                  t        «      f«      }|j                  d|j                  z   «      S )N)é   rq   rr   s      r   Ú	_quad_fjbr}   û   sA   € Ü�>‰>˜1˜Q™3 ¤2§7¡7¨1¯7©7´EÓ#:Ð;Ó<€DØ�<‰<˜˜qŸw™w™Ó'Ð'r   c                  ó   — y)N)rB   rB   rB   r^   rD   s    r   Ú	_quad_estr      s   € Ør   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú_UnilinearModela™  
    Univariate linear model

    .. deprecated:: 1.17.0
        `scipy.odr` is deprecated and will be removed in SciPy 1.19.0. Please use
        `pypi.org/project/odrpack/ <https://pypi.org/project/odrpack/>`_
        instead.

    This model is defined by :math:`y = \beta_0 x + \beta_1`

    Examples
    --------
    We can calculate orthogonal distance regression with an unilinear model:

    >>> from scipy import odr
    >>> import numpy as np
    >>> x = np.linspace(0.0, 5.0)
    >>> y = 1.0 * x + 2.0
    >>> data = odr.Data(x, y)
    >>> odr_obj = odr.ODR(data, odr.unilinear)
    >>> output = odr_obj.run()
    >>> print(output.beta)
    [1. 2.]

    c           
      óV   •— t         ‰| �  t        t        t        t
        ddddœ¬«       y )NzUnivariate Linearzy = B_0 * x + B_1z$y = \beta_0 x + \beta_1$rI   rj   )rQ   rR   rm   ro   rt   rv   rS   s    €r   rR   z_UnilinearModel.__init__  s.   ø€ Ü‰Ñœ¬¼;Ü"-Ø':Ø&9Ø)FñHð 	õ 	Ir   rV   r\   s   @r   r�   r�     s   ø„ ñ÷4Ið Ir   r�   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú_QuadraticModela°  
    Quadratic model

    .. deprecated:: 1.17.0
        `scipy.odr` is deprecated and will be removed in SciPy 1.19.0. Please use
        `pypi.org/project/odrpack/ <https://pypi.org/project/odrpack/>`_
        instead.

    This model is defined by :math:`y = \beta_0 x^2 + \beta_1 x + \beta_2`

    Examples
    --------
    We can calculate orthogonal distance regression with a quadratic model:

    >>> from scipy import odr
    >>> import numpy as np
    >>> x = np.linspace(0.0, 5.0)
    >>> y = 1.0 * x ** 2 + 2.0 * x + 3.0
    >>> data = odr.Data(x, y)
    >>> odr_obj = odr.ODR(data, odr.quadratic)
    >>> output = odr_obj.run()
    >>> print(output.beta)
    [1. 2. 3.]

    c           
      óV   •— t         ‰| �  t        t        t        t
        ddddœ¬«       y )NÚ	Quadraticzy = B_0*x**2 + B_1*x + B_2z&$y = \beta_0 x^2 + \beta_1 x + \beta_2rI   rj   )rQ   rR   rx   rz   r}   r   rS   s    €r   rR   z_QuadraticModel.__init__E  s.   ø€ Ü‰ÑÜœi¬yÄ9Ø%Ø5ØGñIð 	õ 	Jr   rV   r\   s   @r   r„   r„   *  rk   r   r„   )"rZ   Únumpyr   Úscipy.odr._odrpackr   Ú__all__r   r!   r$   r+   r0   r3   r5   r;   r>   r@   rE   rG   r   r   rg   r   rm   ro   rt   rv   rx   rz   r}   r   r�   r   r„   r   r^   r   r   Ú<module>rŠ      sà   ðñã Ý $ò€ò!ò3òò
$ò7ò3ò5ò#ò#ò)ò
ô
"H˜ô "HñJ  Ó!€ò?'ôD J˜ô  JñF  Ó!€òò*ò(ò
ò$òò(ò
ô I�eô  IñF Ó€	ô J�eô  JñF Ó�	r   