o
    ߥ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   )
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_positionsalt_chi_anglesatom14_alt_gt_existsatom14_alt_gt_positionsatom14_atom_existsatom14_atom_is_ambiguousatom14_gt_existsatom14_gt_positionsatom37_atom_exists
frame_masktrue_frame_tensor	bert_maskchi_angles_sin_cos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_iterspseudo_betapseudo_beta_maskresidue_indexresidx_atom14_to_atom37residx_atom37_to_atom14
resolutionrigidgroups_alt_gt_framesrigidgroups_group_existsrigidgroups_group_is_ambiguousrigidgroups_gt_existsrigidgroups_gt_frames
seq_lengthseq_masktarget_feattemplate_aatypetemplate_all_atom_masktemplate_all_atom_positions#template_alt_torsion_angles_sin_costemplate_frame_masktemplate_frame_tensortemplate_masktemplate_pseudo_betatemplate_pseudo_beta_masktemplate_sum_probs   )template_torsion_angles_mask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皙?)profile_prob	same_probuniform_probblock_delete_msag333333?F      )msa_fraction_per_blockrandomize_num_blocks
num_blocksmin_num_msarandom_delete_msamax_msa_entryi   
v2_featuregumbel_samplemax_extra_msa   msa_cluster_featuresT$reduce_msa_clusters_by_max_templatesresample_msa_in_recyclingtemplate_features)r8   r?   r6   r7   unsupervised_features)
r   r*   msar%   num_alignmentsr3   between_segment_residuesdeletion_matrixr'   crop_and_fix_size_seedrecycling_features)r%   r$   r&   r   rC   r#   r   r   r   r    r!   r"   multimer_features)rE   rF   rG   rI   rH   rJ   rK   use_templatesis_multimeruse_template_torsion_anglesmax_recycling_iters      ?)r   r   r-   rD   r"   )use_clamped_fape_probsupervised_featuresg333333?r   r	      )
fixed_sizesubsample_templatesrQ   rX   masked_msa_replace_fractionmax_msa_clustersmax_templatesnum_ensemblescrop	crop_size
supervisedbiased_msa_by_chain
share_mask      ?g      $@)rr   rs   rQ   rX   rt   ru   rv   rw   rx   ry   spatial_crop_probca_ca_thresholdrz   r{   r|   rr   rs   rt   ru   rv   rw   rx   ry   r   r~   r   rz   ro   max_distillation_msa_clustersi  r{   r|   )commonrz   predictevaltrain)
chunk_size
block_sized_paird_msa
d_templated_extra_msad_singleepsinfrm   alphafold_original_mode   1       )tf_dimmsa_dimr   r   relpos_kmax_relative_chaing      
@g     4@   g    חA)r   r   min_binmax_binnum_binsr   g     `I@'   )r   r   r   9   )d_ind_outX   )r   r@   r   r   r@   r@   r@   r@   )r   v2_d_inr   r   rZ   r   g      ?g    eA)	r   d_hid_tri_attd_hid_tri_mulrV   	num_headspair_transition_ndropout_rater   tri_attn_firstg     j@)enabledr   r   d_hidr   r   gư>)		distogramtemplate_angle_embeddertemplate_pair_embeddertemplate_pair_stacktemplate_pointwise_attentionr   r   r   embed_angles      g|=)r   r   d_hid_msa_att	d_hid_opm	d_hid_muld_hid_pair_attnum_heads_msanum_heads_pairrV   transition_nmsa_dropoutpair_dropoutr   r   outer_product_mean_first)extra_msa_embedderextra_msa_stackr   r   r   r   r   r   r   r   r   r   rV   0   r   r   r   r   r   r   d_ipad_anglenum_heads_ipa   num_qk_pointsnum_v_pointsr   no_transition_layersnum_resnet_blocks
num_angles   trans_scale_factor
   epsilong-q=separate_kvipa_bias2   )r   r   r   )r   r   disable_enhance_headg?)r   r   r   iptm_weightr      )r   r   r   %   )r   r   r   r   )plddtr   paerL   experimentally_resolved)rk   input_embedderrecycling_embeddertemplater   evoformer_stackstructure_moduleheadsg     @g     5@)r   r   r   r   weightr
   g      @g        )r   min_resolutionmax_resolutionr   g      >@g      4@g-C6?)clamp_distanceclamp_distance_between_chainsloss_unit_distance!loss_unit_distance_between_chainsr   r   )r   length_scaler   r   )backbone	sidechainr   g      .@{Gz?)r   r   cutoffr   r   r   g       @)r   r   )
chi_weightangle_norm_weightr   r   g      (@g      ?)violation_tolerance_factorclash_overlap_tolerancebond_angle_loss_weightr   r      )r   r   r   r   r   r   )r   	tolerance)r   r   )
r   r   faper   rL   supervised_chi	violationr   	repr_normchain_centre_mass)dataglobalsmodelloss)mlc
ConfigDictN_RESN_MSAN_EXTRA_MSAN_TPLrj   rk   rm   r   r   r   r   r   r   r   r   aux_distogram_bins r   r   \/home/ubuntu/.local/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 )NrZ   Tr[   r   F"   )r  r   r   rL   r   r   r   r   r   r   r   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 )Nrk   Tr\     ru   r   rZ   r[   r  Fr      rM      r   {Gz?rn   )r  r   r   r   r   r   r   r   r   r   r   r   rL   r   r   r   r   r   r   r   r   r   r   r   ry   r   r   r  r   r   r   multimer  s(   







zmodel_config.<locals>.multimermodel_1
model_1_ftr\   i   ru   i   r   r  model_1_af2r   Tr   model_2
model_initmodel_init_af2
model_2_ftr]   model_2_af2r  model_2_v2_ftmodel_3_af2model_4_af2Frj   rl   model_5_af2r  multimer_ftr  r   r}   multimer_af2rk   rZ   r[   r  r   r  rM   r  rn   r   zinvalid --model-name: .r   r   r   gh㈵>r   )$copydeepcopyr   r  r   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   r   r   r   r   r   r   r   r   
ValueErrorr   )namer   r   r  r  r   r   r   model_config  s   	






































r&  r  )F)r"  typingr   ml_collectionsr   r   r   r   r   FieldReferenceintr   r   r   r   r   rm   r   r   floatr   r   boolrj   rk   r   r   strr  r&  r   r   r   r   <module>   s2      H