
    e!hG=                     
   d dl Z 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	 d dl
mZmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d Z ed       Zd	Zd
ZdZej=                  eef      Zej=                  eef      Z ejC                  d      Z"e jC                  d      Z# eee g      \  Z$Z%edk  jC                  ejL                        Z'e dk  jC                  ejL                        Z( ee'e(g      \  Z)Z*ej=                  eef      Z+ ejX                  e+e+jZ                        Z.di fdi fd e/d      fdi fd e/ej=                  e      f      fd e/e.f      fdi fdi fdi fd e/dej=                  e      f      fg
Z0ejb                  je                  de0d        ejb                  je                  d!ee fe"e#fe$e%fg      ejb                  je                  d"e      d#                      Z3ejb                  je                  d$e      ejb                  je                  d%e'e(fe)e*fg      ejb                  je                  d"e      d&                      Z4ejb                  je                  de0d'        ejb                  je                  d(ee"e$g      ejb                  je                  d"e      d)                      Z5ejb                  je                  de0d*        d+        Z6ejb                  je                  d$e      ejb                  je                  d,e'e)g      ejb                  je                  d"e      d-                      Z7ejb                  je                  d.d/d0g      ejb                  je                  de0d1        ejb                  je                  d(ee"g      d2                      Z8ejb                  je                  d$e      ejb                  je                  d,e'e)g      d3               Z9ejb                  je                  d!ee fe"e#fe$e%fg      ejb                  je                  d"e      d4               Z:d5 Z;d6 Z<d7 Z=ejb                  je                  d8 ej|                  g d9      e?d:f ej|                  d;d<ej                  g      e?d=fgeD  cg c]  }  | g d>g      eAd?f c}  ej|                  g d@      e?dAf ej|                  g       e?dBf      dC        ZBdD ZCejb                  je                  dEe0      ejb                  je                  dFej                  ejL                  f      dG               ZEdH ZFdI ZGyc c} w )J    N)cdist)DistanceMetric)BOOL_METRICSDEPRECATED_METRICSDistanceMetric32DistanceMetric64)check_random_state)assert_allclosecreate_memmap_backed_dataignore_warnings)CSR_CONTAINERSparse_version
sp_versionc                 D    t        j                  | |z
  |z        d|z  z  S )Ng      ?)npsum)x1x2ps      o/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_dist_metrics.py	dist_funcr      s"    6627q.!cAg..             float32g333333?gffffff?	euclidean	cityblock	minkowski)      ?         ?      r   	chebyshev
seuclideanVmahalanobisVIhammingcanberra
braycurtis)r    r!   r"   r$   r   wmetric_param_gridc                     | d   S Nr    paramss    r   <lambda>r8   A   
    F1I r   )idszX, Ycsr_containerc                    | \  }}|j                         } ||       ||      }}t        j                  |j                          D ]  }	t	        t        ||	            }
i }|dk(  r!|j                  t        j                  k(  rddi}|dk(  r1|
d   }t        t        d      k  r|dk  rt        j                  d       t        |||fi |
}t        j                  ||j                  fi |
}|j!                  ||      }|j"                  j$                  sJ t'        ||fi | |j!                  ||      }|j"                  j$                  sJ t'        ||fi | |j!                  ||      }|j"                  j$                  sJ t'        ||fi | |j!                  ||      }|j"                  j$                  sJ t'        ||fi |  y 	Nr*   rtolư>r   r   z1.7.0r!   z9scipy does not support 0<p<1 for minkowski metric < 1.7.0keys	itertoolsproductvaluesdictzipdtyper   r   r   r   pytestskipr   r   
get_metricpairwiseflagsc_contiguousr
   )r2   XYr;   metric
param_gridrA   X_csrY_csrvalskwargs	rtol_dictr   D_scipy_cdistdm	D_sklearns                   r   
test_cdistrZ   @   s    +FJ??D #]1%55E!!:#4#4#67 &?c$o&	]"qww"**'<  I [ sAM'22q1uWXaF5f5&&vqwwA&A KK1%	++++	=>I>KKu-	++++	=>I>KKq)	++++	=>I>KK5)	++++	=>I>M&?r   rP   zX_bool, Y_boolc                    | t         v r't        t              5  t        |||       }d d d        nt        |||       }t	        j
                  |       }|j                  ||      }t        |        ||       ||      }}|j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       y # 1 sw Y   &xY wN)category)
r   r   DeprecationWarningr   r   rJ   rK   r
   rL   rM   )	rP   X_boolY_boolr;   rW   rX   rY   
X_bool_csr
Y_bool_csrs	            r   test_cdist_bool_metricrc   r   sC    ##&89 	:
 "&&&9M	: 	: fff5		"	"6	*BFF+II}- +62M&4I
JFF+I??''''I}-J
3I??''''I}-FJ/I??''''I}-J/I??''''I}-?	: 	:s   EE#c                     | d   S r4   r5   r6   s    r   r8   r8      r9   r   rN   c                    | \  }}|j                         } ||      }t        j                  |j                          D ]H  }t	        t        ||            }i }	|dk(  r!|j                  t        j                  k(  rddi}	|dk(  r1|d   }
t        t        d      k  r|
dk  rt        j                  d       t        |||fi |}t        j                  ||j                  fi |}|j!                  |      }|j"                  j$                  sJ t'        ||fi |	 |j!                  |      }|j"                  j$                  sJ t'        ||fi |	 |j!                  ||      }|j"                  j$                  sJ t'        ||fi |	 K y r=   r@   )r2   rN   r;   rP   rQ   rA   rR   rT   rU   rV   r   D_scipy_pdistrX   rY   D_sklearn_csrs                  r   
test_pdistrh      sr    +FJ??D!E!!:#4#4#67 Cc$o&	]"qww"**'<  I [ sAM'22q1uWXaF5f5&&vqwwA&AKKN	++++	=>I>E*++++}B	BE51++++}B	B=Cr   c                     | d   S r4   r5   r6   s    r   r8   r8      r9   r   c                    | \  }}|j                         }d}t        j                  |j                          D ]  }t	        t        ||            }t        j                  |t        j                  fi |}t        j                  |t        j                  fi |}|j                  t              }	|j                  t              }
|	j                  t        j                  k(  sJ |
j                  t        j                  k(  sJ t        |	|
|       |j                  t        t               }	|j                  t        t"              }
t        |	|
|        y )Ngh㈵>r>   )rA   rB   rC   rD   rE   rF   r   rJ   r   float64r   rK   X64X32rG   r
   Y64Y32)r2   rP   rQ   rA   r>   rT   rU   dm64dm32D64D32s              r   'test_distance_metrics_dtype_consistencyru      s    +FJ??D D!!:#4#4#67 -c$o&((FvF((FvFmmC mmC yyBJJ&&&yyBJJ&&&
 	St,mmC%mmC%St,%-r   r_   c                 B   | t         v r't        t              5  t        |||       }d d d        nt        |||       }t	        j
                  |       }|j                  |      }t        |        ||      }|j                  |      }t        ||       y # 1 sw Y   axY wr\   )r   r   r^   r   r   rJ   rK   r
   )rP   r_   r;   rf   rX   rY   ra   s          r   test_pdist_bool_metricsrw      s     ##&89 	:
 "&&&9M	: 	: fff5		"	"6	*BF#II}-v&JJ'II}-	: 	:s   BBwritable_kwargsTFc                     | d   S r4   r5   r6   s    r   r8   r8      r9   r   c                 F   |\  }}|j                         }t        j                  |j                          D ]  }t	        d |D              rIt        j                  |      }|D ]/  }t        |t        j                        s|j                  |        1 t        t        ||            }t        j                  ||j                  fi |}	|	j!                  |      }
t#        j$                  t#        j&                  |	            }|j!                  |      }t)        |
|        y )Nc              3   P   K   | ]  }t        |t        j                           y wN)
isinstancer   ndarray).0vals     r   	<genexpr>ztest_pickle.<locals>.<genexpr>  s     ;sz#rzz*;s   $&write)rA   rB   rC   rD   anycopydeepcopyr}   r   r~   setflagsrE   rF   r   rJ   rG   rK   pickleloadsdumpsr
   )rx   r2   rN   rP   rQ   rA   rT   r   rU   rX   D1dm2D2s                r   test_pickler      s     +FJ??D!!:#4#4#67  ;d;;==&D 8c2::.LLL78 c$o&&&vqwwA&A[[^ll6<<+,\\!_B r   c                     t        j                  |       }|j                  |      }t        j                  t        j
                  |            }|j                  |      }t        ||       y r|   )r   rJ   rK   r   r   r   r
   )rP   r_   rX   r   r   r   s         r   test_pickle_bool_metricsr     sQ     
	"	"6	*B	V	B
,,v||B'
(C	f	BBr   c                    t        j                  | d d d df         } t        j                  |d d d df         } ||        ||      }}d }t        j                  |j                  d   |j                  d   f      }t	        |       D ]&  \  }}t	        |      D ]  \  }	}
 |||
      |||	f<    ( t        j                  d| j                        }|j                  | |      }t        |j                  |      t        j                  d|z        dz  d       t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  ||      }|j                  j                  sJ t        ||       |j                  | |      }|j                  j                  sJ t        ||       y )Nr#   c                 J   dt        j                  t        j                  t        j                  d| d   |d   z
  z        dz  t        j                  | d         t        j                  |d         z  t        j                  d| d   |d   z
  z        dz  z  z               z  S )Nr#   r    r   r!   )r   arcsinsqrtsincos)r   r   s     r   haversine_slowz-test_haversine_metric.<locals>.haversine_slow)  s    299GGsbebem,-2&&A-"&&A-/"&&119N2OST2TTU
 
 	
r   r   	haversiner    r?   rk   )r   asarrayzerosshape	enumerater   rJ   rG   rK   r
   dist_to_rdistr   rL   rM   )rN   rO   r;   rR   rS   r   D_referenceixijyjr   rY   s                r   test_haversine_metricr     s    	

1QU8A


1QU8A #]1%55E
 ((EKKNEKKN;<K1 72q\ 	7EAr .r2 6K1	77 ))+qww?I""1a(I	*BFF33D,E,JQU I{+""5%0I??''''I{+""5!,I??''''I{+""1e,I??''''I{+r   c                     t         j                  j                  d      } t        j                  d      }t        j                  dt        d      }t        j                  t        j                  |            }t        j                  t        j                  |            }|j                  |       }|j                  |       }|j                  |       }|j                  |       }t        ||       t        ||       y )N)
   r$   r   pyfuncr#   )funcr   )
r   randomr   rJ   r   r   r   r   rK   r
   )	rN   r   r   euclidean_pkl
pyfunc_pklr   r   D1_pklD2_pkls	            r   test_pyfunc_metricr   L  s    
		!A))+6I&&xi1EF LLi!89Mfll623J			A	B		B##A&F  #FBFF#r   c                      d } t        d      }|j                  dd      }t        j                  d|       }t        j                  d      }t	        |j                  |      |j                  |      dz         y )	Nc                 `    | j                   d   dk(  sJ t        j                  | |z
  dz        S )Nr   r$   r#   )r   r   r   )xys     r   custom_metricz+test_input_data_size.<locals>.custom_metricd  s-    wwqzQvvq1ul##r   r   r   r$   r   )r   r   r#   )r	   randr   rJ   r
   rK   )r   rngrN   r   eucls        r   test_input_data_sizer   a  se    $ Q
CQA&&xmDF$$[1DFOOA&a(8A(=>r   c                     t        d      } | j                  d      }| j                  dd      }|j                  d       |j                  d       t        j                  d|       t        j                  d|	       y )
Nr   d   r   Fr   r'   r(   r*   r+   )r	   r   r   r   rJ   )r   weightsr,   s      r   test_readonly_kwargsr   p  sl     Q
ChhsmG	"b	B5!KKeK lg6m3r   zw, err_type, err_msg)r!   r"   iz!w cannot contain negative weightsr!   r"   zw contains NaN)r!   r"   r!   z8Sparse data was passed for w, but dense data is required)abcz!could not convert string to floatza minimum of 1 is requiredc                     t        j                  ||      5  t        j                  dd|        d d d        y # 1 sw Y   y xY w)Nmatchr   r$   r0   )rH   raisesr   rJ   )r1   err_typeerr_msgs      r   -test_minkowski_metric_validate_weights_valuesr     s9    $ 
xw	/ 9!!+a89 9 9s	   :Ac                  N   t         j                  t        dz         } t        j                  dd|       }dt
        j                  d    d| j                  d    d}t        j                  t        |	      5  |j                  t
        t               d d d        y # 1 sw Y   y xY w)
Nr!   r   r$   r0   zEMinkowskiDistance: the size of w must match the number of features \(z\). Currently len\(w\)=r   .r   )r   random_sampledr   rJ   rm   r   rH   r   
ValueErrorrK   ro   )w2rX   msgs      r   +test_minkowski_metric_validate_weights_sizer     s    			1q5	!B		"	";!r	:B	%%(YYq\N 3  "}A	/ 
 
z	- 
C  s   7BB$zmetric, metric_kwargsrG   c                 :   t         j                  t        t         j                  t        i|   }|j                         D ci c]  \  }}||d    }}}t        t        j                  | |fi |      }t         |j                  | fi |      }||u sJ y c c}}w r4   )	r   r   r   rl   r   itemstyper   rJ   )rP   metric_kwargsrG   specialized_clskvgeneric_typespecialized_types           r   test_get_metric_dtyper     s     	

$


$ O *7)<)<)>?AQ!W?M?11&%Q=QRL6O66vOOP++++	 @s   Bc                      t         j                  } d}t        j                  t        |      5  t        j                  d|        d d d        y # 1 sw Y   y xY w)Nz8Unexpected dtype .* provided. Please select a dtype fromr   	manhattan)r   int32rH   r   r   r   rJ   )rG   r   s     r   test_get_metric_bad_dtyper     sC    HHE
EC	z	- 6!!+u56 6 6s   AAc                      d} t        j                  t        |       5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nzp must be greater than 0r   r   r   r%   )rH   r   r   r   rJ   )r   s    r   .test_minkowski_metric_validate_bad_p_parameterr     s:    
$C	z	- 4!!+34 4 4s	   ?A)Hr   rB   r   numpyr   rH   scipy.spatial.distancer   sklearn.metricsr   sklearn.metrics._dist_metricsr   r   r   r   sklearn.utilsr	   sklearn.utils._testingr
   r   r   sklearn.utils.fixesr   r   r   r   r   r   n1n2r   rm   ro   astypern   rp   X_mmapY_mmaprl   r_   r`   X_bool_mmapY_bool_mmapr)   dotTr,   rE   METRICS_DEFAULT_PARAMSmarkparametrizerZ   rc   rh   ru   rw   r   r   r   r   r   r   arrayr   nan	TypeErrorr   r   r   r   r   r   )r;   s   0r   <module>r      s        ( *  - 
 J I/ 	Q 	Q 	jj	jj,c3Z8  )		BJJ	'
)		BJJ	'67GH k q!fRVVAqss^ ""$,-."43,,Q/123DREN#O2$)c.?.?.B-DEF  /5M   3*sCj66:J!KL.9*? : M
*?Z <0'+{)CD .9!. : 1
!.H /5M   sC01.9"C : 2
"CJ /5M  --> <0FK#89.9. : : 1.( *T5M:/5M   sCj)  * ;
 " <0FK#89 : 1 3*sCj66:J!KL.9), : M),X$*?4  	-	 *.QR	1c266"	#Z1AB "0

 	 {m,J

 
/	"J0ST 
"z#?@"9#"9
	 02HI2::rzz":;, < J,64i

s   U