
    ӆha8              
          S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  SSK
JrJr  SSK
JrJr   S SKJr  S SKJrJr  / S	Qr/ S
Qr/ SQr/ SQr/ SQr/ SQrS/r/ SQr/ SQr/ SQr/ r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \\-     H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \\-     H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  r\\ V Vs/ s H  n \  H  nSSX/PM
     M     snn -  rS%S jr S&S jr!S r"S'S jr#S q$S q%S q&S q'0 q(\" 5       r)S q*S  r+S! r,S(S" jr-S)S# jr.S$ r/g! \ a
    S SKJr   GN>f = fs  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f s  snn f )*    N)Pool   )__version__datasets   )metricsmodels)Queue)LockThread)local_accuracyconsistency_guaranteeskeep_positive_maskkeep_positive_resamplekeep_negative_maskkeep_negative_resamplekeep_absolute_mask__r2keep_absolute_resample__r2remove_positive_maskremove_positive_resampleremove_negative_maskremove_negative_resampleremove_absolute_mask__r2remove_absolute_resample__r2runtime)r   r   r   r   r   r   keep_absolute_mask__roc_auckeep_absolute_resample__roc_aucr   r   r   r   remove_absolute_mask__roc_auc!remove_absolute_resample__roc_aucr   )human_and_00human_and_01human_and_11human_or_00human_or_01human_or_11human_xor_00human_xor_01human_xor_11human_sum_00human_sum_01human_sum_11)linear_shap_corrlinear_shap_indcoefrandomkernel_shap_1000_meanrefsampling_shap_1000lime_tabular_regression_1000)r,   r-   r.   r/   r0   r1   )
tree_shap_tree_path_dependenttree_shap_independent_200saabasr/   	tree_gainr0   mean_abs_tree_shapr1   r2   maple
tree_maple)
r3   r4   r5   r/   r6   r0   r7   r1    lime_tabular_classification_1000r8   )	deep_shapexpected_gradientsr/   r0   r1   corrgroups60lassoridgedecision_treerandom_forestgbmffnnindependentlinear60crichumanc              #      #    [          H;  nU b
  XS   :w  a  M  Ub
  XS   :w  a  M  Ub
  X$S   :w  a  M*  Ub
  X4S   :w  a  M7  Uv   M=     g 7f)Nr   r   r      )_experiments)datasetmodelmethodmetric
experiments        mC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\shap/benchmark/experiments.pyexperimentsrP      s]     "
7m#;Q-!7&qM"9&qM"9 #s   AA	c           	      &   U u  p4pV[        U 5      n[        R                  R                  X'S-   5      nU(       aP  [        R                  R	                  U5      (       a,  [        US5       n	[        R                  " U	5      sS S S 5        $ [        UR                  SSS5      S-   5        [        R                  R                  5         [        R                  " 5       n
[        [        U5      " 5       u  p[        [         U5      " X[        ["        US-   U-   5      U5      n[        S[        R                  " 5       U
-
  -  5        [        US5       n	[        R$                  " X5        S S S 5        U$ ! , (       d  f       N= f! , (       d  f       U$ = f)	N.picklerb__    z ...z...took %f seconds.
wb)__gen_cache_idospathjoinisfileopenpickleloadprintreplacesysstdoutflushtimegetattrr   r   r	   dump)rN   	use_cache	cache_dirdataset_name
model_namemethod_namemetric_namecache_id
cache_filefstartXyscores                 rO   run_experimentru      s-   9C6Lk j)HiI)=>JRWW^^J//*d#q;;q> $#
 
(

4a
(6
12JJIIKE8\*,DAG[)!t@SV`@`0acnoE	
!TYY[5%8
9: 
j$	1E 
  L! $# 
 	 Ls   *E0F0
E>
Fc                     U u  p[        XS9$ )N)ri   )ru   )argsrN   ri   s      rO   run_experiments_helperrx      s     J*::    c                    [        [        XX#S95      nUS:X  a8  [        [        [        [	        U[
        R                  " U5      5      5      5      nOH[        U5       nUR                  [        [	        U[
        R                  " U5      5      5      nS S S 5        [        [	        UW5      5      $ ! , (       d  f       N#= f)N)rJ   rK   rL   rM   r   )listrP   maprx   zip	itertoolsrepeatr   )	rJ   rK   rL   rM   ri   nworkersexperiments_arroutpools	            rO   run_experimentsr      s    ;wFbcO1}3-s?IDTDTU^D_/`ab(^t((13	HXHXYbHc3deC OS)** ^s   5B//
B=c                    UR                  S5      u  p#  Sn[        R                  5          U[        ;  a	  / [        U'   [	        [        U   5      [
        :  a  SnO-[        R                  " 5       [        U   [
        *    -
  S:  a  Sn[        R                  5         U(       a  O[        R                  " S5        M  U R                  5       nSn[        R                  R                  U[        U5      S-   5      n[        R                  R                  U5      (       dT  [        R                  5          [        U   R                  [        R                  " 5       5        [        R                  5         [        R                  5          [         S-  q[#        5         [        R                  5         [%        XRXcS	9  [        R                  5          [&        S-  q[#        5         [        R                  5         U R)                  5         GM  ! [        R                  5         f = f! [        R                  5         f = f! [        R                  5         f = f! [        R                  5         f = f)
N:TF=      /tmprR   r   )ri   python_binary)splitworker_lockacquirehost_recordslenssh_conn_per_min_limitre   releasesleepgetrY   rZ   r[   rX   r\   append
total_sent__print_status__run_remote_experiment
total_done	task_done)qhosthostnamer   	all_clearrN   ri   ro   s           rO   __thread_workerr   
  s   "jjoH
 I!	&</-/L*|H-.1GG $IYY[<#9;Q:Q#RRUWW $I##%  JJqM) , UUW
 	WW\\)^J-G)-ST
ww~~j))!&X&--diik:##% 		"!OJ!
	g 		"!OJ!	o   ##%& ##% ! !s0   AH	 5+H" 	H; I 	H"H8;II*c                      [        S[         S[         S[         S[        [        -
   S3	SS9  [
        R                  R                  5         g )NzBenchmark task z of z done (z	 failed, z	 running))end)r`   r   nexperimentstotal_failedr   rb   rc   rd    ry   rO   r   r   G  sF    	
*T,w|nIV`cmVmUnnwx JJry   c                    Uq [        R                  " U5      n[        R                  " U5        [	        U5       H/  nUR                  S5      u  pE [        R                  " SUS/SS9  M1     [        R                  " [        U 5      5      n [        R                  " U 5        [        U 5      qS	qS	qS	q0 q[#        5       nU H)  n[%        [&        Xc4S
9nSUl        UR+                  5         M+     U  H  nUR-                  U5        M     UR/                  5         g! [        R                   a    [        SUS5           gf = f)a  Use ssh to run the experiments on remote machines in parallel.

Parameters
----------
experiments : iterable
    Output of shap.benchmark.experiments(...).

thread_hosts : list of strings
    Each host has the format "host_name:path_to_python_binary" and can appear multiple times
    in the list (one for each parallel execution you want on that machine).

rate_limit : int
    How many ssh connections we make per minute to each host (to avoid throttling issues).

r   sshz&pkill -f shap.benchmark.run_experiment   )timeoutzFailed to connect tozafter 15 seconds! Exiting.Nr   )targetrw   T)r   copyr/   shufflesetr   
subprocessrunTimeoutExpiredr`   r{   r   r   r   r   r   r   r
   r   r   daemonrq   putr[   )	rP   thread_hosts
rate_limitr   r   _r   workerrN   s	            rO   run_remote_experimentsr   O  s   " ( 99\*L
NN< L!jjo	NNE8-UV`bc " ))D-.K
NN;{#LJJLLAaY? 
 "
	j " FFH/ (( 	((4PQ	s   D!D>=D>c                    U u  pEpg[        U 5      n[        R                  R                  X(S-   5      n	[        R                  R	                  U	5      (       a,  [        U	S5       n
[        R                  " U
5      sS S S 5        $ [        R                  " [        R                  " SS5      5        SU SU SU SU SU S3nS	U-   S
U SU SU S3-   n [        R                  " SX/5        [        R                  " SUS-   U	-   U	/5        [        R                  R	                  U	5      (       a,  [        U	S5       n
[        R                  " U
5      sS S S 5        $ ['        S5      e! , (       d  f       N= f! [        R                   aR  n[        SU S3[         R"                  S9  [        U[         R"                  S9  [$        S-  q[        U5         S nAg S nAff = f! , (       d  f       g = f)NrR   rS   r   r   z shap.benchmark.run_experiment(['z', 'z'], cache_dir='z')zCUDA_VISIBLE_DEVICES="" z -c "import shap; z" &> /z.outputr   z The following command failed on r   )filer   scpz;Remote benchmark call finished but no local file was found!)rX   rY   rZ   r[   r\   r]   r^   r_   re   r   r/   uniformr   check_outputCalledProcessErrorr`   rb   stderrr   FileNotFoundError)rN   remoteri   r   rj   rk   rl   rm   rn   ro   rp   funccmdes                 rO   r   r     s   9C6Lk j)HiI)=>J	ww~~j!!*d#q;;q> $# 	JJv~~a#$ .l^4
|4P[}\`al`mm|  ~G  }H  HJ  KD
$}
49KD6QVW`Vaabckblls7t
tC 45 UFSL:$=zJK	ww~~j!!*d#q;;q> $#   ]^^7 $# (( 0:Lc

#a $#s1   #E%E6 :G%
E36G
AGG
G-c                 B    U u  pp4SSR                  [        XX4/5      -   $ )NvrT   )r[   r   )rN   rj   rk   rl   rm   s        rO   rX   rX     s'    9C6LkK;\]]]ry   )NNNN)Tr   )NNNNr   r   )
   )r   python)0r   r~   rY   r^   r/   r   rb   re   multiprocessingr    r   r   r   r	   queuer
   ImportError	threadingr   r   regression_metricsbinary_classification_metricshuman_metricslinear_regress_methodslinear_classify_methodstree_regress_methodsrf_regress_methodstree_classify_methodsdeep_regress_methodsdeep_classify_methodsrI   rP   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   rX   )sms   00rO   <module>r      s     	    
    $  # 0! 0   &   $    :Lm:LQVlQR.'10Vl0:Lm m :Lm:LQVlQR.'10Vl0:Lm m BTsBTQ^rYZ./18^r8BTs s "%77 _a+7 , 
 8Ji8J1Thq.%.Th.8Ji i 9Kj9KAUiPQ.&!/Ui/9Kj j AStASA]sXY'!7]s7ASt t AStASA]sXY'!7]s7ASt t <N<NqXlSTOQ2Xl2<N  "%77 OQ27 3 
 ?Qp?Q![oVW'5[o5?Qp p @Rq@R1\pWX'6\p6@Rq q 2Oq2OQYpTU&'1(Yp(2Oq q 2Oq2OQYpTU&'1(Yp(2Oq q :Ww:WQav\]&/10av0:Ww w :Ww:WQav\]&/10av0:Ww w 0Mm0M1WlRS&%&Wl&0Mm m 1Nn1NAXmST&&!'Xm'1Nn n =g=aRfQ'?A1Rf1=g g
4;
+ 

f :z2j#_L^u  r nms
 jjtt
 qqqqwwmngs   M- 5N N?N$NN1NN$;N* N0N6-N<O7OOO&OO 0O&O,-M=<M=