Ë
    ÛÓ^jM  ã                   ón  — 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 j                  dz  d	ed
ede	de j                  fd„Z
y)é    NÚ
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      úv/var/www/ramen.bs-engineer-server.com/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=   I   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   )é   é@   )Nr>   r?   g:Œ0âŽyE>)r   ÚTensorr   r2   r   ÚintÚdictÚstrr'   Úfloatr=   © r   r   ú<module>rF      sþ   ðó" ð u§|¡|ð ¸¿¹ó ðØ!&§¡ðà"'§,¡,ðð ˆ5�<‰<˜Ÿ™Ð%Ñ&óð Øñ Ø�L‰Lð àð ð ð ð
 
ˆ#ˆu�|‰|Ð
Ñó ðJ ,0ØØØñ(Ø�L‰Lð(à—\‘\ DÑ(ð(ð ð(ð ð	(ð
 
ð(ð ‡\�\ô(r   