ó
    †ñ:iÃ  ã                   ó@   • S SK r SSKJr  SSKJr   " S S\5      rS rg)	é    Né   )ÚInvalidMaskerErroré   )ÚMaskerc                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
Ú	Compositeé   zxThis merges several maskers for different inputs together into a single composite masker.

This is not yet implemented.
c                 óœ  • Xl         / U l        SU l        SU l        SU l        SnU R                    Hð  nUR
                  R                  R                  nUR
                  R                  b   [        UR
                  R                  5      nOSnXE-
  S-
  nU R                  R                  U5        U =R                  U-  sl        [        US5      (       d  SnU R                  =(       d    [        USS5      U l        U R                  =(       d    [        USS5      U l        Mò     U(       a!  [        R                  " [        U 5      U l        g g )Nr   FTr   Ú
clusteringÚ	text_dataÚ
image_data)ÚmaskersÚ
arg_countsÚ
total_argsr   r   Ú__call__Ú__code__Úco_argcountÚ__defaults__ÚlenÚappendÚhasattrÚgetattrÚtypesÚ
MethodTypeÚjoint_clusteringr   )Úselfr   Úall_have_clusteringÚmaskerÚall_argsÚkwargsÚnum_argss          ÚZ/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/shap/maskers/_composite.pyÚ__init__ÚComposite.__init__   s  € ØŒàˆŒØˆŒØˆŒØˆŒØ"ÐØ—l”lˆFØ—‘×/Ñ/×;Ñ;ˆHà�‰×+Ñ+Ñ7Ü˜VŸ_™_×9Ñ9Ó:‘à�ØÑ(¨1Ñ,ˆHØ�O‰O×"Ñ" 8Ô,Ø�OŠO˜xÑ'�Oä˜6 <×0Ñ0Ø&+Ð#à!Ÿ^™^×R¬w°v¸{ÈEÓ/RˆDŒNØ"Ÿo™o×U´¸ÀÈuÓ1UˆDŽOñ #ö" Ü#×.Ò.Ô/?ÀÓFˆD�Oð ó    c                 ó�  • [        U5      U R                  :X  d   S5       eSnSnSn[        U R                  5       H…  u  pV[	        UR
                  5      (       a!  UR
                  " XX@R                  U   -    6 nOUR
                  nUc  US   nOUS   S:X  d  X'S   :X  d   S5       eX7S   -  nX@R                  U   -  nM‡     X#4$ )zICompute the shape of this masker as the sum of all the sub masker shapes.ú'The number of passed args is incorrect!Nr   r   zIAll submaskers of a Composite masker must return the same number of rows!)r   r   Ú	enumerater   ÚcallableÚshaper   )r   ÚargsÚrowsÚcolsÚposÚir   r*   s           r"   r*   ÚComposite.shape)   sÔ   € ä�4‹y˜DŸO™OÓ+ÐVÐ-VÓVÐ+àˆØˆØˆÜ" 4§<¡<Ö0‰IˆAÜ˜Ÿ™×%Ñ%ØŸš d°·±ÀqÑ7IÑ1IÐ&JÐK‘àŸ™�Ø‰|Ø˜Q‘x‘à˜Q‘x 1“}¨°a±Ó(8ð Ø_óÐ8ð ˜!‘HÑˆDØ—?‘? 1Ñ%Ñ%ŠCñ 1ð ˆzÐr%   c           
      ó¨   • / nSn[        U R                  5       H4  u  pEUR                  UR                  " XX0R                  U   -    6 5        M6     U$ )z!The shape of the masks we expect.r   )r(   r   ÚextendÚmask_shapesr   )r   r+   Úoutr.   r/   r   s         r"   r3   ÚComposite.mask_shapes?   sN   € àˆØˆÜ" 4§<¡<Ö0‰IˆAØ�J‰J�v×)Ò)¨4°c¿O¹OÈAÑ<NÑ6NÐ+OÐPÖQñ 1àˆ
r%   c                 ó  • Sn/ n[        U R                  5       Hj  u  pEXX R                  U   -    n[        US5      (       a  UR	                  UR
                  " U6 5        OUR	                  U5        X R                  U   -  nMl     U$ )zTransform the argumentr   Údata_transform)r(   r   r   r   r2   r7   )r   r+   Úarg_posr4   r/   r   Úmasker_argss          r"   r7   ÚComposite.data_transformG   s€   € àˆØˆÜ" 4§<¡<Ö0‰IˆAØ¨·?±?À1Ñ3EÑ)EÐFˆKÜ�vÐ/×0Ñ0Ø—
‘
˜6×0Ò0°+Ð>Õ?à—
‘
˜;Ô'Ø—‘ qÑ)Ñ)ŠGñ 1ð ˆ
r%   c                 óž  ^• U R                   " U/UQ76 n[        U5      U R                  :X  d   S5       eSn/ nS m[        U R                  5       HÌ  u  pVX#X0R
                  U   -    n[        UR                  5      (       a  UR                  UR                  " U6 5        OUR                  UR                  5        Tc	  US   S   mOTS:X  a  US   S   b  US   S   mUS   S   T:w  a   US   S   S:w  a  US   S   b  [        S5      eX0R
                  U   -  nMÎ     SnSn/ n	[        U R                  5       H…  u  pVX#X0R
                  U   -    nU" XX„U   S   -    /UQ76 n
TS:”  a(  XE   S   S:X  d  XE   S   c  [        U4S jU
 5       5      n
U	R                  U
5        X„U   S   -  nX0R
                  U   -  nM‡     [        U	5      $ )Nr'   r   éÿÿÿÿr   z`The composite masker can only join together maskers with a compatible number of background rows!c              3   ój   >#   • U  H#  n[        T5       Vs/ s H  o!S    PM	     snv •  M%     gs  snf 7f)r   N)Úrange)Ú.0ÚmÚ_Únum_rowss      €r"   Ú	<genexpr>Ú%Composite.__call__.<locals>.<genexpr>w   s)   øé € Ð"WÊJÀq´%¸´/Ó#B²/¨Q a¤D±/Ö#BÊJùÒ#Bùs   ƒ3–.¤3)Ú_standardize_maskr   r   r(   r   r   r)   r*   r   r   Útupler2   )r   Úmaskr+   r8   Úshapesr/   r   r9   Úmask_posÚmaskedÚ
masked_outrB   s              @r"   r   ÚComposite.__call__U   sê  ø€ Ø×%Ò% dÐ2¨TÒ2ˆÜ�4‹y˜DŸO™OÓ+ÐVÐ-VÓVÐ+ð ˆØˆØˆÜ" 4§<¡<Ö0‰IˆAØ¨·?±?À1Ñ3EÑ)EÐFˆKÜ˜Ÿ™×%Ñ%Ø—‘˜fŸlšl¨KÐ8Õ9à—‘˜fŸl™lÔ+àÑØ! "™: a™=‘Ø˜Q“ 6¨"¡:¨a¡=Ñ#<Ø! "™: a™=�à�b‰z˜!‰} Ó(¨V°B©Z¸©]¸aÓ-?ÀFÈ2ÁJÈqÁMÑD]Ü(Øvóð ð —‘ qÑ)Ñ)ŠGñ! 1ð& ˆØˆØˆÜ" 4§<¡<Ö0‰IˆAØ¨·?±?À1Ñ3EÑ)EÐFˆKÙ °À!¹9ÀQ¹<Ñ0GÐ HÐWÈ;ÒWˆJØ˜!‹| ¡¨1¡°Ó!2°f±iÀ±lÑ6JÜ"Ô"WÉJÓ"WÓW�
Ø�M‰M˜*Ô%à˜q™	 !™Ñ$ˆHØ—‘ qÑ)Ñ)ŠGñ 1ô �V‹}Ðr%   )r   r   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r#   r*   r3   r7   r   Ú__static_attributes__© r%   r"   r   r      s!   † ñò
Gò8ò,òõ(r%   r   c                 ó6  • / nSn[        U R                  5       H{  u  pEXX0R                  U   -    n[        UR                  5      (       a  UR                  " U6 nOUR                  n[        U5      S:X  a  UnMa  [        U5      S:w  d  Mr  [        S5      e   U$ )zLReturn a joint clustering that merges the clusterings of all the submaskers.r   zSJoining two non-trivial clusterings is not yet implemented in the Composite masker!)r(   r   r   r)   r   r   ÚNotImplementedError)r   r+   Úsingle_clusteringr8   r/   r   r9   r   s           r"   r   r   €   sœ   € àÐØ€GÜ˜tŸ|™|Ö,‰	ˆØ W¯©¸qÑ/AÑ%AÐBˆÜ�F×%Ñ%×&Ñ&Ø×*Ò*¨KÐ8‰Jà×*Ñ*ˆJäÐ Ó! QÓ&Ø *ÒÜ�‹_ Õ!Ü%Øeóð ñ -ð Ðr%   )r   Úutils._exceptionsr   Ú_maskerr   r   r   rS   r%   r"   Ú<module>rY      s"   ðÛ å 2Ý ôv�ô vórr%   