+
    œ°³j~!  ã                   ó\   € R t ^RIHt ^RIHt ^RIHt . ROt] ! R R]4      4       tR.t	R# )z
Processor class for EVOLLA.
)ÚBatchFeature)ÚProcessorMixin)Úauto_docstringc                   ó®   a a€ ] tR t^t oRV 3R lltRR ltRV3R lR llt]RV3R lR ll4       tRV3R lR llt	RV3R	 lR
 llt
R tR tRtVtV ;t# )ÚEvollaProcessorc                óœ   <€ Vf   \        R4      hVf   \        R4      h\        SV `	  W4       RV P                  n        W0n        W@n        R# )aQ  
protein_tokenizer (`EsmTokenizer`):
    An instance of [`EsmTokenizer`]. The protein tokenizer is a required input.
protein_max_length (`int`, *optional*, defaults to 1024):
    The maximum length of the sequence to be generated.
text_max_length (`int`, *optional*, defaults to 512):
    The maximum length of the text to be generated.
Nz+You need to specify an `protein_tokenizer`.z"You need to specify a `tokenizer`.z<|reserved_special_token_0|>)Ú
ValueErrorÚsuperÚ__init__Ú	tokenizerÚ	pad_tokenÚprotein_max_lengthÚtext_max_length)ÚselfÚprotein_tokenizerr   r   r   ÚkwargsÚ	__class__s   &&&&&,€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/evolla/processing_evolla.pyr
   ÚEvollaProcessor.__init__   sO   ø€ ð Ò$ÜÐJÓKÐKØÒÜÐAÓBÐBä‰ÑÐ*Ô6à#Aˆ�‰Ô Ø"4ÔØ.Öó    c           
     ó\  € . pV F‡  pVP                  R 4      pVP                  R4      pRP                  \        WV4       UUu. uF*  w  rxVP                  4       VP	                  4       ,           NK,  	  upp4      p	VP                  V	4       K‰  	  V P                  VRRVRR7      p
V
# u uppi )Úaa_seqÚfoldseekÚ ÚptT)Úreturn_tensorsÚ
truncationÚ
max_lengthÚpadding)ÚgetÚjoinÚzipÚupperÚlowerÚappendr   )r   Úproteinsr   Úsa_sequencesÚproteinr   r   ÚsÚfÚsa_sequenceÚ	sa_tokenss   &&&        r   Úprocess_proteinsÚ EvollaProcessor.process_proteins0   s§   € ØˆÛˆGØ—[‘[ Ó*ˆFØ—{‘{ :Ó.ˆHØŸ'™'ÄSÈÔEZÔ"[ÑEZ¹T¸Q 1§7¡7£9¨q¯w©w«y×#8Ð#8ÑEZÒ"[Ó\ˆKØ×Ñ Ö,ñ	  ð ×*Ñ*Ø¨¸$ÐK]Ðgkð +ó 
ˆ	ð Ðùó #\s   Á0B(c                ó    <€ V ^8„  d   QhRS[ /# )é   r   )Úint)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚEvollaProcessor.__annotate__=   s   ø€ ÷ ñ ñ ñr   c           	     ó¨   € . pV F2  pV P                   P                  VR RR7      pVP                  V4       K4  	  V P                  VR RRRVR7      pV# )FT)ÚtokenizeÚadd_generation_promptr   Úlongest)Úadd_special_tokensr   r   r   r   )r   Úapply_chat_templater$   )r   Útextsr   ÚpromptsÚmessagesÚpromptÚprompt_inputss   &&&    r   Úprocess_textÚEvollaProcessor.process_text=   sr   € ð
 ˆÛˆHØ—^‘^×7Ñ7ØØØ&*ð 8ó ˆFð
 �N‰N˜6Ö"ñ ð Ÿ™ØØ$ØØØØ&ð 'ó 
ˆð Ðr   c          	      óÊ   <€ V ^8„  d   QhRS[ S[,          S[,          R,          RS[ S[ S[,          ,          S[ S[,          ,          R,          RS[R,          RS[R,          /# )r/   r%   NÚmessages_listr   r   )ÚlistÚdictr0   )r1   r2   s   "€r   r3   r4   V   s`   ø€ ÷ 0
ñ 0
á‘t•*™tÕ# dÕ*ð0
ñ ™D¡�JÕ'©$©t­*Õ4°tÕ;ð0
ñ   $�Jð	0
ñ
 ˜t�ñ0
r   c                ó\  € Ve   Vf   \        R4      hVe   TMV P                  pVe   TMV P                  pV P                  W4      w  rV P	                  W4       V P                  W4      pV P                  W$4      p\        RVR,          RVR,          RVR,          RVR,          /R7      # )a  
proteins (`Union[List[dict], dict]`):
    A list of dictionaries or a single dictionary containing the following keys:
        - `"aa_seq"` (`str`) -- The amino acid sequence of the protein.
        - `"foldseek"` (`str`) -- The foldseek string of the protein.
messages_list (`Union[List[List[dict]], List[dict]]`):
    A list of lists of dictionaries or a list of dictionaries containing the following keys:
        - `"role"` (`str`) -- The role of the message.
        - `"content"` (`str`) -- The content of the message.
protein_max_length (`int`, *optional*, defaults to 1024):
    The maximum length of the sequence to be generated.
text_max_length (`int`, *optional*, defaults to 512):
    The maximum length of the text.

Return:
    a dict with following keys:
        - `protein_input_ids` (`torch.Tensor` of shape `(batch_size, sequence_length)`) -- The input IDs for the protein sequence.
        - `protein_attention_mask` (`torch.Tensor` of shape `(batch_size, sequence_length)`) -- The attention mask for the protein sequence.
        - `text_input_ids` (`torch.Tensor` of shape `(batch_size, sequence_length)`) -- The input IDs for the text sequence.
        - `text_attention_mask` (`torch.Tensor` of shape `(batch_size, sequence_length)`) -- The attention mask for the text sequence.
z3You need to specify `messages_list` and `proteins`.Úprotein_input_idsÚ	input_idsÚprotein_attention_maskÚattention_mask)Údata)r   r   r   Úprepare_inputs_layoutÚvalidate_inputsr,   r@   r   )r   r%   rC   r   r   r   r+   Útext_tokenss   &&&&&,  r   Ú__call__ÚEvollaProcessor.__call__U   s¿   € ð> Ò˜}Ò4ÜÐRÓSÐSà3EÒ3QÑ/ÐW[×WnÑWnÐØ-<Ò-H™/Èd×NbÑNbˆØ"&×"<Ñ"<¸XÓ"UÑˆØ×Ñ˜XÔ5à×)Ñ)¨(ÓGˆ	Ø×'Ñ'¨ÓGˆäà# Y¨{Õ%;Ø(¨)Ð4DÕ*EØ˜[¨Õ5Ø  +Ð.>Õ"?ð	ô
ð 	
r   c                ó¢   <€ V ^8„  d   QhRS[ S[,          S[,          R,          RS[ S[ S[,          ,          S[ S[,          ,          R,          /# ©r/   r%   NrC   ©rD   rE   )r1   r2   s   "€r   r3   r4   ˆ   sD   ø€ ÷ 'ñ 'á‘t•*™tÕ# dÕ*ð'ñ ™D¡�JÕ'©$©t­*Õ4°tÕ;ñ'r   c                ó¾   € \        V\        4      '       d   V.p\        V\        \        34      '       d'   \        V^ ,          \        \        34      '       g   V.pW3# )é    )Ú
isinstancerE   rD   Útuple)r   r%   rC   r   s   &&&,r   rL   Ú%EvollaProcessor.prepare_inputs_layoutˆ   sR   € ô �h¤×%Ò%Ø �zˆHä�m¤d¬E ]×3Ò3¼JÀ}ÐUVÕGWÔZ^Ô`eÐYf×<gÒ<gØ*˜OˆMØÐ&Ð&r   c                ó¢   <€ V ^8„  d   QhRS[ S[,          S[,          R,          RS[ S[ S[,          ,          S[ S[,          ,          R,          /# rR   rS   )r1   r2   s   "€r   r3   r4   –   sD   ø€ ÷ $ñ $á‘t•*™tÕ# dÕ*ð$ñ ™D¡�JÕ'©$©t­*Õ4°tÕ;ñ$r   c                ó.  € \        V\        \        34      '       dF   \        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \	        R4      h\        V\        \        34      '       d_   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g%   \	        RRP                  \        4       RV 24      h\        V\        \        34      '       Ed   V Fþ  p\        V\        \        34      '       g   \        R\        V4       R	24      h\        ;QJ d    R
 V 4       F  '       d   K   RM	  RM! R
 V 4       4      '       g   \	        R4      h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g=   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   Kò  \	        RV 24      h	  R# \	        R\        V4       R	24      h)c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5i©N©rV   rE   ©Ú.0Úps   & r   Ú	<genexpr>Ú2EvollaProcessor.validate_inputs.<locals>.<genexpr>�   s   é € Ð:aÑX`ÐST¼:ÀaÌ×;NÐ;NÓX`ùó   ‚FTzUThe proteins should be a list of dictionaries, but not all elements are dictionaries.c              3   óÂ   "  € T FU  p\         ;QJ d*    R  VP                  4        4       F  '       d   K   RM	  RM! R  VP                  4        4       4      x € KW  	  R# 5i)c              3   ó2   "  € T F  q\         9   x € K  	  R # 5ir\   )ÚPROTEIN_VALID_KEYS)r_   Úks   & r   ra   Ú<EvollaProcessor.validate_inputs.<locals>.<genexpr>.<genexpr>    s   é € Ð:±¨AÔ'Ö'³ùs   ‚FTN)ÚallÚkeysr^   s   & r   ra   rb   Ÿ   s=   é € ð ;
ÙDL¸q�C‹CÑ:°·±´Ó:�C�CŠCÑ:°·±´Ó:×:Ð:ÃHùs   ‚A’A´+Az2There should be a list of dictionaries with keys: z, z for each protein.But got: z;Each messages in messages_list should be a list instead of Ú.c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5ir\   r]   ©r_   Úms   & r   ra   rb   ¬   s   é € ÐA¹°1œ: a¬×.Ð.»ùrc   zfEach message in messages_list should be a list of dictionaries, but not all elements are dictionaries.c              3   óZ   "  € T F!  p\        VP                  4       4      ^8g  x € K#  	  R# 5i)r/   N)Úlenrj   rm   s   & r   ra   rb   °   s   é € Ð<±8¨a”s˜1Ÿ6™6›8“}¨Ö)³8ùs   ‚)+c              3   ó^   "  € T F#  p\        VP                  4       4      R R08g  x € K%  	  R# 5i)ÚroleÚcontentN)Úsetrj   rm   s   & r   ra   rb   °   s(   é € ð DÙBJ¸Q”C˜Ÿ™›“M f¨iÐ%8Ö8Ã(ùs   ‚+-zlEach message in messages_list should be a list of dictionaries with two keys: 'role' and 'content'.But got: zFThe messages_list should be a list of lists of dictionaries, but it's N)
rV   rD   rW   ri   r   r    rf   Ú	TypeErrorÚtypeÚany)r   r%   rC   r   r=   s   &&&, r   rM   ÚEvollaProcessor.validate_inputs–   sÌ  € ô �h¤¤u ×.Ò.·s³sÑ:aÑX`Ó:a·s·s²sÑ:aÑX`Ó:a×7aÒ7aÜÐtÓuÐuÜ�h¤¤u ×.Ò.·s³sñ ;
ÙDLó;
·s·s²sñ ;
ÙDLó;
÷ 8
ò 8
ô ØDØ—9‘9Ô/Ó0Ð1ð 2Ø$˜:ð'óð ô �m¤d¬E ]×3Ó3Û)�Ü! (¬T´5¨M×:Ò:Ü#Ð&aÔbfÐgoÓbpÐaqÐqrÐ$sÓtÐtß“sÑA¹ÓA—s—s’sÑA¹ÓA×AÒAÜ$ð Aóð ÷ “3Ñ<±8Ó<—3—3’3Ñ<±8Ó<×<Ò<ÇÃñ DÙBJóDÇÇÂñ DÙBJóD÷ Aô Aô %ð$Ø$, :ð/óð ó *ô ØXÔY]Ð^kÓYlÐXmÐmnÐoóð r   c                ó:   € V P                   P                  ! V/ VB # r\   )r   Úbatch_decode©r   Úargsr   s   &*,r   Úprotein_batch_decodeÚ$EvollaProcessor.protein_batch_decode¼   s   € Ø×%Ñ%×2Ò2°DÐC¸FÑCÐCr   c                ó:   € V P                   P                  ! V/ VB # r\   )r   Údecoder{   s   &*,r   Úprotein_decodeÚEvollaProcessor.protein_decode¿   s   € Ø×%Ñ%×,Ò,¨dÐ=°fÑ=Ð=r   )r   r   )Né   é   )rƒ   )r„   )NNNN)NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r
   r,   r@   r   rO   rL   rM   r}   r�   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   r2   s   @@r   r   r      sX   ù‡ € ÷/ô(÷ò ð0 ÷0
ñ 0
ó ð0
÷d'ò '÷$ò $òLD÷>ò >r   r   N)r   r   Úmsa)
Ú__doc__Úfeature_extraction_utilsr   Úprocessing_utilsr   Úutilsr   rf   r   Ú__all__© r   r   Ú<module>r“      sF   ðñõ 5Ý .Ý #ò 3Ð ð ôe>�nó e>ó ðe>ðP Ð
‚r   