o
    *j                     @   s"  d dl Zd dlZd dlZd dlZd dlmZmZ d dlZd dl	Z
d dlmZ ddlmZ ddlmZ d&d	d
Zeddddedeeef fddZeddddedeeef fddZdd ZdedefddZdefddZde
jiZdedefdd Zdedefd!d"Zd#efd$d%ZdS )'    N)AnyDict)sparse   )residue_constants)	NumpyDict   Fc                    s<   |r fdd}|S |r fdd}|S t  }|S )Nc                    *   t |  t |  fdd}|S )Nc                        t  | i |S N)copy_libdeepcopyargskwargsZcached_func m/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/science/unifold/data/utils.pywrapper      -lru_cache.<locals>.decorator.<locals>.wrapper	functools	lru_cachewrapsfr   maxsizetypedr   r   	decorator      zlru_cache.<locals>.decoratorc                    r	   )Nc                     r
   r   )r   copyr   r   r   r   r   %   r   r   r   r   r   r   r   r    "   r!   )r   r   )r   r   r"   r   r    r   r   r   r      s   r      T)r   r   pathreturnc                 C      dd }|| }t |}|S )Nc                 S   p   |  ds|  dsJ d|  d|  drtjnt}|| d}t|W  d    S 1 s1w   Y  d S Nz.pklz.pkl.gzzbad suffix in z as pickle file.z.gzrbendswithgzipopenpickleloadr$   Zopen_fnr   r   r   r   r/   3      
$zload_pickle_safe.<locals>.loaduncompress_featuresr$   r/   retr   r   r   load_pickle_safe0      r6   )r   r"   c                 C   r&   )Nc                 S   r'   r(   r*   r0   r   r   r   r/   B   r1   zload_pickle.<locals>.loadr2   r4   r   r   r   load_pickle?   r7   r8   c                 C   s8   t j| ddt j} tj}t j|| t jdd} | S )zECorrect template restype to have the same order as residue_constants.)Zaxisr   )npZargmaxastypeint32rcZ MAP_HHBLITS_AATYPE_TO_OUR_AATYPEZtake)featureZnew_order_listr   r   r   correct_template_restypesN   s   r?   r>   c                    sD   | d  tj| d< d| v r| d dd   fdd|  D S )NmsaZnum_alignmentsc                 S   s   |  ds
|  dS | S )NZ_all_seq)r+   )kr   r   r   make_all_seq_key\   s   

z1convert_all_seq_feature.<locals>.make_all_seq_keyc                    s   i | ]	\}} ||qS r   r   .0rA   vrB   r   r   
<dictcomp>a   s    z+convert_all_seq_feature.<locals>.<dictcomp>)r;   r:   uint8popitems)r>   r   rF   r   convert_all_seq_featureV   s
   
rK   
spmat_dictc                 C   s2   t j| d | d | d ff| d tjd}| S )Ndatarowcolshape)rP   dtype)sp
coo_matrixr:   Zfloat32Ztoarray)rL   Zspmatr   r   r   to_dense_matrixd   s   rT   r@   featsc                 C   s&   d| v r|  d}t|}|| d< | S )NZsparse_deletion_matrix_intZdeletion_matrix)rI   rT   )rU   rE   r   r   r   r3   p   s
   
r3   c                    s   t  dksJ d  d v r fdd|  D } | S d v r7 d D ]}|| v s4J d| dq&| S d	 v rH fd
d|  D } | S td  )Nr   z#wrong usage of filter with kwargs: desired_keysc                    s"   i | ]\}}| d  v r||qS )rV   r   rC   r   r   r   rG   {       zfilter.<locals>.<dictcomp>required_keyszcannot find required key .ignored_keysc                    s"   i | ]\}}| d  vr||qS )r[   r   rC   rW   r   r   rG      rX   )lenrJ   AssertionError)r>   r   rA   r   rW   r   filterx   s    

r^   featuresc                 C   s   dt ji}dg}i }|  D ]1\}}||v r||| }||v r;tj||jd}|j|j|j	|j
d}d| }|}|||< q|S )Nr@   Zdeletion_matrix_int)rQ   )rP   rN   rO   rM   Zsparse_)r:   rH   rJ   r;   rR   rS   rQ   rP   rN   rO   rM   )r_   Zchange_dtypeZsparse_keysZcompressed_featuresrA   rE   Zsp_vr   r   r   compress_features   s$   

r`   )r   FFF)r"   r   r   r,   r.   typingr   r   jsonnumpyr:   Zscipyr   rR    r   r=   Zdata_opsr   r   strr6   r8   r?   rK   rT   r<   ZFEATS_DTYPEr3   r^   r`   r   r   r   r   <module>   s,   



	