ó
    †ñ:iµ6  ã            
       óä  • 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        Ú]/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/shap/benchmark/experiments.pyÚexperimentsrP   Ë   s]   é € ß"ˆ
ØÑ 7¸©mÓ#;ÙØÑ °Q©-Ó!7ÙØÑ &°q©MÓ"9ÙØÑ &°q©MÓ"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$                  " XÙ5        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Ñ6€L˜kô ˜jÓ)€HÜ—‘—‘˜i°IÑ)=Ó>€JÞ”R—W‘W—^‘^ J×/Ñ/Ü�*˜dÔ# qä—;’;˜q“>÷ $Ñ#ô
 
ˆ(×
Ñ
˜4  aÓ
(¨6Ñ
1Ô2Ü‡J�J×ÑÔÜ�IŠI‹K€EÜ”8˜\Ô*Ó,�D€AÜ”G˜[Ô)¨!´¼ÀÈtÑ@SÐV`Ñ@`Ó0aÐcnÓo€EÜ	Ð
!¤T§Y¢Y£[°5Ñ%8Ñ
9Ô:ô 
ˆj˜$Ô	 1Ü�Š�EÔ÷ 
 ð €L÷! $Õ#ú÷ 
 Ô	ð €Lús   Á*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‹   € Üœ;¨wÈFÑbÓc€OØ�1ƒ}Ü”3Ô-¬s°?ÄI×DTÒDTÐU^ÓD_Ó/`ÓaÓb‰ä�(Œ^˜tØ—(‘(Ô1´3°Ì	×HXÒHXÐYbÓHcÓ3dÓeˆC÷ ä”�O SÓ)Ó*Ð*÷ �^ú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Ô  € à"Ÿj™j¨›oÑ€HØ
ð ØˆIä×ÑÔ!ð	&Ø¤<Ó/Ø-/”L Ñ*ä”| HÑ-Ó.Ô1GÓGØ $‘IÜ—Y’Y“[¤<°Ñ#9Ô;QÐ:QÑ#RÑRÐUWÓWØ $�Iä×#Ñ#Ô%ö Øô �JŠJ�qŒMñ) ð, —U‘U“Wˆ
ð ˆ	Ü—W‘W—\‘\ )¬^¸JÓ-GÈ)Ñ-SÓTˆ
Ü�w‰w�~‰~˜j×)Ñ)Ü×ÑÔ!ð&Ü˜XÑ&×-Ñ-¬d¯iªi«kÔ:ä×#Ñ#Ô%ô 	×ÑÔð	"Ü˜!‰OˆJÜÔä×ÑÔ!ä 
À	Ògô 	×ÑÔð	"Ü˜!‰OˆJÜÔä×ÑÔ!à	�‰Œò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¼|¸nÈIÔV`ÔcmÑVmÐUnÐnwÐxØòô ‡J�J×ÑÕ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  € ð" (Ðô —9’9˜\Ó*€LÜ
‡N‚N�<Ô Ü�LÖ!ˆØ—j‘j “o‰ˆð	Ü�NŠN˜E 8Ð-UÐVÐ`bÔcñ "ô —)’)œD Ó-Ó.€KÜ
‡N‚N�;Ôä�{Ó#€LØ€JØ€JØ€LØ€Lä‹€AãˆÜœ°a°YÑ?ˆØˆŒØ�‰Žñ ó
 "ˆ
Ø	�‰ˆjÖñ "ð ‡F�F…Høô/ ×(Ñ(ó 	ÜÐ(¨(Ð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Ñ6€L˜kô ˜jÓ)€HÜ—‘—‘˜i°IÑ)=Ó>€JÜ	‡w�w‡~�~�j×!Ñ!Ü�*˜dÔ# qÜ—;’;˜q“>÷ $Ñ#ô 	‡J‚JŒv�~Š~˜a Ó#Ô$ð .¨l¨^¸4À
¸|È4ÐP[È}Ð\`ÐalÐ`mÐm|ð  ~Gð  }Hð  HJð  K€DØ
$ }Ñ
4Ð9KÈDÈ6ÐQVÐW`ÐVaÐabÐckÐblÐlsÐ7tÑ
t€CðÜ×Ò ¨Ð 4Ô5ô ×Ò˜U F¨S¡L°:Ñ$=¸zÐJÔKä	‡w�w‡~�~�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Ñ6€L˜kØ�—‘œ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Ò:L°QÔVlÐQR�. '¨1Ó0ÑVlÑ0Ñ:LÒmÑ m€Ø Ñ:LÔmÒ:L°QÔVlÐQR�. '¨1Ó0ÑVlÑ0Ñ:LÒmÑ m€Ø ÑBTÔsÒBT¸QÔ^rÐYZ�. /°1Ó8Ñ^rÑ8ÑBTÒsÑ s€Ø áôâˆØ"Ð%7Õ7ˆð �_ aÓ+á7ñ ,Ùòñ €ð
 Ñ8JÔiÒ8J°1ÔThÈq�. %¨Ó.ÑThÑ.Ñ8JÒiÑ i€Ø Ñ9KÔjÒ9K°AÔUiÐPQ�. &¨!Ó/ÑUiÑ/Ñ9KÒjÑ j€à ÑASÔtÒAS¸AÔ]sÐXYÐ'¨°!Ó7Ñ]sÑ7ÑASÒtÑ t€Ø ÑASÔtÒAS¸AÔ]sÐXYÐ'¨°!Ó7Ñ]sÑ7ÑASÒtÑ t€Ø Ù<NôÚ<N°qÔXlÐSTÐ˜O¨QÓ2ÑXlÑ2Ñ<Nòñ €ð áôâˆØ"Ð%7Õ7ˆð ˜O¨QÓ2á7ñ 3Ùòñ €ð
 Ñ?QÔpÒ?Q¸!Ô[oÐVWÐ'¨°Ó5Ñ[oÑ5Ñ?QÒpÑ p€Ø Ñ@RÔqÒ@R¸1Ô\pÐWXÐ'¨°Ó6Ñ\pÑ6Ñ@RÒqÑ q€à Ñ2OÔqÒ2O¨QÔYpÐTU�&˜' 1Ó(ÑYpÑ(Ñ2OÒqÑ q€Ø Ñ2OÔqÒ2O¨QÔYpÐTU�&˜' 1Ó(ÑYpÑ(Ñ2OÒqÑ q€Ø Ñ:WÔwÒ:W°QÔavÐ\]�&˜/¨1Ó0ÑavÑ0Ñ:WÒwÑ w€Ø Ñ:WÔwÒ:W°QÔavÐ\]�&˜/¨1Ó0ÑavÑ0Ñ:WÒwÑ w€Ø Ñ0MÔmÒ0M¨1ÔWlÐRS�&˜% Ó&ÑWlÑ&Ñ0MÒmÑ m€Ø Ñ1NÔnÒ1N¨AÔXmÐST�&˜& !Ó'ÑXmÑ'Ñ1NÒnÑ n€à ¹=Ôgº=°aÔRfÈQ�'˜?¨AÓ1ÑRfÑ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=