B
    ž3Rc+  ã               @   s(  d dl Z d dlZd dlmZ d dlmZ d dlmZ edddZejdd	d
ddd ejddddddd e 	¡ \Z
Ze
jdkr’edƒ e  d¡ e
jd k s¦e
jdkr¸edƒ e  d¡ g Zg Zee
jdƒZx€eD ]xZe ¡  d¡Ze ed ¡Zedkre j ded  ¡ qÒejeddddZe e¡ e ed  ed ed f¡ qÒW eeƒZ xÌe j!D ]ÂZe ¡ Ze de¡\Z"Z#e e"¡Z$e$dkr¢e j de" ¡ q^eje$ddddZ%e &e%ed dd ¡Z'xVe(e ƒD ]JZ)e'e) e
jkrÐed!ee) d ee) d  ee) d e"e#e'e) f ƒ qÐW q^W dS )"é    N)ÚOptionParser)ÚChem)ÚDataStructsz4Program to Tversky search results as part of Fragglez–Format of input file: whole mol smiles,ID,fraggle split smiles		Output: query_frag_smiles,query_smiles,query_id,retrieved_smi,retrieved_id,tversky_sim)ZdescriptionZepilogz-fz--fragsÚf_fileÚstringz5File containing the query fragmentations from Fraggle)ÚdestÚtypeÚhelpz-cz--cutoffÚcutoffÚfloatgš™™™™™é?zxCutoff for Tversy similarity. Only Tversky results with similarity greater than the cutoff will be output. DEFAULT = 0.8)r   r   Údefaultr	   z=Please specify the file containing the Fraggle fragmentationsé   z,Please specify a Tversky cut-off between 0-1Úrú,é   zCan't generate mol for: %s
é   i   )ZmaxPathZfpSizeZnBitsPerHashz\s|,Fz%s,%s,%s,%s,%s,%s)*ÚsysÚreZoptparser   Zrdkitr   r   ÚparserZ
add_optionÚ
parse_argsZoptionsÚargsr   ÚprintÚexitr
   ZqueriesZ
query_infoÚopenZq_split_inputÚlineÚrstripÚsplitÚinfoZMolFromSmilesZqmolÚstderrÚwriteZRDKFingerprintZqfpÚappendÚlenZ	fragmentsÚstdinZsmiÚidZmolZmfpZBulkTverskySimilarityZresÚrangeÚi© r&   r&   ú,share/RDKit/Contrib/fraggle/rdkit_tversky.pyÚ<module>!   sZ   






 

