+
    œ°³jÚ,  ã                   ó*  € R t ^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIH	t	 ^ RI
t^RIHt ]]]P                  3,          t]]]	3,          tRt]P&                  ! RR7       ! R R	4      4       tR
 R ltRR R lltR R ltR R ltR R ltRR R lltR# )zProtein data type.N)ÚIteratorÚMappingÚSequence)ÚAny)Úresidue_constantsg{®Gáz„?T)Úfrozenc                   ó@   a € ] tR t^"t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚProteinz!Protein structure representation.Nc                óV  <€ V ^8„  d   Qh/ S[ P                  ;R&   S[ P                  ;R&   S[ P                  ;R&   S[ P                  ;R&   S[ P                  ;R&   S[ P                  R,          ;R&   S[R,          ;R&   S[S[,          R,          ;R	&   S[S[,          R,          ;R
&   # )é   Úatom_positionsÚaatypeÚ	atom_maskÚresidue_indexÚ	b_factorsNÚchain_indexÚremarkÚparentsÚparents_chain_index)ÚnpÚndarrayÚstrr   Úint)ÚformatÚ__classdict__s   "€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/esm/openfold_utils/protein.pyÚ__annotate__ÚProtein.__annotate__"   s±   ø‡ ‚ ñ —J‘JÑñ ñ �J‰JÑñ ñ �z‰zÑñ ñ" —:‘:Ññ# ñ, �z‰zÑñ- ñ2 —‘˜dÕ"Ñ)ñ3 ñ: �$�JÑñ; ñ@ ‘c�]˜TÕ!Ñ(ñA ñF "¡#�¨Õ-Ñ4òG ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r	   r	   "   s-   ø‡ € á+ð. &*€Kð €Fð %)€Gð 15Ð÷G ƒ r   r	   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úproteinnet_strÚreturn)r   r	   )r   s   "r   r   r   H   s   € ÷ .ñ .¬3ð .´7ñ .r   c                 ó\  € R p\         P                  ! W4       Uu. uF%  p\        V4      ^ 8”  g   K  VP                  4       NK'  	  pp\	        VR,          VR,           Uu. uF  qDP                  R4      NK  	  up4      p. ROpRpRpRp	V EFÖ  p
V
^ ,          R8X  dš   V
^,          ^ ,          P                  4       pV Uu. uF  qÌ\
        P                  9   d   TMRNK  	  pp\        P                  ! V Uu. uF1  p\
        P                  P                  V\
        P                  4      NK3  	  up4      pK«  V
^ ,          R8X  Ed,   . p\        ^4       FG  pVP                  \        \        \         V
^,          V,          P                  4       4      4      4       KI  	  \        P                  ! V4      p\        P"                  ! \        V^ ,          4      ^,          \
        P$                  ^34      P'                  \        P(                  4      p\+        V4       FC  w  pp\        P,                  ! VRVR^13,          4      VR\
        P.                  V,          R3&   KE  	  V\0        ,          pEKå  V
^ ,          R	8X  g   EKö  \        P                  ! \        \        R
^ R^/P                  V
^,          ^ ,          P                  4       4      4      4      p\        P"                  ! \        V4      \
        P$                  34      P'                  \        P(                  4      p	\+        V4       F"  w  pp^V	R\
        P.                  V,          3&   K$  	  V	VR,          ,          p	EKÙ  	  Vf   Q h\3        VV	V\        P4                  ! \        V4      4      RR7      # u upi u upi u upi u upi )z(\[[A-Z]+\]\n):é    Nr   :é   Nr   Ú
Nz	[PRIMARY]ÚXz
[TERTIARY]:NNNz[MASK]Ú-Ú+)r   r   r   r   r   )ÚNÚCAÚC).N)ÚreÚsplitÚlenÚstripÚzipr   Úrestypesr   ÚarrayÚrestype_orderÚgetÚrestype_numÚrangeÚappendÚlistÚmapÚfloatÚzerosÚatom_type_numÚastypeÚfloat32Ú	enumerateÚ	transposeÚ
atom_orderÚPICO_TO_ANGSTROMr	   Úarange)r)   Útag_reÚtagÚtagsÚlÚgroupsÚatomsr   r   r   ÚgÚseqÚcharÚ
res_symbolÚtertiaryÚaxisÚtertiary_npÚiÚatomÚmasks   &                   r   Úfrom_proteinnet_stringr]   H   sþ  € Ø€FÜ.0¯hªh°vÔ.NÓ_Ñ.N sÔRUÐVYÓRZÐ]^ÑR^”{�s—y‘y–{Ñ.N€DÐ_Ü.1°$°tµ*ÐVZÐ[_ÖV`Ó>aÑV`ÐQR¿w¹wÀt¾}ÑV`Ñ>aÓ.b€Fâ'€EØ€FØ€NØ€IÜˆØˆQ�4�;ÔØ�A•$�q•'—-‘-“/ˆCáSVÓWÑSVÈ4Ô#4×#=Ñ#=Ô=‘4À3ÒFÑSVˆCÐWÜ—X’XÙruÓvÑruÐdnÔ"×0Ñ0×4Ñ4°ZÔAR×A^ÑA^Ö_ÑruÑvóŠFð ˆq�T�\Õ!Ø*,ˆHÜ˜až�Ø—‘¤¤S¬°°!µ°Tµ
×0@Ñ0@Ó0BÓ%CÓ DÖEñ !äŸ(š( 8Ó,ˆKÜŸXšX¤s¨8°A­;Ó'7¸1Õ'<Ô>O×>]Ñ>]Ð_`Ð&aÓb×iÑiÔjl×jtÑjtÓuˆNÜ$ UÖ+‘��4ÜKMÏ<Ê<ÐXcÐdeÐghÐgkÐjkÐgkÐdkÕXlÓKm�˜qÔ"3×">Ñ">¸tÕ"DÀaÐGÓHñ ,àÔ.Õ.‹NØˆq�T�X×Ü—8’8œD¤ c¨1¨c°1Ð%5×%9Ñ%9¸1¸Q½4À½7¿=¹=»?Ó!KÓLÓMˆDÜŸšä˜“IÜ%×3Ñ3ðó÷
 ‰f”R—Z‘ZÓ ð ô % UÖ+‘��4ØCD�	˜!Ô.×9Ñ9¸$Õ?Ð?Ó@ñ ,à˜˜i�Õ(‹Iñ7 ð: ÒÐÐäØ%ØØÜ—i’i¤ F£Ó,Øôð ùòM `ùÚ>aùò Xùâvs   ›N²NÁ N
Ã !N$Ã77N)
c                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# )r   ÚprotÚchain_idr*   )r	   r   rA   r   )r   s   "r   r   r   y   s%   € ÷ ñ œ'ð ¬Sð ¼¼c½ñ r   c                 ó^  € . pV P                   pVe   VP                  RV 24       V P                  pV P                  pVe+   Ve'   \	        WT4       UUu. uF  w  rgWa8X  g   K  VNK  	  pppVe   \        V4      ^ 8X  d   R.pVP                  RRP                  V4       24       V# u uppi )NúREMARK úN/AúPARENT Ú )r   r@   r   r   r9   r7   Újoin)r_   r`   Úpdb_headersr   r   r   rZ   Úps   &&      r   Úget_pdb_headersri   y   s²   € Ø€Kà�[‰[€FØÒØ×Ñ˜W V HÐ-Ô.à�l‰l€GØ×2Ñ2ÐØÒÐ2Ò>Ü!$Ð%8Ô!BÔTÑ!B™˜ÀaÁm—1�1Ñ!BˆÑTà‚œ#˜g›,¨!Ô+Ø�'ˆà×Ñ˜ §¡¨'Ó!2Ð 3Ð4Ô5àÐùó Us   Á
B)Á$B)c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r_   Úpdb_strr*   ©r	   r   )r   s   "r   r   r   �   s!   € ÷ /$ñ /$œ'ð /$¬Cð /$´Cñ /$r   c                ó>  € . pVP                  R4      pV P                  pVe   VP                  RV 24       V P                  Ee   \	        V P                  4      ^ 8”  dö   . pV P
                  eÁ   / p\        V P                  V P
                  4       FA  w  rxVP                  \        V4      . 4       V\        V4      ,          P                  V4       KC  	  \        R V 4       4      p	\        V	^,           4       F0  pVP                  \        V4      R.4      p
VP                  V
4       K2  	  M)VP                  \        V P                  4      4       MR..pR R lpVP                  V! V^ ,          4      4       ^ p\        V4       F  w  r�RV9  d   RV9  d   VP                  V4       R	V9   g   K-  R
W8^,           ,          9  g   KC  V^,          pV\	        V4      8¼  g
   W\,          p
MR.p
VP                  V! V
4      4       K�  	  RP                  V4      # )zOAdd pdb headers to an existing PDB string. Useful during multi-chain
recycling
r.   rb   c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5i)N)r   )Ú.0Ú	chain_idxs   & r   Ú	<genexpr>Ú"add_pdb_headers.<locals>.<genexpr>¡   s   é € ÐF¹+¨Yœ#˜iŸ.˜.»+ùs   ‚rc   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r   rh   r*   )r   r   )r   s   "r   r   Ú%add_pdb_headers.<locals>.__annotate__ª   s   € ÷ 'ñ 'œH¤S�Mð '¬cñ 'r   c                 ó*   € R RP                  V 4       2# )rd   re   )rf   )rh   s   &r   Úmake_parent_lineÚ)add_pdb_headers.<locals>.make_parent_lineª   s   € Ø˜Ÿ™ !›˜Ð&Ð&r   ÚPARENTÚREMARKÚTERÚEND)r6   r   r@   r   r7   r   r9   Ú
setdefaultr   Úmaxr?   r=   rA   rH   rf   )r_   rk   Úout_pdb_linesÚlinesr   Úparents_per_chainÚparent_dictrh   rZ   Úmax_idxÚchain_parentsrv   Úchain_counterrP   s   &&            r   Úadd_pdb_headersr…   �   s×  € ð  "€MØ�M‰M˜$Ó€Eà�[‰[€FØÒØ×Ñ˜w v hÐ/Ô0ð ‡|�|Ó¤C¨¯©Ó$5¸Ô$9ØÐØ×#Ñ#Ò/Ø02ˆKÜ˜DŸL™L¨$×*BÑ*BÖC‘�Ø×&Ñ&¤s¨1£v¨rÔ2ØœC ›FÕ#×*Ñ*¨1Ö-ñ Dô ÑF¹+ÓFÓFˆGÜ˜7 Q�;Ö'�Ø +§¡´°A³¸¸Ó @�Ø!×(Ñ(¨Ö7ò (ð ×$Ñ$¤T¨$¯,©,Ó%7Õ8à#˜W˜IÐõ'ð ×ÑÑ)Ð*;¸AÕ*>Ó?Ô@à€MÜ˜%Ö ‰ˆØ˜1Ô °Ô!2Ø× Ñ  Ô#Ø�AŽ:˜% u°­U¥|Ö3Ø˜QÕˆMØ ¤CÐ(9Ó$:Ô:Ø 1Õ @‘à!& �à× Ñ Ñ!1°-Ó!@ÖAñ !ð �9‰9�]Ó#Ð#r   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   r_   r*   rl   )r   s   "r   r   r   ¿   s   € ÷ Z ñ Z ”ð Z œSñ Z r   c                ó4  a!€ \         P                  R.,           o!R V!3R llp\         P                  p. pV P                  pV P                  pV P
                  pV P                  P                  \        P                  4      pV P                  pV P                  p	\        P                  ! V\         P                  8„  4      '       d   \        R4      h\        V 4      p
\!        V
4      ^ 8”  d   VP#                  V
4       VP$                  ^ ,          p^p^ p\&        P(                  pRp\+        V4       EF°  pV! VV,          4      p\-        W&V,          VV,          VV,          4       F¹  w  ppppVR8  d   K  Rp\!        V4      ^8X  d   TMRV 2pR	pR	pR
pV^ ,          pR	pRpV	e   WéV,          ,          pVR VR RVR VR VR RVR VV,          R VR RV^ ,          R V^,          R V^,          R VR VR RVR VR 2pVP/                  V4       V^,          pK»  	  VV^,
          8H  pV	e6   VV^,
          8w  d(   V	V^,           ,          V8w  d   RpV	V^,           ,          pV'       g   EKB  RpVR VR RV! VV,          4      R RVR VV,          R 2p VP/                  V 4       V^,          pVV^,
          8w  g   EK–  VP#                  \        W4      4       EK³  	  VP/                  R4       VP/                  R	4       RP1                  V4      # )zuConverts a `Protein` instance to a PDB string.

Args:
  prot: The protein to convert to PDB.

Returns:
  PDB string.
r/   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úrr*   )r   r   )r   s   "r   r   Úto_pdb.<locals>.__annotate__Ê   s   € ÷ Fñ F”Cð FœCñ Fr   c                 óR   <€ \         P                  P                  SV ,          R 4      # )ÚUNK)r   Úrestype_1to3r=   )rŠ   r:   s   &€r   Úres_1to3Úto_pdb.<locals>.res_1to3Ê   s    ø€ Ü ×-Ñ-×1Ñ1°(¸1µ+¸uÓEÐEr   zInvalid aatypes.Ng      à?ÚATOMre   Ú g      ð?ÚAz<6z>5z<4z>1z>3z>4z   z>8.3fz>6.2fz
          z>2Trz   z      r{   r.   )r   r:   Ú
atom_typesr   r   r   r   rF   r   Úint32r   r   Úanyr>   Ú
ValueErrorri   r7   ÚextendÚshapeÚstringÚascii_uppercaser?   r9   r@   rf   )"r_   r�   r”   Ú	pdb_linesr   r   r   r   r   r   ÚheadersÚnÚ
atom_indexÚprev_chain_indexÚ
chain_tagsÚ	chain_tagrZ   Ú
res_name_3Ú	atom_nameÚposr\   Úb_factorÚrecord_typeÚnameÚalt_locÚinsertion_codeÚ	occupancyÚelementÚchargeÚ	atom_lineÚshould_terminateÚ	chain_endÚchain_termination_liner:   s"   &                                @r   Úto_pdbr²   ¿   s7  ø€ ô !×)Ñ)¨S¨EÕ1€H÷Fð Fô #×-Ñ-€Jà€Ià—‘€IØ�[‰[€FØ×(Ñ(€NØ×&Ñ&×-Ñ-¬b¯h©hÓ7€MØ—‘€IØ×"Ñ"€Kä	‡v‚vˆfÔ(×4Ñ4Ñ4×5Ò5ÜÐ+Ó,Ð,ä˜dÓ#€GÜ
ˆ7ƒ|�aÔØ×Ñ˜Ô!à�‰�Q�€AØ€JØÐÜ×'Ñ'€JØ€Iä�1�XˆÙ˜f Q�iÓ(ˆ
Ü.1°*ÈQÕ>OÐQZÐ[\ÕQ]Ð_hÐijÕ_kÖ.lÑ*ˆI�s˜D (Ø�cŒzÙà ˆKÜ # I£°!Ô 3‘9¸1¸Y¸K¸ˆDØˆGØˆNØˆIØ •lˆGØˆFàˆIØÒ&Ø&°1¥~Õ6�	ð ˜rÐ" :¨b /°°4¸°)¸GÀB¸<Ø˜b�/  9¨R .Ø  Õ# BÐ'¨°rÐ':¸#Ø�q•6˜%�.  Q¥¨ ¨s°1­v°e¨nØ˜UÐ# H¨UÐ#3°:Ø˜2�,˜v b˜kð+ð ð ×Ñ˜YÔ'Ø˜!�OŠJñ5 /mð8   A¥™:ÐØÒ"Ø�A˜•EŒz˜k¨!¨a­%Õ0Ð4DÔDØ#'Ð Ø#.¨q°1­uÕ#5Ð çÒàˆIà˜R�. ¨B ¨v±h¸vÀa½yÓ6IÈ"Ð5MÈQÈyÐY[ÈnÐ]jÐklÕ]mÐnpÐ\qÐrð #ð ×ÑÐ3Ô4Ø˜!�OˆJà�A˜•E�zð × Ñ ¤°Ó!H×Iña ðd ×Ñ�UÔØ×Ñ�RÔØ�9‰9�YÓÐr   c                óD   € V ^8„  d   QhR\         R\        P                  /# r‡   )r	   r   r   )r   s   "r   r   r     s   € ÷ =ñ =œ'ð =¤b§j¡jñ =r   c                óD   € \         P                  V P                  ,          # )aS  Computes an ideal atom mask.

`Protein.atom_mask` typically is defined according to the atoms that are reported in the PDB. This function
computes a mask according to heavy atoms that should be present in the given sequence of amino acids.

Args:
  prot: `Protein` whose fields are `numpy.ndarray` objects.

Returns:
  An ideal atom mask.
)r   ÚSTANDARD_ATOM_MASKr   )r_   s   &r   Úideal_atom_maskr¶     s   € ô ×/Ñ/°·±Õ<Ð<r   c                ó  € V ^8„  d   QhR\         R\        R\        P                  R,          R\        P                  R,          R\        R,          R\
        \        ,          R,          R\
        \        ,          R,          R	\        /# )
r   ÚfeaturesÚresultr   Nr   r   r   r   r*   )ÚFeatureDictÚModelOutputr   r   r   r   r   r	   )r   s   "r   r   r   +  s€   € ÷ ñ Üðäðô �z‰z˜DÕ ðô —‘˜dÕ"ð	ô
 �$�Jðô ”c�]˜TÕ!ðô "¤#�¨Õ-ðô ñr   c                ó²   € \        V R,          VR,          VR,          V R,          ^,           Ve   TM\        P                  ! VR,          4      VVVVR7	      # )a‚  Assembles a protein from a prediction.

Args:
  features: Dictionary holding model inputs.
  result: Dictionary holding model outputs.
  b_factors: (Optional) B-factors to use for the protein.
  chain_index: (Optional) Chain indices for multi-chain predictions
  remark: (Optional) Remark about the prediction
  parents: (Optional) List of template names
Returns:
  A protein instance.
r   Úfinal_atom_positionsÚfinal_atom_maskr   )	r   r   r   r   r   r   r   r   r   )r	   r   Ú
zeros_like)r¸   r¹   r   r   r   r   r   s   &&&&&&&r   Úfrom_predictionrÀ   +  s]   € ô* Ø˜Õ!ØÐ4Õ5ØÐ*Õ+Ø˜Õ/°!Õ3Ø(Ò4‘)¼"¿-º-ÈÐO`ÕHaÓ:bØØØØ/ô
ð 
r   )r,   )NNNNN)r$   Údataclassesr5   rš   Úcollections.abcr   r   r   Útypingr   Únumpyr   r’   r   r   r   rº   r»   rK   Ú	dataclassr	   r]   ri   r…   r²   r¶   rÀ   r   r   r   Ú<module>rÆ      s–   ðñ  ã Û 	Û ß 7Ñ 7Ý ã å ð �c˜2Ÿ:™:�oÕ&€Ø�c˜3�hÕ€ØÐ ð ×Ò˜dÔ#÷"5ð "5ó $ð"5õJ.÷bõ(/$õdZ õz=÷ñ r   