ó
a#nSc           @   s6   d  d l  Z  d  d l m Z d e f d     YZ d S(   iĸĸĸĸN(   t   Chemt   FastSDMolSupplierc           B   sw   e  Z d  Z d
 Z d
 Z e Z d
 d
 e e d  Z d d  Z	 d   Z
 d   Z d   Z d   Z d   Z d	   Z RS(   s6   A wrapper around an SDMolSupplier that precomputes and stores 
      molecular indices (via text processing) to allow quick length 
      calculations and random access.

      NOTE that this class needs to have the entire SD data in memory,
      so it's probably not particularly useful with large files.
  c         C   s\   | r t  | d  j   } n  | |  _ | |  _ | rX | j d d  } |  j |  n  d  S(   Nt   rs   
s   
(   t   opent   readt   sanitizet   removeHst   replacet   init(   t   selft   fileNt   dataR   R   (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyt   __init__   s    		s   $$$$
c         C   sŲ   | s t  d  n  | |  _ t j   |  _ |  j j | d |  j d |  j d g |  _ d } xH y* | j	 | | d  } | t
 |  7} Wn Pqa X|  j j |  qa |  j j d  |  j j |  j  d |  _ d  S(   Ns   no dataR   R   i    i   iĸĸĸĸ(   t
   ValueErrorR   R    t   SDMolSuppliert   supplt   SetDataR   R   t   _post   indext   lent   appendt   popt   _SetStreamIndicest   _idx(   R	   R   t   recogTxtt   p(    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyR   !   s"    	"c         C   sN   |  j  | } | d t |  j   k  r: |  j  | d } n d } |  j | | !S(   Ni   iĸĸĸĸ(   R   R   R   (   R	   t   idxt   startOfItemt	   endOfItem(    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyt   GetItemText8   s
    c         C   s   |  j  j   d |  _ d  S(   Ni    (   R   t   resetR   (   R	   (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyR   @   s    c         C   s   |  j  j   |  S(   N(   R   R   (   R	   (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyt   __iter__F   s    c         C   s   |  j  d 7_  |  j j   S(   Ni   (   R   R   t   next(   R	   (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyR    I   s    c         C   s   t  |  j  S(   N(   R   R   (   R	   (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyt   __len__M   s    c         C   s   |  j  | S(   N(   R   (   R	   R   (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyt   __getitem__O   s    N(   t   __name__t
   __module__t   __doc__t   NoneR   R   t   TrueR   R   R   R   R   R   R    R!   R"   (    (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyR      s   						(   t   syst   rdkitR    t   objectR   (    (    (    s^   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Chem/FastSDMolSupplier.pyt   <module>
   s   