U
    »mœdCM  ã                   @   sš   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
Z
d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZ G dd„ dƒZdS )é    N)Úpi)Úassert_array_almost_equalÚassert_equalÚassert_warns)Úraises)ÚDataÚModelÚODRÚRealDataÚOdrStopÚ
OdrWarningÚmultilinearÚexponentialÚ	unilinearÚ	quadraticÚ
polynomialc                   @   sì   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zejjd1d2d3�d4d5„ ƒZd6d7„ Zd8S )9ÚTestODRc                 C   s    t ttddƒ t ttddƒ d S )Né   é   )Úassert_raisesÚ
ValueErrorr   r
   )Úself© r   úQ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/odr/tests/test_odr.pyÚtest_bad_data   s    zTestODR.test_bad_datac                 C   s   |d | |d  S ©Nr   r   r   ©r   ÚBÚxr   r   r   Úempty_data_func   s    zTestODR.empty_data_funcc                 C   sN   ddg}t | jƒ}tg g ƒ}ttt|||d� tg g ƒ}ttt|||d� d S )Nç{®Gáz”?ç        ©Úbeta0)r   r   r   r   r   r	   r
   )r   r#   ÚlinearZ	empty_datr   r   r   Útest_empty_data   s    

  ÿ
  ÿzTestODR.test_empty_datac                 C   s2   |d |d t  t  |d | ¡d d¡  }|S )Nr   r   r   ç      ð?)ÚnpÚpowerÚexp)r   r   r   Úretr   r   r   Úexplicit_fcn+   s    .zTestODR.explicit_fcnc                 C   s6   t  |d | ¡}|d d |d  |d  | }|S )Nr   r   ç       @r&   )r'   r)   )r   r   r   ÚeBxr*   r   r   r   Úexplicit_fjd/   s     zTestODR.explicit_fjdc                 C   sV   t  |d | ¡}t  t  |jd ¡t  |d d¡|d d |d  | | g¡}|S )Nr   éÿÿÿÿr&   r   r,   )r'   r)   ÚvstackÚonesÚshaper(   )r   r   r   r-   Úresr   r   r   Úexplicit_fjb4   s    þzTestODR.explicit_fjbc                 C   s  t | j| j| jtddd�d�}tdddddd	d
dddddgddddddddddddgƒ}t||dddgddd d d d d d d d d dgd!�}|jd"d#� |jdddd$� | 	¡ }t
|jt d%d&d'g¡ƒ t
|jt d(d)d*g¡ƒ t
|jt d+d,d-gd,d.d/gd-d/d0gg¡ƒ d S )1NzSample Explicit ModelzODRPACK UG, pg. 39©ÚnameÚref)ÚfjacbÚfjacdÚmetar!   ç      @ç      @g      @ç      $@g      0@g      :@ç      >@g      A@g     @A@ç      Y@g     Ä“@gfffff¾“@g     ¨“@g     ˜“@g     ”“@g33333‡“@g     T“@g     “@gfffff“@g33333÷’@g     þ’@g     ð’@ç     p—@g      IÀgš™™™™™¹¿r   r   ©r#   Úifixxr   ©Úderiv)ÚinitÚiterÚfinalgÊ8…žÂ“@gLíèA[KÀg x¶˜Q}¶¿g�Ö³¤�ð?g1ÊXù?g¥¤°Êïy?ggC�ŠÄÜ?gNM=y7ó×¿gã	„úñˆJ¿gÖq·¦õØð?g]�F fß_¿gO©Ê¥ñ>)r   r+   r4   r.   Údictr   r	   Úset_jobZ
set_iprintÚrunr   Úbetar'   ÚarrayÚsd_betaÚcov_beta)r   Zexplicit_modZexplicit_datZexplicit_odrÚoutr   r   r   Útest_explicit;   sX    ÿü  ÿÿÿÿþþÿÿÿüþzTestODR.test_explicitc                 C   sp   |d t  |d |d  d¡ d|d  |d |d   |d |d    |d t  |d |d  d¡  d S )Nr   r   r,   é   r   é   r&   )r'   r(   r   r   r   r   Úimplicit_fcna   s    *ÿþþzTestODR.implicit_fcnc                 C   s   t | jdtddd�d�}tdddd	d
dddddddddddddddgdddddddd d!d"d#d$d%d%d&d'd(d)d*d+ggdƒ}t||dd,d-d.d/gd0�}| ¡ }t|jt 	d1d2d3d4d5g¡ƒ t|j
t 	d6d7d8d9d:g¡ƒ t|jt 	d;d<d=d>d?gd<d@dAdBdCgd=dAdDdEdFgd>dBdEdGdHgd?dCdFdHdIgg¡ƒ d S )JNr   zSample Implicit ModelzODRPACK UG, pg. 49r5   )Úimplicitr:   ç      à?g333333ó?gš™™™™™ù?gÃõ(\�Âý?gö(\�Âõ @gáz®Gá@g…ëQ¸…@g{®Gáz @g×£p=
×û?gq=
×£põ?çÍÌÌÌÌÌì?gìQ¸…ëÑ¿gö(\�Âõè¿gÃõ(\�Âõ¿gffffffþ¿g      Àg
×£p=
Àgq=
×£p	Àg…ëQ¸…Àg¸…ëQ¸¾¿g333333ã¿ç      ð¿gffffffö¿gR¸…ëQÀgáz®Gá
Àg      Àg      Àg      Àg�Âõ(\�Àgáz®GáÀgHáz®GÀgÃõ(\�ÂÀg¤p=
×£Àg      Àg…ëQ¸…Àg      Àgö(\�ÂõÀgq=
×£pÀg      Àg
×£p=
·?r    g{®Gáz´?r"   g{ 3°íúï¿gzJ¨‰ÉrÀgJòêú/k¶?g&Zåè–ž�?g�k³¾j´?g…ªƒ¼?g2ê9¶¼?g3¦"Í‡Ñp?g[œ™ª=‡f?g¨x#+¤l?gµ:\ß @g8÷Ž%­ÿ¿g?“ÅÊü±?g�'M['¨¿g%GRRãª?gÜdbóœb @ggßRŠ¯¿g‰	�<Œ°§?gkÊüõ®¿g};ªyWzg?g
¤W¦´÷W¿gm&ïˆØÍW?gªK}ÆU?g�û$_ÎËT¿gàôª¢a?)r   rS   rH   r   r	   rJ   r   rK   r'   rL   rM   rN   )r   Zimplicit_modZimplicit_datZimplicit_odrrO   r   r   r   Útest_implicitf   sš    ÿý      ÿ       ÿýûÿ
 ÿþ
 ÿþ þ þ þ þ þôþzTestODR.test_implicitc           
   
   C   sú   |dk   ¡ rt‚t|d  d }t |¡}t |¡}t dt | t |d  ¡ |d ¡}t || d||  ¡}|d |d  t t 	t d||  d¡t || d¡ ¡|d  ¡ }t 
|d |t |d | ¡  |t |d | ¡ g¡}	|	S )	Nr!   rQ   r,   r   r&   r   r   rR   )Úanyr   r   r'   ÚcosÚsinr(   r)   Zarctan2Úsqrtr0   )
r   r   r   ÚthetaZcthetaZsthetaÚomegaÚphiÚrr*   r   r   r   Ú	multi_fcn—   s     

((ÿÿ ÿzTestODR.multi_fcnc                 C   sÊ  t | jtddd�d�}t ddddd	d
dddddddddddddddddg¡}t ddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2gd3d4d5d6d7d8d9d:d;d<d=d<d>d?d@dAdBdCdDdEdFdGdHgg¡}t|ƒ}tjdIdI|ftdJ�}tj|t	dJ�}tj|tdJ�}dK|dLdLd d …f< dM |dNdLd d …f< |dLdNd d …f< dO|dNdNd d …f< t
|ƒD ]°}|| dk �r\dL||< n`|| d	k�rlnP|| dk�r„dP||< n8|| dk�rœdQ||< n || dk�r´dR||< ndS||< || dk�sØ|| d	k�r@dT|d d …d d …|f< �q@t||dUt |dI¡ |dV�}	t|	|dWdXdYdZd[g||d\�}
|
jdNdNd]� |
 ¡ }t|jt d^d_d`dadbg¡ƒ t|jt dcdddedfdgg¡ƒ t|jt dhdidjdkdlgdidmdndodpgdjdndqdrdsgdkdodrdtdugdldpdsdudvgg¡ƒ d S )wNzSample Multi-Response ModelzODRPACK UG, pg. 56r5   ©r:   r>   g      I@g     €Q@r?   g     Àb@g      i@g     Àr@g     @@g     à…@ç     @�@r@   g     @Ÿ@g     p§@g     ˆ³@g     X»@g     ˆÃ@g     LÍ@g     ˆÓ@g     LÝ@g     jè@g     ñ@g     jø@g    €OAgáz®Gá@g^ºI«@gºI+‡@gôýÔxé&@gú~j¼t@gÙÎ÷Sã¥@gßO�—n@gƒÀÊ¡E@gNbX9´@gªñÒMb@gR¸…ëQ@gX9´Èv@gw¾Ÿ/Ý
@gªñÒMb
@g%�•C‹	@g /Ý$	@gF¶óýÔx@g¬Zd;ß@gF¶óýÔx@g5^ºI@gNbX9´@gü©ñÒMb@gßO�—n@gœÄ °rhÁ?gÇK7‰A`Å?gªñÒMbÈ?g‰A`åÐ"Ë?gh‘í|?5Î?g¦›Ä °rÐ?gD‹lçû©Ñ?g5^ºIÓ?g-²�ï§ÆÓ?g�•C‹lçÓ?gj¼t“Ô?g…ëQ¸…Ó?gåÐ"Ûù~Ò?gî|?5^ºÑ?gR¸…ëQÐ?g¸…ëQ¸Î?g�•C‹lçË?gB`åÐ"ÛÉ?g²�ï§ÆKÇ?g/Ý$�Å?g/Ý$�•Ã?g˜nƒÀÊÁ?r   ©ZdtypegÍÌÌÌÌ|�@r   g     ˆ™Àr   g    €fÀ@g      9@g     €�@g     ŽÂ@g     ”Ar!   g-Cëâ6?©ÚwdZweç      @r,   r<   çš™™™™™Ù?rU   )r#   Zdelta0rB   )rD   Zdel_initgÄ•…@gN¡Uiw@g¨ÿÆz @g°õåÜRà?g‘àFöuŽà?gfkl,†ÀŠ?g 1èwò¹Š?g¬AïS�à½?g»ê@ÙL*‹?g»¦€±ž‹�?g?Ž#…0—z?g_Š n=Ÿm?g«-¶Mu¦?gGé”:x¿ggïTÃš‡?gaÇ‡
Šz?g4ÁÐ<n€ª?gÙgj±¿öt¿gÜªVÛÅŠ?gHA¦cO•à?gKþ*rÔ¬¿gÎa/Þ?À?g—žµk{?gy7³µŒ¿g
P/£{7 ?)r   ra   rH   r'   rL   ÚlenÚzerosÚfloatr1   ÚintÚranger   r(   r	   rI   rJ   r   rK   rM   rN   )r   Z	multi_modZmulti_xZmulti_yÚnZmulti_weZmulti_ifixxZmulti_deltaÚiZ	multi_datZ	multi_odrrO   r   r   r   Ú
test_multi¥   sú    ÿþ             þ            þ            þü$



ÿ ÿ
 ÿþ
 ÿþ
 ÿ ÿ ÿ ÿ ÿøþzTestODR.test_multic                 C   s   |d |d |  S r   r   r   r   r   r   Úpearson_fcnò   s    zTestODR.pearson_fcnc                 C   sx  t  ddddddddd	d
g
¡}t  ddddddddddg
¡}t  ddddddddddg
¡}t  ddddddddddg
¡}t||||d �}t||||d �}t| jtd!d"�d#�}t||ddgd$�}t||ddgd$�}	| ¡ }
t|
j	t  d%d&g¡ƒ t|
j
t  d'd(g¡ƒ t|
jt  d)d*gd*d+gg¡ƒ |	 ¡ }t|j	t  d,d-g¡ƒ t|j
t  d.d/g¡ƒ t|jt  d0d1gd1d2gg¡ƒ d S )3Nr!   rV   gÍÌÌÌÌÌü?gÍÌÌÌÌÌ@gffffff
@gš™™™™™@gÍÌÌÌÌÌ@gffffff@g      @gš™™™™™@gš™™™™™@gš™™™™™@gffffff@g      @gš™™™™™@gffffff@g333333@g      ø?g¸…ëQ¸ž?g{®Gáz¤?gìQ¸…ë¡?gìQ¸…ë±?g)\�Âõ(¼?g¤p=
×£À?g)\�Âõ(Ì?g®Gáz®ç?r&   rU   gffffffÖ?g¸…ëQ¸¾?çš™™™™™¹?©ÚsxZsyzUni-linear Fit©r6   rb   r"   g4ÛÔ‰.è@gvùñ¾æ±Þ¿grtA-úÖ?gcŒú¿²?g‚;ª”Þµ?g=‘¬‘�¿g˜µ±äk?gO®­¡Ö&@g’ªj(® Àg3
Ù»lï?gZöÕ—»¦Ó?gF�­€)tä?g¿…`=LÉ¿gË!�¹ˆþ¯?)r'   rL   r
   r   rq   rH   r	   rJ   r   rK   rM   rN   )r   Zp_xZp_yZp_sxZp_syZp_datZpr_datZp_modZp_odrZpr_odrrO   Úroutr   r   r   Útest_pearsonõ   sN    þþ
ÿþþþ
ÿþzTestODR.test_pearsonc              	   C   sR   |d |d  |d  t  t  || |d |d   d¡t  |d | d¡ ¡ S )Nr   r   r   r,   )r'   r\   r(   )r   rK   r   r   r   r   Úlorentz&  s    $ÿÿÿzTestODR.lorentzc                 C   s  t  dgd ¡}t  ddddddd	d
ddddddddddg¡}tdddddddddddd d!d"d#d$d%d&gd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8g||d9�}t| jtd:d;�d<�}t||d=d>�}| ¡ }t|j	t  d?d@dAg¡ƒ t|j
t  dBdCdDg¡ƒ t|jt  dEdFdGgdFdHdIgdGdIdJgg¡ƒ d S )KNg�Âõ(\�Ò?é   gd’þOßáO?gíº¦O?gƒÛ&0G?gptÍ˜(G?g÷ÿˆ^ú"G?g eäG?göeånBçF?g›8”Åð=?g‡‹-Õ=?g¾`¶ëE·E?g,­!™WsE?g«—0±1cE?gÊ&á-}Ô¬>gÀ‡;¬ªvQ?g¿PÙÑmQ?gGuøs#�T?gW ÃUW?gé¯>»Ïc?gõÛ×�sF@gª`TR'à@gx—‹øNÌ@g»ÕsÒûÆ@g‡3¿šÃ@gºN#-•·@g–	¿ÔÏ›@gWÿ[ÉN@gp”¼:Ç@@g®ãüÍ@gsº,&6Ÿ@g£¼”@g2¬â�Ìc@gHùIµOG@gäÉå?@gŽ;¥ƒõÿ@gþÔxé&q@gÒŒEÓY@iŒ  g     tŒ@iØ  iè  g     |�@i  g     "’@g     –@i–  ib  g     ì�@i˜  g     Lˆ@g     ,†@iº  g     ‚@g     (z@g     8q@rs   zLorentz Peakru   rb   )rc   rr   gffffff@r"   gA5Ð[¶Z–@g’æOÍ#Á?g˜FÀî=@gÌ(1�ç?gÊð–È•û6?gÙQ.q;0?g�°\åj¢Ï?gE˜G†¿gp²Š�` ¿gò3¼<n>gG!fc>gq[cÑ�E]>)r'   rL   r
   r   rx   rH   r	   rJ   r   rK   rM   rN   )r   Zl_syZl_sxZl_datZl_modZl_odrrO   r   r   r   Útest_lorentz*  s�               ý         þ       ÿù	ÿþÿþÿÿÿüþzTestODR.test_lorentzc           	      C   sh   dd„ }ddg}t  dd¡}|||ƒ}t|ƒ}t||ddd�}t||ddgd	�}| ¡ }t|jd
ƒ d S )Nc                 S   s   | d | | d  S r   r   )Úcr   r   r   r   r$   S  s    z(TestODR.test_ticket_1253.<locals>.linearr,   ç      @r   é
   r&   re   r"   r   )r'   Úlinspacer   r   r	   rJ   r   Úinfo)	r   r$   r{   r   ÚyÚmodelÚdataZjobÚresultr   r   r   Útest_ticket_1253R  s    
zTestODR.test_ticket_1253c           
      C   s¶   dddddg}dddd	d
g}t  t j|td�t j|td�f¡}tt  ||f¡d|d�}tdd„ dd�}t||t  dg¡d�}| 	¡ }t||t  dg¡|d�}| 	¡ }	t
|j|	jƒ d S )Ng®Gáz Àg®Gáz®ï¿gü©ñÒMbP¿gR¸…ëQð?g®Gáz®ÿ?g×£p=
×@g)\�Âõ(ð?gü©ñÒMbP?gV-²�ïï?g
×£p=
@rd   r   )r€   Úfixc                 S   s,   |dd d …f | d |dd d …f d   S )Nr   r   r,   r   )rK   r   r   r   r   Ú<lambda>g  ó    z$TestODR.test_ifixx.<locals>.<lambda>T)rT   r&   r"   rA   )r'   r0   Z
zeros_likerl   Z	ones_liker   r   r	   rL   rJ   r   rK   )
r   Úx1Zx2r…   r‚   r�   Zodr1Zsol1Zodr2Zsol2r   r   r   Ú
test_ifixxb  s    "zTestODR.test_ifixxc                 C   sb  t  ddddddg¡}d}d}t  d	d
ddddddddg
ddddddddddg
g¡}d}t  ddd d!d"d#d$d%d&d'g
d(d)d*d+d,d-d.d/d0d1g
g¡}t  d2d3d4d5d6d7g¡}d8d9„ }d:d;„ }	d<d=„ }
t  d>d|¡}t  d>d|¡}t  ||g¡}|||ƒ}|| }|| }t||	|
d?�}t||||d@�}t||dA| dBdC�}|jdDdE� | ¡ }t|j	d>ƒ t
|j|ƒ d S )FNr&   gffffff@gš™™™™™ñ?rW   gÍÌÌÌÌÌô?rU   r}   g{®Gáz„?g±	 'ÊD?g"º�ÜÔu?gýsfõí¨Z?gÀ‰t�Ãò„?g	Yqo£�¿g?ÛùÄs?g’†èJã›f?g>²Úx‡F}¿gvIƒx°ƒ¿g±!Í’ß&|¿g¬�¿gÃš¿‚Ñ€¿gz7X0Øª`¿gÀËN77ƒ?gªaà5¿|¿gL�l	TZj?g^í1±;e?g<¯%¢gÌw¿g%œÌ.ÎÎh¿gÜ¾á#Å„?gš™™™™™©?gœ!Kr«?gÚR‹±á#§?g»Ý)üB³¿gÞH]ªN¢?gäÝäžK¨?g´N¦r}£?gt%†ä²?g')vUÞ~¿gø^ð'2Œš¿gýê?¥)†˜¿g“ÃŠÇ™¢?gÒÏiP±?gÐÞ�Ãhoµ?g“Ê�:l¤?gÐMö*�ó‚¿g¿Dþ‘Ð3£¿gôŒ\»Ý` ¿gg·Ö“Ð�?gðî3ôp~Š?g¢­ïhˆÏ¬¿gé„â>›@gªÍkñ¦_ÀgÊ–«ƒ6`@g¤ðÿ<u+þ¿g|–ã‰˜S@gö¤2ãdSÀc                 S   s~   | d | d |dd d …f   | d |dd d …f   }| d | d |dd d …f   | d |dd d …f   }t  ||f¡S )Nr   r   r   rQ   rR   é   )r'   r0   )rK   r   Zy0Úy1r   r   r   Úfunc†  s    88z'TestODR.test_ticket_11800.<locals>.funcc                 S   sŒ   t  |¡d }t  |¡}t  |¡}t  ||dd d …f |dd d …f |||g¡}t  |||||dd d …f |dd d …f g¡}t  ||f¡S )Nr   r   )r'   r2   rj   r1   rL   Ústack)rK   r   Únr_measrj   r1   Údy0Údy1r   r   r   Údf_dbeta_odrŒ  s    

..z/TestODR.test_ticket_11800.<locals>.df_dbeta_odrc                 S   sb   t  |¡d }t  |¡}t  | d | | d | g¡}t  | d | | d | g¡}t  ||f¡S )Nr   r   rR   rŠ   )r'   r2   r1   rL   r�   )rK   r   rŽ   r1   r�   r�   r   r   r   Ú	df_dx_odr–  s
    
z,TestODR.test_ticket_11800.<locals>.df_dx_odrr   )r8   r9   rs   rV   éd   )r#   ZmaxitrQ   rC   )r'   rL   r~   r   r
   r	   rI   rJ   r   r   r   rK   )r   Z	beta_trueZnr_measurementsZ	std_dev_xZx_errorZ	std_dev_yZy_errorZbeta_solutionrŒ   r‘   r’   Zx0_trueZx1_trueZx_trueZy_trueZx_measZy_measZmodel_fr‚   Úodr_objZodr_outr   r   r   Útest_ticket_11800p  sx         ÿ
    ÿþ     ÿ
    ÿþ    þ
	
zTestODR.test_ticket_11800c                 C   sH   t  dd¡}dd|  }t||ƒ}t|tƒ}| ¡ }t|jddgƒ d S )Nr!   r;   r=   )r'   r~   r   r	   r   rJ   r   rK   ©r   r   r€   r‚   r”   Úoutputr   r   r   Útest_multilinear_model·  s    

zTestODR.test_multilinear_modelc                 C   sN   t  dd¡}dt  d| ¡ }t||ƒ}t|tƒ}| ¡ }t|jddgƒ d S )Nr!   r;   g      $ÀrU   )	r'   r~   r)   r   r	   r   rJ   r   rK   r–   r   r   r   Útest_exponential_model¿  s    

zTestODR.test_exponential_modelc                 C   sl   t  dd¡}dd|  d|d   d|d   }tdƒ}t||ƒ}t||ƒ}| ¡ }t|jddddgƒ d S )	Nr!   r;   r&   r,   r|   r   rg   rQ   )r'   r~   r   r   r	   rJ   r   rK   )r   r   r€   Z
poly_modelr‚   r”   r—   r   r   r   Útest_polynomial_modelÇ  s    $

zTestODR.test_polynomial_modelc                 C   sH   t  dd¡}d| d }t||ƒ}t|tƒ}| ¡ }t|jddgƒ d S )Nr!   r;   r&   r,   )r'   r~   r   r	   r   rJ   r   rK   r–   r   r   r   Útest_unilinear_modelÐ  s    

zTestODR.test_unilinear_modelc                 C   sV   t  dd¡}d|d  d|  d }t||ƒ}t|tƒ}| ¡ }t|jdddgƒ d S )Nr!   r;   r&   r   r,   r|   )r'   r~   r   r	   r   rJ   r   rK   r–   r   r   r   Útest_quadratic_modelØ  s    

zTestODR.test_quadratic_modelc                 C   s´   dd„ }d}t  |¡}t  |d |d |d ¡}t  |d¡}t  |d¡}t|ƒ}t||||d�}t||ddgd�}	|	jd	d
� |	 ¡ }
|
j	d }t
|
j|
j||t|
jƒ … ƒ d S )Nc                 S   s   | \}}|||  S )Nr   )Úparr   Zb0Úb1r   r   r   rŒ   â  s    z#TestODR.test_work_ind.<locals>.funcrR   r   rr   rs   rh   r"   r   )Zfit_typeÚsd)r'   ÚarangeÚwhereÚfullr   r
   r	   rI   rJ   Zwork_indr   rM   Zworkri   )r   rŒ   Zn_datar   r€   Zx_errZy_errZlinear_modelZ	real_datar”   rO   Zsd_indr   r   r   Útest_work_indà  s    

ÿzTestODR.test_work_indTzJFortran I/O prone to crashing so better not to run this test, see gh-13127)Úreasonc              	   C   sš   dd„ }t |ƒ}tt d¡dt d¡ ƒ}t ¡ }tj |d¡}tj |d¡}z:t||ddg||d	� ¡  t||ddg||d
d� ¡  W 5 t	 
|¡ X dS )z(
        Verify fix for gh-1892
        c                 S   s   | d | d |  S r   r   ©Úbr   r   r   r   rŒ   þ  s    z0TestODR.test_output_file_overwrite.<locals>.funcr}   é   z	error.datz
report.datrr   é   )r#   ÚerrfileÚrptfileT)r#   r©   rª   Ú	overwriteN)r   r   r'   r    ÚtempfileÚmkdtempÚosÚpathÚjoinÚshutilÚrmtreer	   rJ   )r   rŒ   Úpr‚   Ztmp_dirZerror_file_pathZreport_file_pathr   r   r   Útest_output_file_overwriteø  s    ÿ
 ÿz"TestODR.test_output_file_overwritec                 C   s4   dd„ }t |ƒ}|jddd� t|jdddœƒ d S )Nc                 S   s   | d | d |  S r   r   r¥   r   r   r   rŒ     s    z1TestODR.test_odr_model_default_meta.<locals>.funczSample Model MetaZODRPACKr5   )r   Zset_metar   r:   )r   rŒ   r³   r   r   r   Útest_odr_model_default_meta  s    z#TestODR.test_odr_model_default_metaN) Ú__name__Ú
__module__Ú__qualname__r   r   r%   r+   r.   r4   rP   rS   rX   ra   rp   rq   rw   rx   rz   r„   r‰   r•   r˜   r™   rš   r›   rœ   r£   ÚpytestÚmarkZskipifr´   rµ   r   r   r   r   r      s6   &1M1(G	
r   )r¬   r±   r®   Únumpyr'   r   Znumpy.testingr   r   r   r¹   r   r   Z	scipy.odrr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Ú<module>   s   4