Ë
    S^(hy  ã                   ó‚  — d dl mZmZmZ d dlZdej
                  dej
                  fd„Zdej
                  dej
                  deej
                  ej
                  f   fd„Z	 	 dd	ej
                  d
ededee	ej
                  f   fd„Z
	 	 	 	 dd	ej
                  deej
                     d
edededej
                  fd„Zy)é    )ÚDictÚOptionalÚTupleNÚ
boundariesÚreturnc                 óˆ   — | d   | d   z
  }| |dz  z   }t        j                  ||d   |z   j                  d«      gd¬«      }|S )Né   r   é   éÿÿÿÿ©Údim)ÚtorchÚcatÚ	unsqueeze)r   ÚstepÚbin_centerss      úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/esm/openfold_utils/loss.pyÚ_calculate_bin_centersr      sR   € Ø�a‰=˜: a™=Ñ(€DØ˜t a™xÑ'€KÜ—)‘)˜[¨;°r©?¸TÑ+A×*LÑ*LÈRÓ*PÐQÐWXÔY€KØÐó    Úalignment_confidence_breaksÚaligned_distance_error_probsc                 óV   — t        | «      }t        j                  ||z  d¬«      |d   fS )Nr   r   )r   r   Úsum)r   r   r   s      r   Ú!_calculate_expected_aligned_errorr      s4   € ô )Ð)DÓE€Kä�	‰	Ð.°Ñ<À"ÔEØ�B‰ðð r   ÚlogitsÚmax_binÚno_binsc                 óÐ   — t        j                  d||dz
  | j                  ¬«      }t         j                  j                  j                  | d¬«      }t        ||¬«      \  }}|||dœS )aP  Computes aligned confidence metrics from logits.

    Args:
      logits: [*, num_res, num_res, num_bins] the logits output from
        PredictedAlignedErrorHead.
      max_bin: Maximum bin value
      no_bins: Number of bins
    Returns:
      aligned_confidence_probs: [*, num_res, num_res, num_bins] the predicted
        aligned error probabilities over bins for each residue pair.
      predicted_aligned_error: [*, num_res, num_res] the expected aligned distance
        error for each pair of residues.
      max_predicted_aligned_error: [*] the maximum predicted error possible.
    r   r	   ©ÚstepsÚdevicer   r   )r   r   )Úaligned_confidence_probsÚpredicted_aligned_errorÚmax_predicted_aligned_error)r   Úlinspacer!   ÚnnÚ
functionalÚsoftmaxr   )r   r   r   Úkwargsr   r"   r#   r$   s           r   Úcompute_predicted_aligned_errorr*   '   sl   € ô( —‘  7°7¸Q±;ÈÏÉÔV€Jä$Ÿx™x×2Ñ2×:Ñ:¸6ÀrÐ:ÓJÐÜ;\Ø$.Ø%=ô<Ñ8ÐÐ8ð %=Ø#:Ø'Bñð r   Úresidue_weightsÚepsc                 ó¤  — |€| j                  | j                  d   «      }t        j                  d||dz
  | j                  ¬«      }t        |«      }t        j                  |«       | j                  d   }t        |d«      }	d|	dz
  dz  z  d	z
  }
t        j                  j                  j                  | d
¬«      }dd|dz  |
dz  z  z   z  }t        j                  ||z  d
¬«      }|||j                  «       z   z  }t        j                  ||z  d
¬«      }||z  }|t        j                  |«      k(  j                  «       d   }|t        |«         S )Néþÿÿÿr   r	   r   é   g×£p=
×ó?é   gUUUUUUÕ?gÍÌÌÌÌÌü?r   r   g      ð?r
   )Únew_onesÚshaper   r%   r!   r   r   Úmaxr&   r'   r(   ÚnonzeroÚtuple)r   r+   r   r   r,   r)   r   r   ÚnÚ	clipped_nÚd0ÚprobsÚ
tm_per_binÚpredicted_tm_termÚnormed_residue_maskÚper_alignmentÚweightedÚargmaxs                     r   Ú
compute_tmr@   J   s?  € ð ÐØ Ÿ/™/¨&¯,©,°rÑ*:Ó;ˆä—‘  7°7¸Q±;ÈÏÉÔV€Jä(¨Ó4€KÜ	‡I�IˆoÔØ�‰�RÑ€AÜ�A�r“
€Ià	�˜R‘ WÑ-Ñ	-°Ñ	3€Bä�H‰H×Ñ×'Ñ'¨°BÐ'Ó7€Eà˜˜[¨!™^°°A±Ñ6Ñ6Ñ7€JÜŸ	™	 %¨*Ñ"4¸"Ô=Ðà)¨S°?×3FÑ3FÓ3HÑ-HÑIÐÜ—I‘IÐ/Ð2EÑEÈ2ÔN€Mà˜Ñ.€Hàœ%Ÿ)™) HÓ-Ñ-×6Ñ6Ó8¸Ñ;€FØœ˜v›Ñ'Ð'r   )é   é@   )NrA   rB   g:Œ0âŽyE>)Útypingr   r   r   r   ÚTensorr   r   ÚintÚstrr*   Úfloatr@   © r   r   ú<module>rI      s  ð÷  )Ñ (ã ð u§|¡|ð ¸¿¹ó ðØ!&§¡ðà"'§,¡,ðð ˆ5�<‰<˜Ÿ™Ð%Ñ&óð Øñ Ø�L‰Lð àð ð ð ð
 
ˆ#ˆu�|‰|Ð
Ñó ðJ /3ØØØñ(Ø�L‰Lð(à˜eŸl™lÑ+ð(ð ð(ð ð	(ð
 
ð(ð ‡\�\ô(r   