B
    ž3Rc'  ã            	   @   s˜  d Z ddlmZ ddlmZ e d¡Ze d¡Ze d¡Ze d¡Z	e d¡Z
e d	¡Zd
d„ Zde_ de_efdd„Zdd„ Zde_ de_efdd„Zdd„ Zde_ de_efdd„Zdd„ Zde_ de_e	fdd„Zdd„ Zde_ de_dd„ Zde_ de_dd„ Zde_dd„ Zd e_d!ZxreD ]jZeeeƒZefd"d„Zyeed#e d$ ƒe_W n ek
rn   Y nX ej e_ e d%d&¡Z ee!ƒ e < q&W d'S )(z3 Calculation of Lipinski parameters for molecules

é    )ÚChem)ÚrdMolDescriptorsz<[$([N;!H0;v3]),$([N;!H0;+1;v4]),$([O,S;H1;+0]),$([n;H1;+0])]zj[$([O,S;H1;v2]-[!$(*=[O,N,P,S])]),$([O,S;H0;v2]),$([O,S;-]),$([N;v3;!$(N-*=!@[O,N,P,S])]),$([nH0,o,s;+0])]z	[!#6;!#1]z[!$(*#*)&!D1]-&!@[!$(*#*)&!D1]z[#8H1,#7H1,#7H2,#7H3]z[#7,#8]c             C   s
   t  | ¡S )N)r   Z
CalcNumHBD)Úx© r   ú2lib/python3.7/site-packages/rdkit/Chem/Lipinski.pyÚ<lambda>1   ó    r   zNumber of Hydrogen Bond Donorsz1.0.0c             C   s   | j |ddS )Né   )Úuniquify)ÚGetSubstructMatches)r   Úyr   r   r   r   4   r   c             C   s
   t  | ¡S )N)r   Z
CalcNumHBA)r   r   r   r   r   5   r   z!Number of Hydrogen Bond Acceptorsz2.0.0c             C   s   | j |ddS )Nr	   )r
   )r   )r   r   r   r   r   r   8   r   c             C   s
   t  | ¡S )N)r   ZCalcNumHeteroatoms)r   r   r   r   r   9   r   zNumber of Heteroatomsc             C   s   | j |ddS )Nr	   )r
   )r   )r   r   r   r   r   r   <   r   c             C   s
   t  | ¡S )N)r   ZCalcNumRotatableBonds)r   r   r   r   r   =   r   zNumber of Rotatable Bondsc             C   s   | j |ddS )Nr	   )r
   )r   )r   r   r   r   r   r   @   r   c             C   s
   t  | ¡S )N)r   ZCalcNumLipinskiHBA)r   r   r   r   r   A   r   zNumber of Nitrogens and Oxygensc             C   s
   t  | ¡S )N)r   ZCalcNumLipinskiHBD)r   r   r   r   r   D   r   zNumber of NHs or OHsc             C   s
   t  | ¡S )N)r   ZCalcNumRings)r   r   r   r   r   H   r   c             C   s   |   ¡ S )z" Number of heavy atoms a molecule.)ZGetNumHeavyAtoms)Zmolr   r   r   ÚHeavyAtomCountL   s    r   z1.0.1)
ZCalcFractionCSP3ZCalcNumAromaticRingsZCalcNumSaturatedRingsZCalcNumAromaticHeterocyclesZCalcNumAromaticCarbocyclesZCalcNumSaturatedHeterocyclesZCalcNumSaturatedCarbocyclesZCalcNumAliphaticRingsZCalcNumAliphaticHeterocyclesZCalcNumAliphaticCarbocyclesc             C   s   || ƒS )Nr   )r   r   r   r   r   r   Z   r   Ú_Z_versionZCalcÚ N)"Ú__doc__Zrdkitr   Z
rdkit.Chemr   ZMolFromSmartsZHDonorSmartsZHAcceptorSmartsZHeteroatomSmartsZRotatableBondSmartsZ
NHOHSmartsZNOCountSmartsZ
NumHDonorsÚversionZ_HDonorsZNumHAcceptorsZ_HAcceptorsZNumHeteroatomsZ_HeteroatomsZNumRotatableBondsZ_RotatableBondsZNOCountZ	NHOHCountZ	RingCountr   Z_bulkConvertZtxtÚgetattrZ_cfnZ_fnÚAttributeErrorÚreplaceZnmÚlocalsr   r   r   r   Ú<module>   s\   






