ó
a#nSc           @   s¼   d  d l  Z  d e f d „  ƒ  YZ e d k r¸ d  d l Z g  e d ƒ D] Z e d e j ƒ  ƒ ^ qG Z e d ƒ Z	 x' e D] Z
 e	 j e
 d e e
 ƒ ƒq| We	 j ƒ  GHe	 j ƒ  GHn  d S(	   iÿÿÿÿNt   TopNContainerc           B   sS   e  Z d  Z d d „ Z d	 d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(
   sE    maintains a sorted list of a particular number of data elements.

  g.Ÿ‡¢®B}Ôc         C   sT   | |  _  | d k r> | g |  j  |  _ d g |  j  |  _ n g  |  _ g  |  _ d S(   sG   
    if size is negative, all entries will be kept in sorted order
    i    N(   t   _sizet   bestt   Nonet   extras(   t   selft   sizet   mostNeg(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt   __init__   s    		c         C   sô   |  j  d k rµ | |  j d k rð t j |  j | ƒ } | |  j  k ri |  j j | ƒ |  j j | ƒ n& |  j j | | ƒ |  j j | | ƒ |  j j d ƒ |  j j d ƒ qð n; t j |  j | ƒ } |  j j | | ƒ |  j j | | ƒ d S(   s%    only does the insertion if val fits i    N(   R   R   t   bisectt   appendR   t   insertt   pop(   R   t   valt   extrat   idx(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt   Insert   s    c         C   s   |  j  S(   s    returns our set of points (   R   (   R   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt   GetPts/   s    c         C   s   |  j  S(   s    returns our set of extras (   R   (   R   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt	   GetExtras2   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt   __len__6   s    c         C   s   |  j  | |  j | f S(   N(   R   R   (   R   t   which(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt   __getitem__8   s    c         C   s   |  j  j ƒ  |  j j ƒ  d  S(   N(   R   t   reverseR   (   R   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyR   ;   s    N(   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R   R   (    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyR       s   				t   __main__i
   id   i   R   (   R	   t   objectR    R   t   randomt   ranget   xt   intt   ptst   ct   ptR   t   strR   R   (    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/TopNContainer.pyt   <module>   s   3/