Team Ai
Modelpublic

OneScience-Group/DiffDock

sourceHugging Facemitupdated 2mo agoView on Hugging Face
0likes53downloads
sample_diffdock.cpython-310.pyc73 linesDownload Raw Back to __pycache__
1o

2�aOj�:�@s�ddlZddlZddlZddlZddlmZddlmZddlZ	ddl3Z4ddlZddlm
Z
ddlmZddlmZddlmZddlmZmZdd	lmZmZdd5lmZmZddlmZzdd
lm Z m!Z!m"Z"Wne#y}dd
lm Z m!Z!m"Z"Ynwdd�Z$dd�Z%dd�Z&dd�Z'dd�Z(dd�Z)dd�Z*dd�Z+dd�Z,d d!�Z-d"d#�Z.d$d%�Z/d&d'�Z0d(d)�Z1d*d+�Z2e3d,kr�e2�dSdS)-�N)�Path��SimpleNamespace)�RemoveAllHs)�6DataLoader)�write_mol_with_coords)�get_t_schedule)�InferenceDataset�	set_nones)�configure_logger�7get_logger)�randomize_position�sampling)�validate_sampling_entrypoint�)�load_model_args�load_score_model�model_uses_lm_embeddingscCs t��}|jdddd�|��S)Nz--configTz!Path to the sampling YAML config.)�required�help)�argparse�ArgumentParser�add_argument�8parse_args)�parser�r�.modelscope/diffdock/scripts/sample_diffdock.pyrsrcCsNt|t�rtj�|�St|t�rdd�|��D�St|t�r%dd�|D�S|S)NcSsi|]	\}}|t|��qSr��_resolve_env_vars)�.0�k�vrrr�9<dictcomp>$sz%_resolve_env_vars.<locals>.<dictcomp>cSsg|]}t|��qSrr)rr!rrr�10<listcomp>&sz%_resolve_env_vars.<locals>.<listcomp>)�11isinstance�str�os�path�12expandvars�dict�items�list)�objrrrr s131415rcCsDt|ddd��}tt�|�pi�Wd�S1swYdS)N�r�utf-8)�encoding)�openr�yamlZ	safe_load)Zconfig_path�handlerrr�load_config,s$�r3cCs8i}|��D]\}}t|t�r|�|�q|||<q|S�N)r*r$r)�update)�configZflat�key�valuerrr�flatten_config1s1617r9cCstdi|��S)Nrr)r6rrr�to_namespace;sr:cCs,|dvrt�tj��rd�Sd�St�|�S)N>�autoN�cuda�cpu)�torch�devicer<Zis_available)Zdevice_namerrr�resolve_device?s18r@cCs�|jdurJt|jdddd��}tt�|��}Wd�n1s wYtdd�|D��}tdd�|D��}tdd�|D��}td	d�|D��}n|jpNd19g}|jg}|jg}|j	g}dd�t20|�D�}||||fS)Nr-r.�)r/�newlinecS�g|]}|�d��qS)�complex_name��get�r�rowrrrr#I�zload_inputs.<locals>.<listcomp>cSrC)�protein_pathrErGrrrr#JrIcSrC)�protein_sequencerErGrrrr#KrIcSrC)�ligand_descriptionrErGrrrr#LrIZ	complex_0cSs&g|]\}}|dur|nd|���qS)NZcomplex_r)r�idx�namerrrr#Ss&)Zprotein_ligand_csvr0r+�csvZ21DictReaderr22rDrJrKrL�	enumerate)�argsr2Zrows�
complex_names�
protein_paths�protein_sequences�ligand_descriptionsrrr�load_inputsEs23�rVcCs4tj|dd�|D]}tjtj�||�dd�q	dS)NT)�exist_ok)r&�makedirsr'�join)�out_dirrRrNrrr�ensure_output_dirsWs�r[cCs |j}t|ttf�r|dS|S)Nr)�molr$r+�tuple)�
complex_graphr\rrr�get_ligand_mol]sr_cCs t|dd�}|durt|�S|S)N�
lm_embeddings)�getattrr)rQ�24model_argsr`rrr�resolve_lm_embeddings_flagbsrccCs:t|j||||||j|j|j|j|j|jt|dd�d�
S)N�not_knn_only_graphF)
rZrRZ
protein_filesrUrTr`�receptor_radius�	remove_hs�c_alpha_max_neighbors�	all_atoms�atom_radius�atom_max_neighborsZknn_only_graph)	r	rZrerfrgrhrirjra)rQrbrRrSrTrUr`rrr�build_inference_datasetis25�rkc26CsRt|dd�t|dd�t|dd�t|dd�t|dd�t|dd�t|dd�t|�fS)	NrerfrgrhrirjrdF)ra�bool)rbr`rrr�inference_graph_signature�s272829303132�rmcCsB|}tt|dd�t�r|dd�df}t�|��������d�S)NZrmsd_classification_cutoffr�����)	r$rar+�np�asarray�detachr=�numpyZreshape)�33confidence�confidence_model_args�confidence_scoresrrr�extract_confidence_scores�srvc	34Cs�t|dd�}|durdSt|�}||j}|��s!td|�d���t|�}t|dddd�t||j|ddt|dd	�d35�\}}}t|d�rH|j	|_	|�36d|�||fS)
N�confidence_model_dir)NNz!Confidence checkpoint not found: �-. This example does not auto-download models.z-DiffDock sampling confidence-model checkpointT)�context�include_confidence�confidence_mode�old_confidence_modelF)�	model_dir�ckptr?�no_parallelr{�old�crop_beyondz(Loaded optional confidence model from %s)rarZconfidence_ckpt�exists�FileNotFoundErrorrrr�hasattrr��info)	rQr?�loggerrwZconfidence_checkpoint_pathZconfidence_model_args_preview�confidence_modelrt�_rrr�load_optional_confidence_model�s83738��39�40r�c-s$t�}t|j�}tt|��}tt|dd��}t|t|dd�dup%t|dd�d�tt|dd��t	�}t41|j�}||j}|�
�sItd	|�d42���t|�}t|dd�t||j|d
t|dd�d�\}}	}43t|d�rm|j|	_|�d|�t|||�\}}t|�\}
}}}t|j|
�t||	�}t||	|
||||d�}t|ddd�}d}|dur�t||�}t|	|�t||�k}|r�|�d�t|||
||||d�}t|ddd�}n|�d�t|j|j|j|j d�}d}d}|j!}t"|�}|�d|�|dur�dd�|D�}nt#||�}t$|�D�]s\}\���j%d�s"|d7}|�&d|j'|��q�du�r<�j%d�s<|d7}|�&d|j'|��q�z�fdd�t(|�D�}d} �du�r[�fd d�t(|�D�} t)||	j*|j+|	j,|j-|j.d!�t/��}!t0dDid"|�d#|�d$|j1du�r�|j1n|j�d%|�d&|�d'|�d|�d(|44�d)|	�d*|j+�d+|j2�d,|�d-| �d.|�d/|j3�d0|j4�d1|j5|j6|j7g�d2|j8|j9|j:g�d3|j;|j<|j=g��\}}"t>�?�fd4d�|D��}#t>�@t"|#��}$d}%|"du�rtA|"|�}%t>jB|%d5d6�}%t>�C|%�ddd7�}$|�d8|
|t>jD|%|$d9d:��tEjF�G|j|
|�}&t$|$dd;�D]8\}'}(|#|(})tH�I|!�}*|	jJ�r3tK|*�}*d<|'�d=�}+|%du�rJd<|'�d>|%|(d?�d=�}+tL|*|)tEjF�G|&|+���qW�qtM�yz},z|�&d@|
||,�|d7}WYd},~,�qd},~,ww|�dA||�|�dB||�|�dC|j�dS)ENr?r;rwr|F)rzZloglevel�INFOzCheckpoint not found: rxz(DiffDock sampling score-model checkpoint)ryTZold_score_model)r}r~r?rr�r�z DiffDock sampling will run on %s)rRrSrTrUr`�)Zdataset�45batch_sizeZshufflez`Confidence rerank requires independent inference graphs; building a separate confidence dataset.z>Confidence rerank will reuse the score-model inference graphs.)�sigma_schedule�inference_steps�inf_sched_alpha�inf_sched_betarzSize of test dataset: %scss�|]}|dfVqdSr4r)r�orig_complex_graphrrr�	<genexpr>s�zmain.<locals>.<genexpr>z)Skipping %s because preprocessing failed.z4Skipping %s because confidence preprocessing failed.c�g|]}t����qSr��copy�deepcopy�rr��r�rrr#.rIzmain.<locals>.<listcomp>cr�rr�r�)�confidence_orig_complex_graphrrr#1rI)�initial_noise_std_proportion�choose_residue�	data_list�modelr��tr_scheduleZrot_scheduleZtor_schedule�46t_to_sigmarb�	no_random�oder��confidence_data_listrtr��no_final_step_noiseZ
temp_samplingZtemp_psiZtemp_sigma_datacs,g|]}|dj�����j�����qS)�ligand)�posr=rrZoriginal_center)rr^r�rrr#_s��g�����ư�)�nanrnz8Applied confidence rerank for %s. Ranked confidences: %s�)Z	precision)�start�rankz.sdfZ_confz.4fzFailed on %s with error: %szFailed for %s / %s complexes.zSkipped %s / %s complexes.zResults saved in %sr)Nrr3r6r:r9r@rarrrrr}r~r�r�rrr�r�r�r�rVr[rZrcrkrrmrr�r�r�r�Zsamples_per_complex�len�ziprPZsuccessZwarningrR�ranger
Z47no_torsionr�Ztr_sigma_maxr�r�r_rZactual_stepsr�r�r�Ztemp_sampling_trZtemp_sampling_rotZtemp_sampling_torZtemp_psi_trZtemp_psi_rotZtemp_psi_torZtemp_sigma_data_trZtemp_sigma_data_rotZtemp_sigma_data_torrorpZarangervZ48nan_to_numZargsortZarray2stringr&r'rYr�r�rfrr�	Exception)-ZparsedZ49raw_configrQr?r�r}Zcheckpoint_pathZscore_model_args_previewr�Zscore_model_argsr�r�rtrRrSrTrUZscore_lm_embeddingsZtest_datasetZtest_loaderZconfidence_loaderZconfidence_lm_embeddingsZ"confidence_needs_independent_graphZconfidence_datasetr�ZfailuresZskippedZnum_samplesZtest_ds_sizeZloader_iterrMr�r�r�rsZligand_positionsZrerank_orderruZ	write_dirr�Z50sample_idxr�Zmol_pred�filename�excr)r�r�r�main�s�5152�535455��56�5758�	59����	60�61��62�	���������	�63���
����������"64��6566�6768�69��r��__main__)4rr�rOr&Zpathlibr�typesrrrror>r1Z70rdkit.ChemrZtorch_geometric.loaderrZ*onescience.datapipes.diffdock.process_molsrZ)onescience.utils.diffdock.diffusion_utilsrZ)onescience.utils.diffdock.inference_utilsr	r71Z'onescience.utils.diffdock.logging_utilsrrZ"onescience.utils.diffdock.samplingr
rZ$onescience.utils.diffdock.validationrZmodels.score_wrapperrrr�ImportErrorrrr3r9r:r@rVr[r_rcrkrmrvr�r��__name__rrrr�<module>sR�72
#K73�