CoolFace
Modelpublic

OneScience-Group/DiffDock

sourceHugging Facemitupdated 1mo agoView on Hugging Face
0likes32downloads
aa_model.cpython-311.pyc198 linesDownload Raw Back to __pycache__
12�aOjp����ddlmZddlZddlmZddlmZddlmZm	Z	ddl3mZddlm
Z
ddlZddlmZmZmZdd	lmZmZd4dlmZmZd5dlmZmZ	dd
lmZn
#e$rdZYnwxYwd�d�d�d�d�Z Gd�dejj!��Z"dS)�)�o3N)�nn)�6functional)�radius�radius_graph)�subgraph)�scatter_mean)�lig_feature_dims�rec_residue_feature_dims�rec_atom_feature_dims)�so3�torus�)�GaussianSmearing�AtomEncoder)�
get_irrep_seq�TensorProductConvLayer)�load_model_and_alphabetc�.�tj|d���S�Nr��dim)�torch�mean��xs �;/public/home/liuyx19/modelscope/diffdock/models/aa_model.py�<lambda>rs����A�1�!5�!5�!5��c�:�tj|d���dS�Nrrr)r�maxrs rrr����	�!�� 3� 3� 3�A� 6�rc�:�tj|d���dSr!)r�minrs rrrr#rc�.�tj|d���Sr)r�stdrs rrrs���	�!�� 3� 3� 3�r)rr"r%r'c���eZdZ													d�fd�	Zed���Zd�Zd�Zd�Zd�Z	d�Z7d�Zd�Zd�Z
d�Zd�Zd�Zd�Zd�Zd�Z�xZS) �AAModel�� ������FT�Nrr�mean max min stdc0�>��tt|�����|%r|�8Jd���|-r9Jd���|.r10Jd���| dkr|sJ�||_||_||rdndz}||_|11|_||_||_||_	|
|_12||_||_tj�|���|_||c|_|_||_||_||_||_||_||_|	|_||_||_||_|	|_|)|_||_||_| |!� d��c|_!|_"|$|_#|%|_$|'|_%|*|_&|,|_'|#|_(|/|_)||_*|�d}0n�|d	krd13}0n�tV�tYd���tW|��\}1}2|2�-��|_.t^j0�1��|1_2t^j0�1��|1_3|1j4}0|1|_5tl}3|3|tn|���|_8taj9taj:||z|z|��taj;��taj<|��taj:||����|_=taj9taj:||��taj;��taj<|��taj:||����|_>|3|t~d|0�
��|_@taj9taj:||��taj;��taj<|��taj:||����|_A|3|t�d���|_Ctaj9taj:||��taj;��taj<|��taj:||����|_Dtaj9taj:||z|��taj;��taj<|��taj:||����|_Etaj9taj:||��taj;��taj<|��taj:||����|_Ftaj9taj:||z|��taj;��taj<|��taj:||����|_Gt�d|14|��|_It�d||��|_Jt�d||��|_Kt�||||*��}4|&r15Jd���g}5t�|)��D]�}6|4t�|6t�|4��dz16��}7|4t�|6dzt�|4��dz17��}8t�|7|j|8d|zd|zd|||dko||(|'sdnd���}9|5�Q|9����tajR|5��|_S|+|_T|+r�g}:t�|)��D]�}6|4t�|6t�|4��dz18��}7|4t�|6dzt�|4��dz19��}8t�|7|j|8d|zd|zd|||dko||(d���}9|:�Q|9����tajR|:��|_Ug};t�|)|)|	z��D]�}6|4t�|6t�|4��dz20��}7|4t�|6dzt�|4��dz21��}8t�|7|j|8d|zd|zd|||dko||(|'sdn|6|)|	zdz22krdnd���}9|;�Q|9����tajR|;��|_V|j�r/|jr|j!dkrd|z}<n|"dz}<n|"}<|	|)zdkr	||*r|n|zn|}=|j'r�taj9taj:|=|��|stajW|��ntaj1��taj;��taj<|��taj:||��|stajW|��ntaj1��taj;��taj<|��taj:||#|z���	�	|_X|}=taj9taj:|=|��|stajW|��ntaj1��taj;��taj<|��taj:||��|stajW|��ntaj1��taj;��taj<|��taj:||<���	�	|_Y|j!dk�rtaj9taj:t�|j"��|z|��|stajW|��ntaj1��taj;��taj<|��taj:||��|stajW|��ntaj1��taj;��taj<|��taj:|d���	�	|_ZdSdSt�d|
|��|_[taj9taj:||z|��taj;��taj<|��taj:||����|_\t�|jVdj]|j|jsdndd|zd||���|_^taj9taj:d|z|��taj<|��taj;��taj:|d����|__taj9taj:d|z|��taj<|��taj;��taj:|d����|_`|�sEtaj9taj:||��taj;��taj<|��taj:||����|_atjb|jd��|_ct�|jVdj]|jcjd|js|�d|�d�n|�d�d|zd||���|_etaj9taj:|jsd|zn||d���tajf��taj<|��taj:|dd�����|_gdSdS)Nz(no language model emb without identitieszCsidechain prediction not implemented/makes sense for all atom modelz8depthwise convolution not implemented for all atom modelr�)�lmax� r�precomputedizIesm is required when lm_embedding_type is not None and not 'precomputed'.)�emb_dim�feature_dims�sigma_embed_dim)r8r9r:�lm_embedding_dimr1zcurrently not supportedTr*)�	in_irreps�	sh_irreps�23out_irreps�n_edge_features�hidden_features�residual�24batch_norm�dropout�faster�tp_weights_layers�edge_groups�	�����z2x1o + 2x1ez1x1o + 1x1er,F)r<r=r>r?rArCrB�2ezx0o + �x0e�x0o)�bias)h�superr)�__init__�25t_to_sigma�in_lig_edge_featuresr:�lig_max_radius�rec_max_radius�cross_max_distance�dynamic_max_cross�center_max_distance�distance_embed_dim�cross_distance_embed_dimr�Irreps�spherical_harmonicsr=�ns�nv�scale_by_sigma�
norm_by_sigma�device�26no_torsion�smooth_edges�27odd_parity�num_conv_layers�timestep_emb_func�separate_noise_schedule�confidence_mode�num_prot_emb_layers�asyncronous_noise_schedule�affinity_prediction�split�parallel�parallel_aggregators�fixed_center_conv�no_aminoacid_identities�differentiate_convolutions�reduce_pseudoscalars�atom_confidence�atom_num_confidence_outputs�crop_beyond�lm_embedding_typer�ImportError�get_batch_converter�batch_converterrr�Identity�lm_head�contact_head�	embed_dim�lmrr28�lig_node_embedding�29Sequential�Linear�ReLU�Dropout�lig_edge_embedding�rec_sigma_embeddingr�rec_node_embedding�rec_edge_embeddingr�atom_node_embedding�atom_edge_embedding�lr_edge_embedding�ar_edge_embedding�la_edge_embeddingr�lig_distance_expansion�rec_distance_expansion�cross_distance_expansionr�ranger%�lenr�append�30ModuleList�rec_emb_layers�embed_also_ligand�lig_emb_layers�conv_layers�BatchNorm1d�atom_confidence_predictor�confidence_predictor�affinity_predictor�center_distance_expansion�center_edge_embeddingr>�31final_conv�tr_final_layer�rot_final_layer�final_edge_embedding�FullTensorProduct�final_tp_tor�32irreps_out�
tor_bond_conv�Tanh�tor_final_layer)?�selfrOr^rcrPr:�sh_lmaxrZr[rbrQrRrSrUrVrWr_r\r]�use_second_order_reprrBrTrCr`rardrsre�confidence_dropout�confidence_no_batchnormrgrhrjrk�num_confidence_outputsrqrlrm�include_miscellaneous_atomsrnrErfror�rp�sidechain_pred�depthwise_convolutionrrr;r{�alphabet�atom_encoder_class�	irrep_seqr��ir<r>�layerr�r��output_confidence_dim�33input_size�	__class__s?                                                              �rrNzAAModel.__init__s����	�g�t���%�%�'�'�'�+�w�1B�1J�1J�Mw�1J�1J�K�!�h�h�#h�h�h�!�(�d�d�*d�d�d�(��a�<�<� 3�3�3� 3�$���$8��!��!8�?�A�A�a�@��.���,���,���"4���!2���#6�� �"4���(@��%���6�6�G�6�D�D����r������,���*������$���(���$���.���!2���'>��$�.���.���#6�� �*D��'�#6�� �3;�=Q�=W�=W�X[�=\�=\�0��
�t�0�!2���'>��$�*D��'�$8��!�.���+F��(�&���!2����$� ���
�-�
/�
/�!���&�.�!�_����3�3D�E�E�L�B��#+�#?�#?�#A�#A�D� ���*�*�,�,�B�J�#�h�/�/�1�1�B�O�!�|���D�G�)��"4�"4�R�N^�p�#A�#A�#A���"$�-��	�:N�Q`�:`�cu�:u�wy�0z�0z�{}�|C�|E�|E�FH�FP�QX�FY�FY�Z\�Zc�df�hj�Zk�Zk�#l�#l���#%�=���?�B�1O�1O�QS�QX�QZ�QZ�\^�\f�gn�\o�\o�qs�qz�{}�@B�rC�rC�$D�$D�� �"4�"4�R�Nf�xy�M]�#^�#^�#^���"$�-��	�:L�b�0Q�0Q�SU�SZ�S\�S\�^`�^h�ip�^q�^q�su�s|�}�BD�tE�tE�#F�#F���#5�#5�b�Od�vw�#x�#x�#x�� �#%�=���;M�r�1R�1R�TV�T[�T]�T]�_a�_i�jq�_r�_r�tv�t}�A�CE�uF�uF�$G�$G�� �!#��r�y��Kc�9c�eg�/h�/h�jl�jq�js�js�uw�u�AH�vI�vI�JL�JS�TV�XZ�J[�J[�"\�"\���!#��r�y�9K�R�/P�/P�RT�RY�R[�R[�]_�]g�ho�]p�]p�qs�qz�{}�@B�rC�rC�"D�"D���!#��r�y��Kc�9c�eg�/h�/h�jl�jq�js�js�uw�u�AH�vI�vI�JL�JS�TV�XZ�J[�J[�"\�"\���&6�s�N�L^�&_�&_��#�&6�s�N�L^�&_�&_��#�(8��>P�Rj�(k�(k��%�!�"�b�*?�AU�V�V�	�.�I�I�0I�I�I�.����*�+�+�	)�	)�A�!�#�a��Y���!�);�"<�"<�=�I�"�3�q�1�u�c�)�n�n�q�.@�#A�#A�B�J�*�#��.�%� !�B�� !�B���%���!�|�A�,A�(A�"3�%?�F�A�A�Q����E�
�!�!�%�(�(�(�(� �m�N�;�;���!2����	@��N��.�/�/�
-�
-��%�c�!�S��^�^�a�-?�&@�&@�A�	�&�s�1�q�5�#�i�.�.�1�2D�'E�'E�F�34�.�'�"�n�)�$%��F�$%��F�!�)�#�"�a�<�E�0E�,E�&7� !������%�%�e�,�,�,�,�"$�-��"?�"?�D�����*�,?�/�,Q�R�R�	&�	&�A�!�#�a��Y���!�);�"<�"<�=�I�"�3�q�1�u�c�)�n�n�q�.@�#A�#A�B�J�*�#��.�%� !�B�� !�B���%���!�|�A�,A�(A�"3�%?�B�A�A�1�Pc�fu�Pu�xy�Py�Ky�Ky�a�a�@A����E�
���u�%�%�%�%��=��5�5�����`	��'�
?��=�1�$�$�,-��F�)�)�,B�Q�,F�)�)�(>�%�FU�Xk�Fk�op�Fp�Fp��%9�A�r�r�r�B�B�vx�J��#�
 �13���I�j�"�-�-�.E�X�B�N�2�&�&�&�2�;�=�=��G�I�I��J�1�2�2��I�b�"�%�%�.E�X�B�N�2�&�&�&�2�;�=�=��G�I�I��J�1�2�2��I�b�"=��"B�C�C�352�362��.� �37�(*�
��	�*�b�)�)�*A�T���r�"�"�"�r�{�}�}���	�	��38�-�.�.��	�"�b�!�!�*A�T���r�"�"�"�r�{�}�}���	�	��39�-�.�.��	�"�3�4�4�40)�41)�D�%��}�q� � �*,�-��I�c�$�";�<�<�r�A�2�F�F�.E�X�B�N�2�&�&�&�2�;�=�=��G�I�I��J�1�2�2��I�b�"�%�%�.E�X�B�N�2�&�&�&�2�;�=�=��G�I�I��J�1�2�2��I�b�!�$�$�42+�43+��'�'�'�!� �.>�c�CV�Xj�-k�-k�D�*�)+���	�,��>��C�C���	�	��44�7�#�#��	�"�b�!�!�	*�*�D�&�5��*�2�.�9��.�15��S�>�>�m� !�B����%����D�O�#%�-��	�!�o�:M�r�0R�0R�SU�S]�^e�Sf�Sf�hj�ho�hq�hq�su�s|�}�BC�tD�tD�#E�#E�D��#%�=���1��;N�PR�1S�1S�TV�T^�_f�Tg�Tg�ik�ip�ir�ir�tv�t}�A�CD�uE�uE�$F�$F�D� ��
�,.�M��I�0�"�5�5��G�I�I��J�w�'�'��I�b�"�%�%�	-�-��)�%'�$8����$N�$N��!�%;�"�.�r�2�=�"�/�:�;?�?�Z�"�3�3�B�3�3�3�3�SU�PZ�PZ�PZ�$%��F�"�#�)�&�&�&��"�(*�}��I�D�O�C�a�"�f�f��R�e�T�T�T��G�I�I��J�w�'�'��I�b�!�%�0�0�0�	(�(��$�$�$�%
�
rc��t|dd��}||vr||S||vr||S	||S#t$r||cYSwxYw)N�45edge_types�)�getattr�	Exception)�data�primary_key�fallback_keyr�s    r�_resolve_edge_storezAAModel._resolve_edge_stores{���T�<��4�4�46��*�$�$���$�$��:�%�%���%�%�	&���$�$���	&�	&�	&���%�%�%�%�	&���s�3�A�Ac�0�|�|dd��S)N)�ligandr�)r��lig_bondr��r��r�r�s  r�_ligand_edge_storezAAModel._ligand_edge_store(s#���'�'�� �,�47�48�	49rc�0�|�|dd��S)N)�receptorr��r��rec_contactr�r�r�s  r�_receptor_edge_storezAAModel._receptor_edge_store/s#���'�'��$�3�50�51�	52rc�0�|�|dd��S)N)�atomr�)r��atom_contactr�r�r�s  r�_atom_edge_storezAAModel._atom_edge_store6s#���'�'���,�53�54�	55rc�0�|�|dd��S)N)r�r�)r��atom_rec_contactr�r�r�s  r�_atom_receptor_edge_storez!AAModel._atom_receptor_edge_store=s#���'�'�� �4�56�57�	58rc��(�|�|��}|�|��}|�|��}t|dd���s�|jdv�r)d�|djD���(t
�(dt��rd��(D���(d�t�(��D���(|�	�(��\}}}|�59|�|djj
��|j60jgd�	��}tj�(fd61�t|d|j62j��D��d���}	tj|dj|	gd
���|d_|�|��\}63}}}
|�|64��}65|�|��}|�|��\}}}}|�|��}|�|��}|�|��\}}}|�|��}|j���}|j���}|j���}tj|66|gd���}|dt7|67��z|d<tj|||t7|68��ztj|dg���gd���}tj||||gd���}tj||||gd���}tj|
��rtj|
|||gd���n/tjt7|d��df|j
���}t7|d��t7|d��t7|d��zt7|d��t7|d��zt7|d��z}}}t?t7|j ����D]�} tj|||dd|j!�f||dd|j!�fgd
��}!|j"r&|!d|�|!||�|!||�|!|d�g}!|j | |||!||���}��|dt7|69���|d_#||_$||_%|
|_&|t7|70��d�|d_'||_(||_%||_&||_)||_%||_&|�*|�+|j,d����}"|dj#dz}71|72dd�d|j!�f|"|dj-z|73dd�d|j!�f<|j$|"|dj-|jdz}|dj'dz}|dd�d|j!�f|"|dj-z|dd�d|j!�f<|j(|"|dj-|jdz}|j)|"|dj-|jdz}|�.|��\}#}$}%}&}'|�/|#��}#|�0|%��}%|j1r�t?t7|j2����D]_} tj|%|#|$dd|j!�f|#|$dd|j!�fgd
��}!|j2| |#|$|!|&|'���}#�`n0tgj4|#d|74j5d
|#j5d
z75f��}#|#|$|%|&|'|76|j||j%|j&||j||j%|j&|j||j%|j&fS)Nr��
rec_node_attr)Nr7c��g|]	}|D]}|���77Sr�r���.0�l�ss   r�78<listcomp>z%AAModel.embedding.<locals>.<listcomp>Js%��M�M�M�1�1�M�M�a�Q�M�M�M�Mrrc��g|]	}|D]}|���79Sr�r�r�s   rr�z%AAModel.embedding.<locals>.<listcomp>Ls%�� A� A� A�q�q� A� A�!�� A� A� A� Arc��g|]	\}}||f��80Sr�r�)r�r�r�s   rr�z%AAModel.embedding.<locals>.<listcomp>Ms ��E�E�E���1�a��V�E�E�ErF)�repr_layers�return_contactsc�\��g|](\}}|dt�|d�����)S)Nr)r�)r�r��t�	sequencess   �rr�z%AAModel.embedding.<locals>.<listcomp>PsJ���(D�(D�(D�T�Q���*?�3�y��|�A��+?�+?�*?�(@�(D�(D�(Dr�representationsrrH��dimsr�r^��edge_weightr��tr)6r�r�r��hasattrrs�sequence�81isinstance�list�	enumeratervr{�torr^�82num_layersr�cat�build_rec_conv_graphr�r��build_atom_conv_graphr�r��build_cross_rec_conv_graphr��83edge_index�cloner��flip�	is_tensor�onesr�r�rZrnr��
rec_edge_attr�edge_shr��atom_node_attr�atom_edge_attr�	edge_attrr�rc�	complex_t�batch�build_lig_conv_graphr|r�r�r��F�pad�shape))r�r��receptor_edge_store�atom_edge_store�atom_receptor_edge_store�batch_labels�84batch_strs�batch_tokens�out�85rec_lm_embr�r��rec_edge_sh�rec_edge_weightr�r��atom_edge_sh�atom_edge_weight�ar_edge_attr�86ar_edge_sh�ar_edge_weight�rec_edge_index�atom_edge_index�
ar_edge_index�	node_attrr�r�r�r��s1�s2�s3r��87edge_attr_�
rec_sigma_emb�
lig_node_attr�lig_edge_index�
lig_edge_attr�lig_edge_sh�lig_edge_weightr�s)                                        @r�	embeddingzAAModel.embeddingDsM	���"�7�7��=�=���/�/��5�5��#'�#A�#A�$�#G�#G� ��t�J�'��9�9�6	B��%�-B�B�B�M�M��Z�(8�(A�M�M�M�	��i��l�D�1�1�B� A� A�I� A� A� A�I�E�E�	�)�0D�0D�E�E�E�	�9=�9M�9M�i�9X�9X�6��j�,��g�g�l�o�o�d�:�.>�.@�.G�H�H�W[�W^�Wi�Vj�}B�g�C�C��"�Y�(D�(D�(D�(D�Y�WZ�[l�Wm�nr�nu�oA�XB�NC�NC�(D�(D�(D�JK�L�L�L�88�%*�Y��Z�0@�0B�J�/O�UW�%X�%X�%X��Z� �"�IM�Ib�Ib�cg�Ih�Ih�F�M�=�+�� �3�3�M�B�B�M� �3�3�M�B�B�M�MQ�Mg�Mg�hl�Mm�Mm�J�N�N�L�:J�!�5�5�n�E�E�N�!�5�5�n�E�E�N�7;�7V�7V�W[�7\�7\�4�L�*�n��1�1�,�?�?�L�0�;�A�A�C�C�N�-�8�>�>�@�@�O�4�?�E�E�G�G�M��	�=�.�"A�q�I�I�I�I�,�Q�/�#�m�2D�2D�D�M�!����N�M�?�UX�Yf�Ug�Ug�Cg�in�is�uB�JK�IL�jM�jM�jM�$N�TU�V�V�V�J��	�=�,��P\�"]�cd�e�e�e�I��i��j�,�89� S�YZ�[�[�[�G��?�?�3�3�w�%�)�_�n�FV�Xf�$g�mn�o�o�o�o�9>��S��TU��EW�EW�YZ�D[�dn�du�9v�9v�9v�
��^�A�.�/�/��^�A�5F�1G�1G�#�m�\]�N^�J_�J_�1_�ad�es�tu�ev�aw�aw�z}�L�MN�O�{P�{P�bP�SV�Wf�gh�Wi�Sj�Sj�bj�B��B��3�t�2�3�3�4�4�
x�
x��"�Y��	�*�Q�-��$�'��*A� B�I�j�YZ�m�]e�^b�^e�]e�Ne�Df�g�ik�m�m�90��2�J�*�S�b�S�/�S]�^`�ac�^c�Sd�fp�qs�tv�qv�fw�zD�EG�EH�EH�zI�BJ�J�2�D�/��2�9�j�*�V]�kv�w�w�w�	�	�.7�7J��M�8J�8J�7J�-K�D���*�0=��-�*5��'�.=��+�*3�C�
�4F�4F�4G�4G�*H�D��L�'�-;�O�*�&2�O�#�*:�O�'�1=�$�.�/9�$�,�3A�$�0��0�0��1G�1G���W[�H\�1]�1]�^�^�
��Z�(�6��:�
�%2�1�1�1�h�t�w�h�;�%?�-�PT�U_�P`�Pf�Bg�%g�
�a�a�a��$�'��k�"�+�9�M�$�z�JZ�J`�at�a�AB�bC�KD�=E�E�
��f��4�q�8��&4�Q�Q�Q�����[�&A�M�RV�W]�R^�Rd�De�&e��q�q�q�(�4�7�(�{�#�(�7�-��V��HZ�[j�[u�vw�[x�Hy�:z�z��0�9�M�$�v�,�J\�]u�^A�BC�^D�KE�=F�F��VZ�Un�Un�os�Ut�Ut�R�
�~�}�k�?��/�/�
�>�>�
��/�/�
�>�>�
��!�	i��3�t�2�3�3�4�4�
L�
L��"�Y�
�}�^�TU�EV�X`�Y]�Y`�X`�E`�7a�cp�q�AB�rC�EM�FJ�FM�EM�rM�dN�(O�QS�T�T�91� 6�� 3�A� 6�}�n�V`�bm�|K�!L�!L�!L�
�
�
L�92�E�-�!�]�5H��5L�}�Ob�ce�Of�5f�1g�h�h�M��n�m�[�/��1�<�m�M`�Mh�j}�kJ���9�>�?�Kb�ds�d�'�2�L�BZ�Bb�d|�eI�I�	Irc�����L��j�t��jr�djdz�d_�js�j
�fd�dD���\}}}n�fd
�dD��\}}}�����\}}	}93}}}
}}}}}}}}}}}}}�jr|dzdz�d��n�j}���|��\}}}}} }!}"}#��|��}��|!��}!t)|��t)|
��}%}$tj||
|gd���}&|���|���|���| ���|���f\}}}} }|d|$z|d|$zc|d<|d<|d|$z|%z|d|$z|%zc|d<|d<|d|$z|d<| d|$z|%z| d<|d|$z|%z|d|$zc|d<|d<tj|	|| |tj|dg���tj|dg���|tj| dg���|g	d���}'tj|94||!|||||!|g	d���}(tj|||"|||||"|g	d���})tj|��rtj|||#|||||#|g	d���n/tjt)|'d��df|'j���}*t7t9jt=t?t(|95||!|||||!|g	������� ����\	}+},}-}.}/}0}1}2}3tCt)�j"����D�]�}4|4t)�j"��dz96kr�tj|(|&|'dd�j#�f|&|'dd�j#�fgd��}5�j$rS|5d|+�|5|+|,�|5|,|-�|5|-|.�|5|.|/�|5|/|0�|5|0|1�|5|1|2�|5|2d�g	}5�j"|4|&|'|5|)|*���}&��tj|(d|-�|&|'dd|-�fd�j#�f|&|'dd|-�fd�j#�fgd��}5�j$r|5d|+�|5|+|,�|5|,|-�g}5�j"|4|&|'dd�d|-�f|5|)d|-�|*d|-����}&���|&dt)|���}�j�rމj%�j&zdkrItj|dd�d�j#�f|dd��j'r�j(n�j#d�fgd���n|dd�d�j#�f}6�j)r<��*|6��}6|6dd�d�j+�f}7|6dd��j+d�f}6n)tj,t)|��f|j���}7��-t]|6�dj/d������0d���}8�j1dkr�|8dd�df|8dd�dd�fc}8�L|8�2�j3�j1��}8�L�2�j3�j1d���Ltj�Lfd��j4D��d����L��5�L���0d����L|8�Lf}8|8|7fS�j1dksJ���6���\}9}:};��7|:��}:�j8r-tj|:||9dd�j#�fgd��}:n,tj|:||9dd�j#�fgd��}:��9||9|:|;�j3���}<|<dd�dd�f�j:s|<dd�dd�fndz}=|<dd�dd�f�j:s|<dd�dd�fndz}>�j;r)tj��fd�dD��d����_<nR�j=r&��>�j?d���_<n%��>�j?d���_<tj@�A|=d����d��}?|=|?z��Btj|?�j<gd�����z}=tj@�A|>d����d��}@|>|@z��Ctj|@�j<gd�����z}>�jDrw|=|�d��z}=|>t�jF|�G�����d���H�djj��z}>�jIs#�djJ���dkr|=|>tjKd�j���dfS��L���\}A}B}C}D}E�dj|Ad�dj|Adz97}F||Ad||Adz}Gt�jNd|Fd	d���}H��O|D|H|Bd��}Dtj|C||Bdd�j#�f|G|Bdd�j#�fgd��}C��P||B|C|D�djJ���d|E���}I��Q|I���0d��}I��R���}J|�dj/|Jj98d�djJ}K�jDr�|ItjStjTt�jF|K�G���V�������W���H�djj����z}I|=|>|IdfS)Nr�r�rrr,rHrr�T)�
relabel_nodesc�*��g|]}�j|��Sr��r��r��99noise_typer�s  �rr�z#AAModel.forward.<locals>.<listcomp>�s3���?B�?B�?B�^h�t�~�j�?Y�?B�?B�?Br�r��rot�torc�*��g|]}�j|��Sr�r#r$s  �rr�z#AAModel.forward.<locals>.<listcomp>�s ���-p�-p�-p�Z�d�n�Z�.H�-p�-p�-prr4�r�r�r�c�:��g|]}t|�����Sr�)�AGGREGATORS)r��agg�affinitys  �rr�z#AAModel.forward.<locals>.<listcomp>�s&���%f�%f�%f�S�k�#�&6�x�&@�&@�%f�%f�%fr)�	out_nodes�rGc�P��g|]"}���j|����#Sr�)rcr��r�r%r�r�s  ��rr�z#AAModel.forward.<locals>.<listcomp>sB���.I�.I�.I�eo�d�.D�.D�T�^�T^�E_�.`�.`�.I�.I�.Irr�r�rI�	component��	normalize�
normalizationr)r/�reducer�)Xrr�NotImplementedError�posr�any�sum�	unsqueezer�side_chain_vecsrr�rmrerOrrTrS�build_cross_lig_conv_graphr�r�r�r�r�r�r�r�r^�tuple�np�cumsumr��map�tolistr�r�rZrnrbrfror[rpr�rq�zerosr�r	r��squeezerj�reshape�100num_graphsrkr��build_center_conv_graphr�rlr�rard�graph_sigma_embrgrcr��linalg�vector_normr�r�r\r
�101score_norm�cpur�r_�	edge_mask�empty�build_bond_conv_graphrrYr�r�r�r��sqrt�tensorr�numpy�float)Mr�r��102ligand_pos�receptor_pos�residues_to_keep�tr_sigma�	rot_sigma�	tor_sigmarrrrrr�rr�r103rr�rr�rr
rrrr�cross_cutoff�
lr_edge_index�lr_edge_attr�104lr_edge_sh�lr_edge_weight�
la_edge_index�la_edge_attr�105la_edge_sh�la_edge_weight�n_lig�n_recrr�r�r�r�rrr�s4�s5�s6�s7�s8�_r�r�scalar_lig_attrrp�106confidence�center_edge_index�center_edge_attr�center_edge_sh�global_pred�tr_pred�rot_pred�tr_norm�rot_norm�	tor_bonds�tor_edge_index�
tor_edge_attr�tor_edge_sh�tor_edge_weight�tor_bond_vec�
tor_bond_attr�tor_bonds_sh�tor_pred�ligand_edge_store�107edge_sigmar.sM``                                                                          @r�forwardzAAModel.forward�s�������'�%�%��'�	8�!%�j�!1�!3�a�!7�D�����#�	q�-<�T�_�?B�?B�?B�?B�mA�?B�?B�?B�.C�*�H�i���-p�-p�-p�-p�[o�-p�-p�-p�*�H�i��108GK�n�n�UY�FZ�FZ�	D�
�~�}�k�?�Ta��M�;���O�^�\�K[��<��^�<@�;Q�n��1��r�)�4�4�Q�7�7�7�W[�Wn��)-�)H�)H��|�)\�)\�	'�
�|�Z���P\����,�,�\�:�:���-�-�l�;�;���=�)�)�3�}�+=�+=�u���I�}�m�^�L�RS�T�T�T�	�We�Wk�Wk�Wm�Wm�o~�pE�pE�pG�pG�IV�I\�I\�I^�I^�`m�`s�`s�`u�`u�wD�wJ�wJ�wL�wL�XL�T����
�}�/=�a�/@�5�/H�.�YZ�J[�^c�Jc�,��q��>�!�,�1@��1C�e�1K�e�1S�Ud�ef�Ug�jo�Uo�rw�Uw�.����O�A�.�(��+�e�3�
�a��(��+�e�3�e�;�
�a��-:�1�-=��-E��-M�}�]^�O_�bg�Og�*�
�a��-��*��Y��
�}�n� %�109�=��s� C� C� C�U�Z�P]�ef�dg�Eh�Eh�Eh� /���M�QR�PS�1T�1T�1T�Vc� e�jk�m�m�m�110��I�}�l�L�-�Ye�+�^�\�<�Y�^_�a�a�a�	��)�[�*�j�+�z�[e�)�:�z�C�HI�K�K�K��+0�/�/�*J�*J�u�e�i��.�.�Ra�cq�!/�1A�>�Sa�!c�$%�'�'�'�'�PU�PZ�\_�`j�kl�`m�\n�\n�pq�[r�bl�bs�Qu�Qu�Qu�	�-2�"�)�D��S�=�Zf�ht�KX�Zf�ht�wE�GS�Ua�Kb�Bc�Bc�=d�=d�3e�3e�fl�fl�fn�fn�-o�-o�)��B��B��B��B���s�4�+�,�,�-�-�		G�		G�A��3�t�'�(�(�1�,�,�,�"�Y�	�9�Z��]�H�T�W�H�=T�3U�W`�ak�lm�an�px�qu�qx�px�ax�Wy�'z�|~���111��2�_�*�S�b�S�/�S]�^`�ac�^c�Sd�fp�qs�tv�qv�fw�zD�EG�HJ�EJ�zK�BL�R�PR�U�BS�U_�`b�ce�`e�Uf�hr�su�vx�sx�hy�|F�GI�JL�GL�|M�OY�Z\�Z]�Z]�O^�B_�J�/�D�,�Q�/�	�:�z�SZ�hs�t�t�t�	�	�"�Y�	�#�2�#��	�*�Q�PS�QS�PS�V�BT�V^�W[�W^�V^�B^�8_�aj�ku�vw�y|�z|�y|�v|�k}�@H�AE�AH�@H�lH�bI�(J�LN�O�O�112��2�x�*�S�b�S�/�S]�^`�ac�^c�Sd�fp�qs�tv�qv�fw�Ax�J�/�D�,�Q�/�	�:�a�a�a��"��f�;M�z�[b�cf�df�cf�[g�vA�BE�CE�BE�vF�G�G�G�	�	�!�"5�3�}�#5�#5�"5�6�
���	/��'�$�*B�B�a�G�G�$�i��q�q�q��$�'��z�)B�M�RS�RS�RS�ae�az�WH�VZ�V]�V]�AE�AH�UI�UJ�UJ�SJ�EK�)M�ST�U�U�U�U�MZ�[\�[\�[\�]e�^b�^e�]e�[e�Mf�
��#�
b�"&�"@�"@��"Q�"Q��"1�!�!�!�5V�d�6V�5V�2V�"W��"1�!�!�!�T�5U�5V�5V�2V�"W���"'�+�s�=�/A�/A�.C�M�L`�"a�"a�"a���2�2�<��QU�V^�Q_�Qe�kl�3m�3m�3m�n�n�v�v�{}�v�~�~�J��}�q� � �'1�!�!�!�Q�$�'7��A�A�A�q�r�r�E�9J�$�113�H�'�/�/�����O�O�114�#�+�+�D�O�T�]�B�O�O�� �9�%f�%f�%f�%f�D�Le�%f�%f�%f�ln�o�o�o���2�2�8�<�<�D�D��D�L�L��'��1�115���.�.��}��!�!�!�!�?C�>Z�>Z�[_�>`�>`�;��+�^��5�5�6F�G�G���!�	p�$�y�*:�M�J[�\]�J^�`h�ae�ah�`h�Jh�<i�)j�ln�o�o���$�y�*:�M�J[�\]�J^�`h�ae�ah�`h�Jh�<i�)j�ln�o�o���o�o�m�5F�HX�Zh�tx�uD�o�E�E���a�a�a��!��e�$�4�?�(Y��A�A�A�q��s�F�(;�(;�XY�Z���q�q�q�!�A�#�v�&�D�O�*Z�+�a�a�a����e�*<�*<�YZ�[���'�	P�#(�9�.I�.I�.I�.I�.I�tH�.I�.I�.I�OP�$Q�$Q�$Q�D� � �
�
,�	P�#'�#9�#9�$�.��:M�#N�#N�D� � �#'�#9�#9�$�.��:N�#O�#O�D� ��,�*�*�7��*�:�:�D�D�Q�G�G���G�#�d�&9�&9�%�)�W�d�Nb�Dc�ij�:k�:k�:k�&l�&l�l���<�+�+�H�!�+�<�<�F�F�q�I�I���h�&��)=�)=�e�i��SW�Sg�Hh�no�>p�>p�>p�)q�)q�q����	k��� 2� 2�1� 5� 5�5�G��#�.������"A�"A�"K�"K�A�"N�"N�"Q�"Q�RV�W_�R`�Rb�Ri�"j�"j�j�H��?�	E�d�8�n�6�:�:�<�<��A�A�'�S[�]b�]h�ij�rv�r}�]~�]~�]~�AE�KE�DE�RV�Qk�Qk�lp�Qq�Qq�N�	�>�=�+���H�~�)�)�A�,�7�$�x�.�:L�Y�WX�\�:Z�Z��%�i��l�3�m�I�a�L�6Q�Q�
��-�d�L�D�`k�l�l�l���'�'��\�.�QR�BS�5T�U�U���	�=�-��q�@Q�S[�TX�T[�S[�@[�2\�#0���1B�H�T�W�H�1L�#M�#O�PR�T�T�
��%�%�m�^�]�T_�,0��N�,D�,H�,H�,J�,J�SY�gv�&�x�x���'�'��1�1�9�9�!�<�<�� �3�3�D�9�9���t�H�~�3�4�5F�5Q�RS�5T�U�VZ�[c�Vd�Vn�o�116���	K��%�*�U�\�%�:J�:�>�>�K[�K[�Ka�Ka�Kc�Kc�:d�:d�-e�-e�-k�-k�-m�-m�.0�b��h��1A�1H�.I�.I�#K�#K�K�H���(�D�0�0rc���|jrqtj|�d���tjz|ztj���}dtj|��dz�d��zSdS)NrHr)r"g�?g�?)r`r�clip�normr@�pi�cosr<)r��edge_vec�max_norm�normalised_norms    r�get_edge_weightzAAModel.get_edge_weight3sm����	J�#�j����2��)>�)>���)F��)Q�WY�W\�]�]�]�O��%�)�O�4�4�s�:�E�E�b�I�I�I�I��src117������jr/tj��fd�dD��d����d_nj�jr2���djd���d_n1���djd���d_�jdkr.t�dj	�j118�dj��}�ntj�j
�djj���������d	�djtjt'�dj���djj����������j
}���fd119�t)|��D��}tj|���d_t�dj	�j120�dj��}�����}tj|j|gd�����}tj|jtj|jd�j�djj���gd	��}�dj|d	���}tj||gd��}tj�dj�djgd��}	|\}121}�dj	|����dj	|122���z123}��|�d�����}
tj||
gd��}t;j�j|dd
���}�� |�j124��}|	||||fS)Nc�\��g|](}���dj|����)S)r�)rc�node_tr2s  ��rr�z0AAModel.build_lig_conv_graph.<locals>.<listcomp>=s3���r�r�r�z��'�'��X��(=�j�(I�J�J�r�r�rrr&rrr�r�r�r�rc�125��g|]}t�j��D]h}tj�|����jz�djj�������j|z|zz��i��S)r�r�)r�rjrr��itemrr^�long)r�r��j�batchesr�r�s   ���rr�z0AAModel.build_lig_conv_graph.<locals>.<listcomp>Ks����N�N�N���d�m�8L�8L�N�N�34���G�A�J�O�O�-�-�t�}�<�T�(�^�EU�E\�]�]�]�b�b�d�d�hl�hu�xy�hy�|}�h}�~�N�N�N�NrrHTr3r4)!rdrr��node_sigma_embrgrcr�rjrr9rQr�rDrGrr^r��	index_addr�r�r��batch_parallelr�r�r�rrPr�r�rrYr=r�)r�r��radius_edges�
outer_batches�brr�r��edge_sigma_embr�src�dstr��edge_length_embr�r�r�s``              @rr�zAAModel.build_lig_conv_graph9s�������'�	-�,1�I�r�r�r�r�r�]q�r�r�r��-�-�-�D��N�)�)��
,�	-�,0�,B�,B�4��>�CX�Y\�C]�,^�,^�D��N�)�)�,0�,B�,B��X��%�d�+�--�--�D��N�)��=�A���'��X��(:�D�<O�QU�V^�Q_�Qe�f�f�L�L��k�$�/�$�x�.�:J�:Q�R�R�R�W�W�Y�Y�G��'�'��4��>�+?���C�PT�U]�P^�Pd�Le�Le�nr�s{�n|�n~�oF�BG�BG�BG�BL�BL�BN�BN�O�O�G� �O�M�N�N�N�N�N�N��
�.�.�N�N�N�A�,1�I�a�L�L�D��N�)�'��X��(:�D�<O�QU�V^�Q_�Qn�o�o�L� �3�3�D�9�9���Y� 1� <�l�K�Q�O�O�T�T�V�V�126��I��'��K��*�2�.��0I�RV�W_�R`�Rb�Ri�j�j�j�127�
���	�128�h��6�z�!�}�7I�7I�7K�7K�L���I�y�.�9�1�=�=�	��I�t�H�~�/��h��1N�O�QR�S�S�	����S���>�%�c�h�h�j�j�1�D��N�4F�s�x�x�z�z�4R�R���5�5�h�m�m��m�6K�6K�L�L���I�y�/�:�A�>�>�	��(����T�al�m�m�m���*�*�8�T�5H�I�I���*�i��+�E�Erc��|dj}|�|��j}|\}}|dj|���|dj|���z129}|�|�d�����}tj|j	|dd���}|�130||j��}	||||	fS)Nr�rHrTr3r4)rr�r�r9r�r�r�rrYr=r�rR�131r�r�rr�r�r�r�r�r�r�s132          rr�zAAModel.build_rec_conv_graphds�����$�&�	��.�.�t�4�4�?�133����S��134�#�'����135136�3�d�:�6F�6J�3�8�8�:�:�6V�V���/�/��
�
�"�
�0E�0E�F�F�	��(����T�al�m�m�m���*�*�8�T�5H�I�I���)�W�k�9�9rc��|dj}|�|��j}|\}}|dj|���|dj|���z137}|�|�d�����}tj|j	|dd���}|�138||j��}	||||	fS)Nr�rHrTr3r4)rr�r�r9r�r�r�rrYr=r�rQr�s139          rr�zAAModel.build_atom_conv_graphss�����L�N�	��*�*�4�0�0�;�140����S���<�#�C�H�H�J�J�/�$�v�,�2B�3�8�8�:�:�2N�N���/�/��
�
�"�
�0E�0E�F�F�	��(����T�al�m�m�m���*�*�8�T�5H�I�I���)�W�k�9�9rc��tj|��rjt|dj||djz|dj||djzd|dj|djd���}nAt|dj|dj||dj|djd���}|dj|d���|dj|d���z141}|�|�d�����}|dj|d���}tj	||gd��}tj|j|d	d142���}tj|��r1||dj|d�
��n|}	|�||	��}143t|dj|dj|j|dj|djd���}|dj|d���|dj|d���z144}|�|�d�����}
|dj|d���}tj	||
gd��}tj|j|d	d145���}|�||j��}||||146||||fS)
Nr�r�ri')�max_num_neighborsrrHrTr3r4r�)rr�rr9r�r�r�r�r�r�rrYr=rEr�rQr�)r�r��lr_cross_distance_cutoffr\�lr_edge_vec�lr_edge_length_emb�lr_edge_sigma_embr]r^�cutoff_dr_r`�la_edge_vec�la_edge_length_emb�la_edge_sigma_embrarbrcs                  rr>z"AAModel.build_cross_lig_conv_graph�s/���?�3�4�4�	c�"�4�147�#3�#7�:R�SW�Xb�Sc�Si�:j�#j� $�X�� 2�5M�d�S[�n�Nb�5c� c�ef� $�Z� 0� 6��X��8L�`e�g�g�g�M�M�#�4�148�#3�#7��h��9K�Me� ��,�2�D��N�4H�\a�c�c�c�M��:�&�*�=��+;�+@�+@�+B�+B�C�d�8�n�FX�Yf�gh�Yi�Yn�Yn�Yp�Yp�Fq�q��!�:�:�;�;K�;K�PR�;K�;S�;S�T�T�� ��N�9�-��:J�:O�:O�:Q�:Q�R���y�"3�5G�!H�!�L�L���+�D�N�K�SW�gr�s�s�s�149���7�8�8�W�+�D��N�,@��q�AQ�,R�S�[�[�]�]�]�>V�	��-�-�k�8�D�D���t�F�|�/��h��1C�T�EX�#�F�|�1�4��>�3G�[`�b�b�b�
��6�l�&�}�Q�'7�'<�'<�'>�'>�?�$�x�.�BT�Ub�cd�Ue�Uj�Uj�Ul�Ul�Bm�m��!�8�8��9I�9I�b�9I�9Q�9Q�R�R�� ��N�9�-��:J�:O�:O�:Q�:Q�R���y�"3�5G�!H�!�L�L���+�D�N�K�SW�gr�s�s�s�150��-�-�k�4�;N�O�O���l�J��
�Wc��>�*�	*rc�~�|�|��j}|dj|d���|dj|d���z151}|�|�d�����}t
j|j|dd�	��}d}|||fS)152Nr�rr�rrHrTr3r4)	r�r�r9r�r�r�rrYr=)r�r�r�ar_edge_vecrrrs       rr�z"AAModel.build_cross_rec_conv_graph�s����6�6�t�<�<�G�
��:�&�*�=��+;�+@�+@�+B�+B�C�d�6�l�FV�Wd�ef�Wg�Wl�Wl�Wn�Wn�Fo�o���2�2�;�3C�3C��3C�3K�3K�L�L���+�D�N�K�SW�gr�s�s�s�153����Z��7�7rc	�V�tj|dj�d��tjt|dj�����|djj���d��gd���}tj	|j154df���|djj��tj	|j155df���|djj��}}|�d|dj|dj���|tj
|dj���d��z}|dj|d||dz156}|�|�d�����}|dj|d���}tj||gd��}t%j|j|dd	�157��}|||fS)Nr�rrr4)�index�sourcerrHTr3r4)rr�r�r<�aranger�r�rr^rDrG�158index_add_r9�bincountr�r�r�r�rrYr=)	r�r�r��159center_pos�countr�r�r�r�s	         rrHzAAModel.build_center_conv_graph�s ���Y��X�� 4� >� >�q� A� A�5�<�PS�TX�Ya�Tb�Th�Pi�Pi�Cj�Cj�Cm�Cm�nr�s{�n|�n~�oF�DG�DG�DQ�DQ�RS�DT�DT� U�[\�]�]�]�160�!�K���!�(<�=�=�@�@��h��AQ�AX�Y�Y�[`�[f�hl�hw�yz�g{�[|�[|�[�[�AE�FN�AO�AQ�AX�\Y�\Y�E�161����a�t�H�~�';�D��N�DV��W�W�W��%�.��h��1E�"F�"F�"P�"P�QR�"S�"S�S�162���>�%�j��m�4�z�*�Q�-�7P�P���2�2�8�=�=�R�=�3H�3H�I�I�	��h��6�z�!�}�7I�7I�7K�7K�L���I�y�.�9�1�=�=�	��(����T�al�m�m�m���9�g�-�-rc���|�|��jdd�|djf���}|dj|d|dj|dzdz}|dj|d}t
|dj||j|dj|���}|dj|d||dz163}|�|�	d�����}|�164|��}tj|j
|dd	�165��}|�||j��}	|||||	fS)Nr�rrr,)�batch_x�batch_yrHrTr3r4)r�r�rNr�r9r�rrQr�r�r�rrYr=r�)166r�r��bonds�bond_pos�167bond_batchr�r�r�r�r�s168          rrPzAAModel.build_bond_conv_graph�sP���'�'��-�-�8����D��N�<T�9T�U�Z�Z�\�\����N�&�u�Q�x�0�4��>�3E�e�A�h�3O�O�ST�T���(�^�)�%��(�3�169��D��N�.��$�:M�W[�\d�We�Wk�u�A�A�A�170���>�%�j��m�4�x�171�1�
�7N�N���/�/��
�
�"�
�0E�0E�F�F�	��-�-�i�8�8�	��(����T�al�m�m�m���*�*�8�T�5H�I�I���j�)�W�k�A�Ar),r*r+r,r-r*r,r.r/r0r/r+r+FTTFTFr1FFFNFrFFFrr2rrFFFTr,rFFFFFN)�__name__�172__module__�__qualname__rN�staticmethodr�r�r�r�r�rr�r�r�r�r�r>r�rHrP�
__classcell__)r�s@rr)r)ss�������rs�il�hm�bf�V[�X]�AF�WX�FK�LQ�[\�lq�:>�~�~�~�~�~�~�@�	&�	&��\�	&�173�174�175�176�177�178�179�180�181�182�183�184�ZI�ZI�ZI�xQ1�Q1�Q1�f���)F�)F�)F�V
:�
:�
:�
:�
:�
:�#*�#*�#*�J1858�1868�1878�.�.�.� B�B�B�B�B�B�Brr))#�e3nnrrr�torch.nnrr��
torch_clusterrr�torch_geometric.utilsr�
torch_scatterr	rSr@�*onescience.datapipes.diffdock.process_molsr188rr�onescience.utils.diffdockr
r�layersrr�
tensor_layersrr�esm.pretrainedrrtr,�Moduler)r�rr�<module>r�s�������������������$�$�$�$�$�$�.�.�.�.�.�.�.�.�*�*�*�*�*�*�&�&�&�&�&�&�����x�x�x�x�x�x�x�x�x�x�0�0�0�0�0�0�0�0�1�1�1�1�1�1�1�1�@�@�@�@�@�@�@�@�#�6�6�6�6�6�6�6���#�#�#�"����#����6�5�6�6�6�6�3�3�5�5��v189B�v190B�v191B�v192B�v193B�e�h�o�v194B�v195B�v196B�v197B�v198Bs�A�A#�"A#