B
    ž3Rcõ  ã               @   s2   d dl Z G dd„ deƒZdd„ Zedkr.eƒ  dS )é    Nc               @   sL   e Zd ZdZddd„Zddd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTopNContainerzE maintains a sorted list of a particular number of data elements.

  ç.Ÿ‡¢®B}Ôc             C   s<   || _ |dkr,|g| j  | _dg| j  | _ng | _g | _dS )zG
    if size is negative, all entries will be kept in sorted order
    r   N)Ú_sizeÚbestÚextras)ÚselfÚsizeZmostNeg© r	   ú>lib/python3.7/site-packages/rdkit/DataStructs/TopNContainer.pyÚ__init__   s    zTopNContainer.__init__Nc             C   s®   | j dkr€|| jd krªt | j|¡}|| j krJ| j |¡ | j |¡ n| j ||¡ | j ||¡ | j d¡ | j d¡ n*t | j|¡}| j ||¡ | j ||¡ dS )z% only does the insertion if val fits r   N)r   r   ÚbisectÚappendr   ÚinsertÚpop)r   ÚvalÚextraÚidxr	   r	   r
   ÚInsert    s    

zTopNContainer.Insertc             C   s   | j S )z returns our set of points )r   )r   r	   r	   r
   ÚGetPts4   s    zTopNContainer.GetPtsc             C   s   | j S )z returns our set of extras )r   )r   r	   r	   r
   Ú	GetExtras8   s    zTopNContainer.GetExtrasc             C   s   | j dkr| j S t| jƒS d S )Nr   )r   Úlenr   )r   r	   r	   r
   Ú__len__<   s    
zTopNContainer.__len__c             C   s   | j | | j| fS )N)r   r   )r   Zwhichr	   r	   r
   Ú__getitem__B   s    zTopNContainer.__getitem__c             C   s   | j  ¡  | j ¡  d S )N)r   Úreverser   )r   r	   r	   r
   r   E   s    
zTopNContainer.reverse)r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r	   r	   r	   r
   r      s   

r   c                 sl   dd l ‰ ˆ  d¡ ‡ fdd„tdƒD ƒ} tdƒ}x| D ]}|j|t|ƒd q6W t| ¡ ƒ t| ¡ ƒ d S )Nr   c                s   g | ]}t d ˆ  ¡  ƒ‘qS )éd   )ÚintÚrandom)Ú.0Ú_)r    r	   r
   ú
<listcomp>M   s    z _exampleCode.<locals>.<listcomp>é
   é   )r   )	r    ZseedÚranger   r   ÚstrÚprintr   r   )ZptsÚcZptr	   )r    r
   Ú_exampleCodeJ   s    

r*   Ú__main__)r   Úobjectr   r*   r   r	   r	   r	   r
   Ú<module>   s   ;