
    9i	                         S SK r S SKrS SKJr  S SKrS SKJr  S SKJr  S SK	J
r
  S SKJrJr  SSKJr  SS	KJr  S
/r\
R&                  " \R(                  \R*                  S9 " S S
\5      5       rS rg)    N)Any)Models)
TorchModel)MODELS)	ModelFileTasks   )model_config)	AlphaFoldUnifoldForProteinStructrue)module_namec                   Z   ^  \ rS rSr\S 5       rU 4S jrS rS r\	S 5       r
S rSrU =r$ )	r      c                 $    U R                  SSS9  g)z+Add model-specific arguments to the parser.z--model-namezchoose the model config)helpN)add_argument)parsers    g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/science/unifold/model.pyadd_args#UnifoldForProteinStructrue.add_args   s     	* 	 	
    c           	        > [         TU ]  5         [        R                  " 5       n/ nU H>  nUR	                  SU 35        UR                  SU 35        UR                  X   5        M@     UR                  U5      n[        U5        XPl        [        U R                  R                  SS9n[        U5      U l        X`l        [        R                  R!                  US   ["        R$                  5      n[&        R(                  " U5      S   S   nUR+                  5        V	V
s0 s H)  u  pSR!                  U	R-                  S5      SS  5      U
_M+     nn	n
U R                  R/                  U5        g s  sn
n	f )	Nz--T)train	model_diremaparams.r	   )super__init__argparseArgumentParserr   append
parse_argsbase_architectureargsr
   
model_namer   modelconfigospathjoinr   TORCH_MODEL_BIN_FILEtorchloaditemssplitload_state_dict)selfkwargsr   
parse_commkeyr%   r(   
param_path
state_dictkv	__class__s              r   r   #UnifoldForProteinStructrue.__init__   sO   ((*
C"SE
+3%j)fk*    ,$	II  
 v&
 WW\\&"5"+"@"@B
ZZ
+E28<
 #((*
* HHQWWS\!"%&)* 	 
 	

"":.	
s   !0E0c                 D    U R                   R                  5       U l         U $ N)r'   halfr2   s    r   r>   UnifoldForProteinStructrue.half;   s    ZZ__&
r   c                 D    U R                   R                  5       U l         U $ r=   )r'   bfloat16r?   s    r   rB   #UnifoldForProteinStructrue.bfloat16?   s    ZZ((*
r   c                     U " U5      $ )zBuild a new model instance. )clsr%   tasks      r   build_model&UnifoldForProteinStructrue.build_modelC   s     4yr   c                 f    U R                   R                  U5      nX0R                  R                  4$ r=   )r'   forwardr(   loss)r2   batchr3   outputss       r   rK   "UnifoldForProteinStructrue.forwardH   s)    **$$U+((((r   )r%   r(   r'   )__name__
__module____qualname____firstlineno__staticmethodr   r   r>   rB   classmethodrH   rK   __static_attributes____classcell__)r:   s   @r   r   r      sD     
 
/8  ) )r   c                 (    [        U SS5      U l        g )Nr&   model_2)getattrr&   )r%   s    r   r$   r$   M   s    dL)<DOr   )r    r)   typingr   r-   modelscope.metainfor   modelscope.modelsr   modelscope.models.builderr   modelscope.utils.constantr   r   r(   r
   modules.alphafoldr   __all__register_moduleprotein_structureunifoldr   r$   rE   r   r   <module>re      sf     	   & ( , 6   ('
( //V^^L5) 5) M5)p=r   