ó
a#nSc           @   sŹ   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d e f d     YZ d e f d     YZ	 i  a
 d a d a d a d d e d  Z d   Z d	   Z d S(
   i˙˙˙˙(   t   RDConfigNt   FGHierarchyNodec           B   sV   e  Z d Z d  Z d  Z d Z d  Z d  Z d Z	 d Z
 d  d  d  d d  Z d   Z RS(   t    c         C   sU   | |  _  | |  _ | r- t j |  |  _ n  | |  _ | |  _ g  |  _ | |  _ d  S(   N(	   t   namet   patternt   weakreft   reft   parentt   labelt   smartst   childrent	   rxnSmarts(   t   selfR   t   pattR	   R   R   R   (    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyt   __init__.   s    					c         C   s.   d } x! |  j  D] } | t |  7} q W| S(   Ni   (   R
   t   len(   R   t   rest   child(    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyt   __len__8   s    N(   t   __name__t
   __module__t   NoneR
   R   R   R   R	   R   R   t   removalReactionR   R   (    (    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyR   %   s   
t   FuncGroupFileParseErrorc           B   s   e  Z RS(    (   R   R   (    (    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyR   >   s   c         C   s#  | r8 t  r8 | s  | t k r8 |  s3 |  t k r8 t  S| a t j d  } d d l m } |  r | r t j j	 t
 j d  }  n  |  r¤ t |  d  } |  a n! | rź t j |  } n	 t d  i  a g  } d } x>| j   D]0} | d 7} | j   } | j d	  d } | sqä n  | j |  }	 t |	  d
 k  r\t d | t |  f  n  |	 d j   }
 t j |
  rt d |  n  |
 j d  } t |  d k r#xZ t t |  d  D]B } d j	 | | d   } t j |  sĂt d | | f  qĂqĂWt d j	 | d   } n d  } |	 d } y | j |  } Wn# d d  l } | j   d  } n X| st d | | f  n  |	 d j   } d } t |	  d
 k r˝|	 d
 } n  t | | d | d |
 d | d | } | rý| j j |  n | j |  | t |
 <qä W| a  | S(   Ns   	+i˙˙˙˙(   t   Chems   Functional_Group_Hierarchy.txtt   rs   need data or filenamei    i   s   //i   s&   Input line %d (%s) is not long enough.s   Duplicate label on line %d.t   .s(   Hierarchy member %s (line %d) not found.s*   Smarts "%s" (line %d) could not be parsed.i   R   R	   R   R   R   (    t	   hierarchyt   lastDatat   lastFilenamet   ret   compilet   rdkitR   t   ost   patht   joinR    t	   RDDataDirt   filet	   cStringIOt   StringIOt
   ValueErrort
   groupDefnst	   readlinest   stript   splitR   R   t   reprt   has_keyt   rangeR   t   MolFromSmartst	   tracebackt	   print_excR   R
   t   append(   t   fileNmt   datat   forcet   splitterR   t   inFR   t   lineNot   linet   splitLR   t   labelHierarchyt   it   tmpR   R	   R   R1   R   R   t   node(    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyt   BuildFuncGroupHierarchyE   sr     		



'c   	      C   s´   |  j  | j  } d } i  } x9 | D]1 } | d | k r% | d 7} d | | d <q% q% W| r  | | | <| d 7} x9 | j D] } t |  | | |  } q~ Wn | t |  7} | S(   Ni    i   (   t   GetSubstructMatchesR   R
   t   _SetNodeBitsR   (	   t   molR?   R   t   idxt   mst   countt   seent   mR   (    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyRB      s    


c         C   sd   d } x | D] } | t  |  7} q Wd g | } d } x# | D] } t |  | | |  } qA W| S(   Ni    (   R   RB   (   RC   R   t   totLt   entryR   RD   (    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyt   CreateMolFingerprint   s    (   R    R    R!   R   R&   R   t   objectR   R(   R   R)   R   R   R   R   t   FalseR@   RB   RK   (    (    (    s]   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FunctionalGroups.pyt   <module>"   s   0E	