
    9i"                         S SK Jr  S SKrS SKrS SKJr  S rS rS r	S r
\R                  S 5       rS	 rS
 r SS\S\\   S\4S jjrSS\\   4S jjrS rg)    )OptionalN)data_opsc                    U R                   n/ nUR                  (       a/  UR                  [        R                  " U R                  5      5        UR	                  [        R
                  [        R                  [        R                  [        R                  " S5      [        R                  [        R                  /5        UR                  U(       a  [        R                  O[        R                  5        U R                  (       am  UR	                  [        R                  [        R                  " S5      /5        UR                  [        R                   " UR"                  UR$                  S95        U R&                  (       a&  UR	                  [        R(                  " S5      /5        UR                  [        R*                  5        UR                  [        R,                  5        U$ )z8Input pipeline data transformers that are not ensembled.g        	template_)max_templatessubsample_templates)
v2_featurerandom_delete_msaappendr   extendcast_to_64bit_intscorrect_msa_restypessqueeze_features!randomly_replace_msa_with_unknownmake_seq_maskmake_msa_maskmake_hhblits_profile_v2make_hhblits_profileuse_templatesmake_template_maskmake_pseudo_betacrop_templatesr   r   use_template_torsion_anglesatom37_to_torsion_anglesmake_atom14_masksmake_target_feat)
common_cfgmode_cfgr	   	operatorss       n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/science/unifold/data/process.pynonensembled_fnsr!      ss   &&JI!!&&z'C'CD	F##%%!!2237  " 55(0(E(EG''%%k2
 	 	##&44$,$@$@	 ----k:
 	 X//0X../    c           	         / nU R                   (       a  UR                  UR                  -
  nOUR                  n[        U R                  5      nUR
                  (       a  UR                  (       ay  U R                  (       a7  [        R                  " UR                  UUUR                  UR                  S9nO [        R                  " UR                  UUS9nUR                  U5        UR                  [        R                  " U5      5        UR                  [        R                   " UUU R"                  UR                  UR                  5      5        U$ )N)	crop_sizeshape_schemaseedspatial_crop_probca_ca_threshold)r$   r%   r&   )$reduce_msa_clusters_by_max_templatesmax_msa_clustersr   dictfeatures
fixed_sizecropis_multimerr   crop_to_size_multimerr$   r'   r(   crop_to_size_singler   select_featmake_fixed_sizemax_extra_msa)r   r   crop_and_fix_size_seedr   pad_msa_clusters
crop_featscrop_fns          r    crop_and_fix_size_fnsr9   3   s   I66#44x7M7MM#44j))*J==%%"88&00!+/&.&@&@$,$<$< #66&00!+/
 W%--j9:$$ ((""&&	 r"   c           	      r   / nU R                   nU R                  nUR                  (       a6  U(       d/  UR                  [        R                  " U R                  5      5        SU;   a/  UR                  [        R
                  " UR                  5      5        U R                  (       a  UR                  UR                  -
  nOUR                  nUnU R                  nU R                  (       d   eU R                  nUR                  [        R                  " USUUR                  S95        SU ;   aD  UR                  [        R                  " U R                   UR"                  UUR$                  S95        U R&                  (       ao  U(       a%  UR                  [        R(                  " 5       5        OCUR                  [        R*                  " 5       5        UR                  [        R,                  5        U(       a   UR                  [        R.                  5        OUR                  [        R0                  5        U(       aV  U(       a'  UR                  [        R2                  " U5      5        U$ UR                  [        R4                  " U5      5         U$ UR                  [        R6                  5        U$ )zDInput pipeline data transformers that can be ensembled and averaged.max_distillation_msa_clustersT)
keep_extragumbel_samplebiased_msa_by_chain
masked_msa)r=   
share_mask)r/   r	   block_delete_msar   r   sample_msa_distillationr;   r)   r*   r   r4   resample_msa_in_recyclingr=   
sample_msar>   make_masked_msar?   masked_msa_replace_fractionr@   msa_cluster_featuresnearest_neighbor_clusters_v2nearest_neighbor_clusterssummarize_clustersmake_msa_feat_v2make_msa_featmake_extra_msa_featcrop_extra_msadelete_extra_msa)	r   r   r   multimer_moder	   r6   r*   r4   r=   s	            r    ensembled_fnsrQ   Y   s&   I**M&&J  %%j&A&AB	D&(2,,668	9 66#44x7M7MM#44',,M////,,M' ( < <		
 z! 	$$%%44+#..		 &&XBBDEX??ABX889223//0X99-HI 	 X44]CD  	223r"   c           	        ^ ^^^	^
^^ [        T R                  SS5      5      m
TR                  m[        T S   5      n[	        TTU5      m	UU	U
UU4S jm[        TT5      nTR                  (       a'  T(       a  T
(       a  UR                  [        5       5        [        U5      " T 5      m [        T S   5      S-   nTR                  n[        U U4S j[        R                  " XV-  5      5      n[        T	5      " T 5      m T  Vs0 s H  o[        R                  " T U   /SS9_M     snm T R                  U5        T $ s  snf )	zCBased on the config, apply filters and transformations to the data.is_distillationr   r5   c                 Z  > U R                  5       n[        TT5      n[        U5      " U5      nT	(       a  T(       a7  [        R                  " TR
                  5      " U5      n[        T5      " U5      $ [        T5      " U5      n[        R                  " TR
                  5      " U5      nU$ )z2Function to be mapped over the ensemble dimension.)copyrQ   composer   r2   recycling_features)
dataidfnsnew_dr   r8   rS   r   rP   s
        r    wrap_ensemble_fn*process_features.<locals>.wrap_ensemble_fn   s    IIK
 Q(()F)FGNE7#E** #A$$Z%B%BCAFAHr"   num_recycling_iters   c                    > T" TU 5      $ N )xtensorsr]   s    r    <lambda>"process_features.<locals>.<lambda>   s    "7A.r"   dim)boolgetr/   intr9   r!   
supervisedr   label_transform_fnrV   num_ensemblesmap_fntorcharangestackupdate)re   r   r   r5   nonensemblednum_recyclingro   ensemble_tensorskr8   rS   rP   r]   s   ```      @@@@r    process_featuresry      s   7;;'8!<=O**M )A!BC#G   $J9LM_.01l#G,G 567!;M**M.]23 gw'G<CDGq%++wqzl22GDGNN#$N Es   #D;c                 (    U H  nU" U 5      n M     U $ rb   rc   )rd   fsfs      r    rV   rV      s    aD Hr"   c                 b   [        U S   R                  5      S:  a}  [        S U  5       5      n/ nU  Hb  nUR                  S   U:  a9  U S   R                  " U/UR                  SS  Q76 nX4S UR                  S   2S4'   OUnUR	                  U5        Md     OU n[
        R                  " USS9$ )Nr   r`   c              3   >   #    U  H  oR                   S    v   M     g7f)r   N)shape).0vs     r    	<genexpr>!pad_then_stack.<locals>.<genexpr>   s     .v!771:vs   .rh   )lenr   max	new_zerosr   rq   rs   )valuessize
new_valuesr   ress        r    pad_then_stackr      s    
6!9??q .v..
AwwqzD Qi))$==()KQWWQZK$%c"  
;;zq))r"   c                     U Vs/ s H
  o " U5      PM     nnUS   R                  5       n0 nU H#  n[        U Vs/ s H  owU   PM	     sn5      XV'   M%     U$ s  snf s  snf )Nr   )keysr   )funrd   elem	ensemblesr,   ensembled_dictfeatdict_is           r    rp   rp      sn    '()qtTqI)|  "HN-(12	fD\	2 4   *
 3s
   AA
labelnum_ensemblereturnc                 .   SU ;   d   eSU ;   d   eSU ;   d   e[        [        5       5      " U 5      n UbT  U R                  5        VVVs0 s H5  u  p#U[        R                  " [        U5       Vs/ s H  oCPM     sn5      _M7     n nnnU $ s  snf s  snnnf )Naatypeall_atom_positionsall_atom_mask)rV   rn   itemsrq   rs   range)r   r   rx   r   _s        r    process_single_labelr      s    u5(((e###&()%0E 
% u{{u\':;':!A':;<<% 	 
 L <
s   	&B/B:BBc                 D    U  Vs/ s H  n[        X!5      PM     sn$ s  snf rb   )r   )labels_listr   lls      r    process_labelsr      s     =HI[r 2[IIIs   c                      [         R                  [         R                  [         R                  [         R                  " S5      [         R
                  " S5      [         R                  [         R                  /$ )N )r   r   make_atom14_positionsatom37_to_framesr   r   get_backbone_framesget_chi_anglesrc   r"   r    rn   rn      sU    ""&&!!))"-!!"%$$ r"   rb   )typingr   numpynprq   &modelscope.models.science.unifold.datar   r!   r9   rQ   ry   curry1rV   r   rp   r+   rl   r   r   rn   rc   r"   r    <module>r      s       ;$N#L@F-` 
 *  8< '/}@DJhsm J	r"   