o
    *j                     @   s   d dl mZ d dlmZ d dlmZ ddlmZ ddlm	Z	m
Z
mZ G dd dejZG d	d
 d
ejZG dd dejZG dd deZG dd deZG dd deZG dd deZdS )    )DictN)	LayerNorm   )Linear)predicted_aligned_errorpredicted_lddtpredicted_tm_scorec                       $   e Zd Z fddZdd Z  ZS )AuxiliaryHeadsc                    s   t t|   tdi |d | _tdi |d | _tdi |d | _|j	j
r3tdi |d | _	|jj
r@tdi |j| _|| _d S )Nplddt	distogram
masked_msaexperimentally_resolved )superr
   __init__PredictedLDDTHeadr   DistogramHeadr   MaskedMSAHeadr   r   enabledExperimentallyResolvedHeadpaePredictedAlignedErrorHeadconfig)selfr   	__class__r   z/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/science/unifold/modules/auxillary_heads.pyr      s   
zAuxiliaryHeads.__init__c           	      C   s6  i }|  |d d }||d< t| |d< | |d }||d< | |d }||d< | jjjr=| |d }||d	< | jjjr| |d }||d
< | }|	t
|fi | jj t|fddi| jj|d< | jjdd}|dkrt|fd|d d| jj|d< ||d  d| |d   |d< |S )Nsmsingleplddt_logitsr   pairdistogram_logitsZmsamasked_msa_logitsZexperimentally_resolved_logits
pae_logits	interfaceFZptmiptm_weightg        Tasym_id)r%   r'   Ziptmg      ?ziptm+ptm)r   r   detachr   r   r   r   r   r   updater   r   get)	r   ZoutputsZaux_outr    r"   r#   Zexp_res_logitsr$   r&   r   r   r   forward"   sX   




zAuxiliaryHeads.forward__name__
__module____qualname__r   r+   __classcell__r   r   r   r   r
      s    r
   c                       r	   )r   c                    sv   t t|   || _|| _|| _t| j| _t| j| jdd| _	t| j| jdd| _
t | _t| j| jdd| _d S NZrelu)initfinal)r   r   r   num_binsd_ind_hidr   
layer_normr   linear_1linear_2nnGELUactlinear_3)r   r4   r5   r6   r   r   r   r   P   s   
zPredictedLDDTHead.__init__c                 C   s@   |  |}| |}| |}| |}| |}| |}|S N)r7   r8   r<   r9   r=   )r   sr   r   r   r+   ^   s   





zPredictedLDDTHead.forwardr,   r   r   r   r   r   N   s    r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )EnhancedHeadBasec                    sX   t t|   |rd | _d | _nt|| _t||dd| _t | _	t||dd| _
d S r1   )r   r@   r   r7   	linear_inr   r   r:   r;   r<   linear)r   r5   d_outdisable_enhance_headr   r   r   r   j   s   

zEnhancedHeadBase.__init__c                 C   s   d | _ d | _d S r>   )r7   rA   )r   r   r   r   apply_alphafold_original_modeu   s   
z.EnhancedHeadBase.apply_alphafold_original_modec                 C   s2   | j d ur|  |}| | |}| |}|S r>   )r7   r<   rA   rB   r   xZlogitsr   r   r   r+   y   s
   


zEnhancedHeadBase.forward)r-   r.   r/   r   rE   r+   r0   r   r   r   r   r@   h   s    r@   c                       s(   e Zd Z fddZ fddZ  ZS )r   c                       t t| j|||d d S N)r5   rC   rD   )r   r   r   r   Zd_pairr4   rD   kwargsr   r   r   r      
   

zDistogramHead.__init__c                    s    t  |}||dd }|S )N)r   r+   Z	transposerF   r   r   r   r+      s   zDistogramHead.forwardr,   r   r   r   r   r      s    r   c                          e Zd Z fddZ  ZS )r   c                    rH   rI   )r   r   r   rJ   r   r   r   r      rL   z"PredictedAlignedErrorHead.__init__r-   r.   r/   r   r0   r   r   r   r   r          r   c                       rO   )r   c                    rH   rI   )r   r   r   )r   Zd_msarC   rD   rK   r   r   r   r      rL   zMaskedMSAHead.__init__rP   r   r   r   r   r      rQ   r   c                       rO   )r   c                    rH   rI   )r   r   r   )r   Zd_singlerC   rD   rK   r   r   r   r      rL   z#ExperimentallyResolvedHead.__init__rP   r   r   r   r   r      rQ   r   )typingr   Ztorch.nnr:   Zunicore.modulesr   commonr   Z
confidencer   r   r   Moduler
   r   r@   r   r   r   r   r   r   r   r   <module>   s   @

