o
    rqi]                  	   @   s  d dl Z d dlmZ d dlZdZdZdZdZej	de
dZej	d	e
dZej	d
e
dZej	d
e
dZej	de
dZej	de
dZej	de
dZej	d
e
dZej	dedZej	dedZej	dedZej	dedZdd ZddejdededefddZdddZdS )    N)Anyznumber of residuesznumber of MSA sequencesznumber of extra MSA sequencesznumber of templates   )Z
field_type   @           :0yE>     L@TFc                   C   s  t i di dtgdtd gdtd d gdtd gdtd gdtd d gdtd gd	td gd
td gdtd d gdtd gdtgdtd d gdttgdtd d gdtd gdttgi dttgdttgdttgdtgdg dttd gdttgdtd gdtgdg dtd gdtgdtgd td gd!td gd"g d#td d d gi d$td gd%td gd&td gd'td d d gd(g d)tgd*td gd+ttgd,ttd gd-ttd d gd.ttd d gd/ttgd0ttd d gd1tgd2ttd gd3ttgd4td gttd gttd d gttgg d5gtgtgtgtgd gtgd6d7d8d8d8d9d:d;d<d=d>d?d@dAdBidCd<dDd<dEdFdGdHdIdHdJdHdKg dLdMg dNdOg dPdQg dRdStdTtdUtdVtidWg dXdYdHd<d<dHdZd[d\d]d<d d<d<d<d^dHd<d<dHdZd[d\d5d<d d_d`dHd<d<dai dbdHdcdHd:dHd@dHdddZded[dfd\dgd5dhdHdidjdkd_dld`dmdHdndWdodpdqdHdrdHdst	d t
tttttttd<dttdudvt
tdwd]dxt
tdydzd{d|d}dyd~dddtddg dt
td<dtd>dd]d\d]dddHd	dHtt
d>d\ddddttd	dtdtt
ddwd[dwdd\d\d\dZdddd<ddHdi dtdt
ddwddwdd[ddwdtdddd\dddd\ddZdddddddd<i dtdt
dd>dd[dddd\dddd8dddd5dd]dddddddddd<ddHdtd[dt
td<dt
td<dd<dtdd<dtdd<d<dddddddd;ddd8dddƜd`dd`dd_ddʜd`d`d_dd˜dWd̜d8ddddddϜdddќd_dddWdҜddd;ddd՜ddd8ddddלddWd؜dddٜdڜ
dۜS )Nfeaturesaatypeall_atom_maskall_atom_positionsZalt_chi_anglesZatom14_alt_gt_existsZatom14_alt_gt_positionsZatom14_atom_existsZatom14_atom_is_ambiguousZatom14_gt_existsZatom14_gt_positionsZatom37_atom_existsZ
frame_maskZtrue_frame_tensor	bert_maskZchi_angles_sin_cosZchi_maskextra_msa_deletion_valueextra_msa_has_deletion	extra_msaextra_msa_maskextra_msa_row_maskis_distillationmsa_featmsa_mask
msa_chainsmsa_row_masknum_recycling_itersZpseudo_betaZpseudo_beta_maskresidue_indexZresidx_atom14_to_atom37Zresidx_atom37_to_atom14
resolutionZrigidgroups_alt_gt_framesZrigidgroups_group_existsZrigidgroups_group_is_ambiguousZrigidgroups_gt_existsZrigidgroups_gt_frames
seq_lengthZseq_maskZtarget_feattemplate_aatypetemplate_all_atom_masktemplate_all_atom_positionsZ#template_alt_torsion_angles_sin_cosZtemplate_frame_maskZtemplate_frame_tensorZtemplate_maskZtemplate_pseudo_betaZtemplate_pseudo_beta_masktemplate_sum_probs   )Ztemplate_torsion_angles_maskZtemplate_torsion_angles_sin_costrue_msause_clamped_fapeassembly_num_chainsasym_idsym_id	entity_idnum_symasym_lencluster_bias_mask
masked_msa皙?)Zprofile_probZ	same_probZuniform_probblock_delete_msag333333?F      )Zmsa_fraction_per_blockZrandomize_num_blocks
num_blocksZmin_num_msarandom_delete_msaZmax_msa_entryi   
v2_featuregumbel_samplemax_extra_msa   Zmsa_cluster_featuresTZ$reduce_msa_clusters_by_max_templatesZresample_msa_in_recyclingZtemplate_features)r    r!   r   r   Zunsupervised_features)
r   r   Zmsar   Znum_alignmentsr   Zbetween_segment_residuesZdeletion_matrixr   Zcrop_and_fix_size_seedZrecycling_features)r   r   r   r   r#   r   r   r   r   r   r   r   Zmultimer_features)r%   r&   r'   r)   r(   r*   r+   use_templatesis_multimeruse_template_torsion_anglesmax_recycling_iters      ?)r   r   r   r$   r   )use_clamped_fape_probZsupervised_featuresg333333?r   r      )
fixed_sizesubsample_templatesr.   r2   masked_msa_replace_fractionmax_msa_clustersmax_templatesnum_ensemblescrop	crop_size
supervisedbiased_msa_by_chain
share_mask      ?g      $@)r>   r?   r.   r2   r@   rA   rB   rC   rD   rE   spatial_crop_probca_ca_thresholdrF   rG   rH   r>   r?   r@   rA   rB   rC   rD   rE   r   rJ   rK   rF   r<   Zmax_distillation_msa_clustersi  rG   rH   )commonrF   Zpredictevaltrain)
chunk_size
block_sized_paird_msa
d_templated_extra_msad_singleepsinfr:   alphafold_original_mode   1       )tf_dimZmsa_dimrQ   rR   Zrelpos_kZmax_relative_chaing      
@g     4@   g    חA)rQ   rR   min_binmax_binnum_binsrW   g     `I@'   )r^   r_   r`   9   )d_ind_outX   )ra   r"   rY   rY   r"   r"   r"   r"   )rc   Zv2_d_inrQ   rd   r3   r   g      ?g    eA)	rS   Zd_hid_tri_attZd_hid_tri_mulr1   	num_headsZpair_transition_ndropout_raterW   tri_attn_firstg     j@)enabledrS   rQ   d_hidrf   rW   gư>)		distogramtemplate_angle_embedderZtemplate_pair_embeddertemplate_pair_stacktemplate_pointwise_attentionrW   rV   ri   embed_angles      g|=)rR   rQ   d_hid_msa_att	d_hid_opm	d_hid_muld_hid_pair_attnum_heads_msanum_heads_pairr1   transition_nmsa_dropoutpair_dropoutrW   rV   outer_product_mean_first)Zextra_msa_embedderZextra_msa_stackri   rR   rQ   rr   rs   rt   ru   rU   rv   rw   r1   0   rx   ry   rz   rW   rV   r{   Zd_ipaZd_angleZnum_heads_ipa   Znum_qk_pointsZnum_v_pointsrg   Zno_transition_layersZnum_resnet_blocksZ
num_angles   trans_scale_factor
   epsilong-q=separate_kvipa_bias2   )r`   rc   rj   )rQ   r`   disable_enhance_headg?)rQ   r`   ri   Ziptm_weightr      )rR   rd   r   %   )rU   rd   ri   r   )plddtrk   paer,   experimentally_resolved)r8   input_embedderZrecycling_embeddertemplater   Zevoformer_stackstructure_moduleheadsg     @g     5@)r^   r_   r`   rV   weightr	   g      @g        )rV   min_resolutionmax_resolutionr   g      >@g      4@g-C6?)clamp_distanceZclamp_distance_between_chainsZloss_unit_distanceZ!loss_unit_distance_between_chainsr   rV   )r   Zlength_scaler   rV   )ZbackboneZ	sidechainr   g      .@{Gz?)r   r   cutoffr`   rV   r   g       @)rV   r   )Z
chi_weightZangle_norm_weightrV   r   g      (@g      ?)Zviolation_tolerance_factorZclash_overlap_toleranceZbond_angle_loss_weightrV   r      )r_   r`   r   r   rV   r   )r   Z	tolerance)r   rV   )
rk   r   Zfaper   r,   Zsupervised_chi	violationr   	repr_normchain_centre_mass)dataglobalsmodelloss)mlc
ConfigDictN_RESN_MSAN_EXTRA_MSAN_TPLr7   r8   r:   rO   rQ   rR   rS   rT   rU   rV   rW   aux_distogram_bins r   r   o/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/modelscope/models/science/unifold/config.pybase_config   s  

	




 !"#$%&'()*
+,-345
6789
GLRUWY[]_ags           	
  U	
+	
	
 			  r   ckeyvalueignorec                 C   s|   |   0 |  D ]"\}}|d ur||krq	t|tjr#t||| q	||kr+|| |< q	W d    d S 1 s7w   Y  d S N)unlockeditems
isinstancer   r   recursive_set)r   r   r   r   kvr   r   r   r     s   
"r   c                 C   s  t t }dd }dd }| dkrn| dkr0t|dd t|d	d
 d|jj_d|jj_	n| dkr`t|dd t|d	d
 d|jj_d|jj_	d|jj
_	d|jjj_d|jj_	d|j_n| dkrfn| dkrln| dkrvd|j_n| dkrt|dd t|d	d
 d|jj_d|jj_	n| dkrt|dd t|d	d
 d|jj_d|jj_	d|jj
_	d|jjj_d|jj_	d|j_np| dkr||}nf| dkr||}t|dd t|d	d
 d|jj_d|jj_	nF| dks| dkr6t|dd t|d	d
 d|jj_d|jj_	d|jj
_	d|jjj_d|jj_	d|j_d|jj_d|jj_t|dd t|dd n| dkr|t|dd t|d	d
 d|jj_d|jj_	d|jj
_	d|jjj_d|jj_	d|j_d|jj_d|jj_t|dd t|dd n| dkr||}n| d kr||}t|dd! t|d	d" d|jj_d#|jj_	n| d$kr*t|dd! t|d	d" t|d%d t|d&d t|d'd d(|jjj_d|jjj_d|jjj_d|jjj_d|jjj_d)|jjj_d|jj_d|jj_d*|jj_d+|jj_	d#|jj_	d|jj_	d,|jj_ d|j_d|jj_d|jj
_	d-|jj!_	t|d.d nt"d/|  d0|r9d |j_#t|d1d2 t|d3d4d5 |S )6Nc                 S   sH   t | dd t | dd d| jjj_d| jj_d| jj_d| jjj	_
| S )Nr3   Tr4   rY   F"   )r   r   r   r,   rd   r   r   r   r   rl   rc   r   r   r   r   
model_2_v2  s   

z model_config.<locals>.model_2_v2c                 S   s   t | dd t | dd t | dd t | dd t | dd d	| jjj_d
| jjj_d
| jjj_d| jj	j
_d| jj	j
_d| jj	j_d| jj_d
| jj_d| jj_d| jj
_d| jj_d| jj_d| jj_d| jj_| S )Nr8   Tr5     rA   r   r3   r4   r   FrY      r-      r   {Gz?r;   )r   r   r   rl   rc   rm   rh   rn   ri   r   r   r   r,   rd   r   r   r   r   r   r   r   r\   r   rN   rE   r   r   r   r   r   r   multimer  s(   







zmodel_config.<locals>.multimerZmodel_1Z
model_1_ftr5   i   rA   i   r   r   Zmodel_1_af2r   Tr   Zmodel_2Z
model_initZmodel_init_af2Z
model_2_ftr6   Zmodel_2_af2r   Zmodel_2_v2_ftZmodel_3_af2Zmodel_4_af2Fr7   r9   Zmodel_5_af2r   Zmultimer_ftr   r   rI   Zmultimer_af2r8   r3   r4   r   rY   r   r-   r   r;   r{   zinvalid --model-name: .rW   r
   rV   gh㈵>r   )$copydeepcopyr   r   r   rN   rE   r   r   r   r   r   r   r   ri   r   rX   r   ro   rl   rc   rm   rh   rn   r   r,   rd   r   r   r   r   r   r\   r   
ValueErrorrO   )namerN   r   r   r   r   r   r   model_config  s   	






































r   r   )F)r   typingr   Zml_collectionsr   r   r   r   r   ZFieldReferenceintrQ   rR   rS   rT   rU   r:   rO   r   floatrV   rW   boolr7   r8   r   r   strr   r   r   r   r   r   <module>   s2      H