a
    VÄ`5  ã                   @   sF   d dl Z d dlZd dlZd dlZd dlZd dlmZ G dd„ dƒZdS )é    N)ÚNafrac                   @   sd   e Zd Zdd„ Zdd„ Zddd„Zdd	d
„Zdd„ Zddd„Zdd„ Z	ddd„Z
dd„ Zdd„ ZdS )ÚNatlic                 C   sV   || _ t| j ƒ| _i | _i | _d| jd< d| jd< t| jd ƒ| _|  |  ¡ ¡| _	d S )Nz.natli.json.gzÚnatliz.tofde.json.gzÚtofde)
Úer   ÚnafraÚtofrasÚextÚlenÚlen_extÚ	signatureÚfufiÚsig)ÚselfÚerimp© r   ú!/home/ernad/ernad/python/natli.pyÚ__init__   s    

zNatli.__init__c                 C   s   |   ¡ }t |¡}|S )N)r   ÚfilerÚload)r   r   Údr   r   r   Úget&   s    
z	Natli.getFc                 C   s  i }d}d}| j D ]²}|d7 }| ¡ }t|ƒdk rJtd| d tjd q|| j | 7 }|d }||vrpi ||< |d }	|	|| vrg || |	< d }
t|ƒdkr²d |dd … ¡}
|| |	  |
¡ q|| _|rött	|ƒd ƒ tt	|ƒd	 ƒ || _
|| _|| _
|S )
Nr   é   é   znatli skips the invalid frase 'ú'©Úfileú z phrasez phrase occurences)r   Úsplitr
   ÚprintÚsysÚstderrÚjoinÚappendÚdetÚstrÚcount_frasesÚcount_words)r   ZfrasesÚ
do_verboser$   r&   r'   ZfraseÚwordsÚfirstZseconÚrestr   r   r   Úbuild_tof_detector-   s<    
ÿzNatli.build_tof_detectorr   c                 C   s€   t | jƒdkr| j||d | j| j|d t | j¡}t | j¡}| j}|› d|› d|› | _	|  
d| j¡ |  
d| j¡ dS )z,-> write the t detertor, called by bin/natlir   )r(   Ú	max_files©r(   Ú_r   r   N)r
   r   Ú	compose_tr,   ÚtinnusÚmaker&   r'   Úmax_issuedater   Ú	write_libr$   )r   r(   r-   r&   r'   Ú	issuedater   r   r   Úwrite_tof_detectorQ   s    zNatli.write_tof_detectorc                 C   sj   | j | }| jjd }|d d | }t |¡D ]}t |¡ q0| j› |› }|d | }t ||¡ d S )NÚfitliú/Ú*)	r	   r   ÚdirsÚglobÚosÚremover   r   Údump)r   ÚnameÚwhatr	   ÚfudiÚglob_stringr   Úfinar   r   r   r4   `   s    
zNatli.write_libc                 C   sp   | j }|jj|jd d| jd  d}|du rPtdtjd |  ¡  | j	|d |r`td	| ƒ |  
|¡| _|S )
z-> gives the last fufir7   r9   r   )ÚsearchNz#natli has no tofde in the fitli dirr   r.   zThe natli is )r   r   Úlast_by_mtimer:   r	   r   r    r!   r6   r   r   r   )r   r(   r   r   r   r   r   r   j   s    ÿÿz
Natli.fufic                 C   sB   |d u rdS t j |¡}|dd … }| j}|d| … }|| _|S )NÚ é
   r   )r<   ÚpathÚbasenamer   r   )r   r   r   r   r   r   r   r   y   s    zNatli.signaturec                 C   s   | j  ¡ }d| _d}|D ]r}|r,td| ƒ tj |¡}|dd… }|| jkrT|| _|rdtd| ƒ |  |¡ |d7 }|dkr||kr qŒqdS )zfor the topics onlyrF   r   zcompose_t reads rG   znatli loads r   N)r   Ú	out_fufisr3   r   r<   rH   rI   Úread_tof_fufi)r   r(   r-   ÚfufisZcount_filesr   Úbanar5   r   r   r   r0   ƒ   s     


zNatli.compose_tc                 C   sÜ   t | jƒdkr| j|d d}d}| jD ]}|d7 }|| j| 7 }q(t |¡}t |¡}| j}| j}| jjd }|d d | }t	 	|¡D ]}	t
 |	¡ qŠ|› d|› d|› |› }
|d |
 }	t |	| j¡ td|	 ƒ d	S )
z-> write the t fases NOT USEDr   r.   r   r7   r8   r9   r/   zI wrote N)r
   r   r0   r1   r2   r3   r	   r   r:   r;   r<   r=   r   r>   r   )r   r(   Z
count_keysZcount_timesÚfitr5   r	   rA   rB   r   rC   r   r   r   Úwrite_tof_frases–   s&    


zNatli.write_tof_frasesc                 C   sl   t  |¡}|D ]X}d|| vr q|| d }|D ]4}|| jvrN|| | j|< q0| j|  || 7  < q0q|S )NÚt)r   r   r   )r   r   ÚdataÚpapidÚt_datarN   r   r   r   rK   ¬   s    

zNatli.read_tof_fufiN)F)Fr   )F)Fr   )Ú__name__Ú
__module__Ú__qualname__r   r   r,   r6   r4   r   r   r0   rO   rK   r   r   r   r   r      s   
$




r   )r;   r<   r    r   r1   r   r   r   r   r   r   r   Ú<module>   s   