
    hh'                         S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJr   " S S5      rg)zlimits on the grond    N)Caler)Grond)Plumi)Vemli)Usipi)Fitli)Saifi)Svemdc                   T    \ rS rSrSS jrS rS rS rS rS r	 SS jr
S	 rS
 rSrg)Ligro   c                 T   Xl         [        U5      U l        [        U5      U l        [        U5      U l        [        U5      U l        [        U5      U l
        [        U5      U l        [        U5      U l        [        U5      U l        S U l        S U l        X l        0 U l        0 U l        g N)er   calerr   grondr   vemlir   usipir
   svemdr   plumir   fitlir	   saifisidpil
grond_data
do_verboselemvalsgrosu)selferimpr   s      !/home/ernad/ernad/python/ligro.py__init__Ligro.__init__    s    5\
5\
5\
5\
5\
5\
5\
5\
  $  
    c                      Uc  U R                   R                  5       nOX l        Uc  U R                  R	                  USS9nUS   nU R                  XU5      nU R                  U[        U5      5      nU$ )zAthis is only used for sprig.get_vemst used only when there are nor   )	cut_pillsl)r   loadr   r   get_sidpilsdot_productpapids_from_evallen)r   repcoder   sidpilssidpil_vemlisevalspapidss          r    get_outcasts_by_dot_product!Ligro.get_outcasts_by_dot_product:   sw    *J(O?jj,,W,BG  mD &&uc-.@Ar#   c                    [        SU S35        U R                  R                  U   nU R                  R	                  5       S-   nUR
                  S   S-   U-   n[        R                  R                  U5      (       a$  [        SU 35        [        R                  " U5      $ US   n0 nU H'  n	X9   n
U R                  R                  U
5      S   X'   M)     0 nU HK  nX|   nS	X'   U H:  nX   nU H-  nUU   nUU;  a  M  U[        UU   5      -  nX==   U-  ss'   M/     M<     MM     [        R                  " Xk5        U$ )
Nz)ligro runs an evalution of grond against z siplisz.dopro.json.gzligro/zsipgr uses cached vdr   )printr   reportr   	train_sigdirsospathisfilefilerr'   r   ekamfloatdump)r   r,   r   r.   r9   
dopro_bana
dopro_fufigrond_vempasusipi_vempaspapidr   r/   grond_papid
grond_fits	grond_fitgrond_valueusipi_papid
sipil_fitsprods                      r    r)   Ligro.dot_productM   sK   9''JKw' ZZ))+.>>
[[)C/*<
77>>*%%&zl34::j))Sz"E!(E"&**//%"8"=L # 'K%2J!"E'	(3#/K!-k!:J 
2 &z)/D)EED&$.& $0	 (	 (  	

:%r#   c                     SU R                   R                  ;  a  g[        S5        U R                  R	                  5       nX$;  a  [        SU SU 35        [        S5        gX4U   :  a  gg)z2check whether we more data in the grond than limitgrospiFzligro checks if grond is leftligro: z no samsu for z%ligro therefore assumes no grond leftT)r   confr8   r   get_samsu_cache)r   r,   first_issuedatelimitsamsus        r    do_i_have_grond_leftLigro.do_i_have_grond_leftt   sk    466;;&-.

**,'GG9N?2CDE9:
 ))r#   c                    U R                   R                  U5      n[        UR                  5       SS S9n[	        U5      n[        SU SU 35        X4-   U:  a  g0 nUSU  H  n	U	S   XS   '   M     Xd* S   H  n	U	S   XS   '   M     [	        UR                  5       5      n
[        S	U
 35        U R                  R                  5       n[        US
5      nSnUR                  5        H  nU R                  R                  U5      nX;   a&  U R                  (       a  [        SU SX    35        MI  X;   a&  U R                  (       a  [        SU SX    35        Mt  U R                  (       a  [        SU 35        SUSS  -   nUU-  nM     U$ )NTc                     U S   $ N    items    r    <lambda>(Ligro.full_grond_vemst.<locals>.<lambda>   s    Qr#   reversekeyzcuts:   r   r]   zligro: total blocked is rrR   z skipped at z	 seen at zligro takes grond papid -1)r   parsesorteditemsr+   r8   keysr   get_class_fufiopen	readlinesr   get_papid_from_vemstr   )r   seen_papids	side_fuficut_poscut_negr/   sorted_papidstotal_papidsblocked_papidsr`   total_blocked
grond_fufi
grond_filevemst
class_linerG   	add_vemsts                    r    full_grond_vemstLigro.full_grond_vemst   s   

  + u{{}'+#79 =)wiq	*+|+!!G,D&*1gN7# -!(),D&*1gN7# - N//12(89ZZ..0
*c*
$..0JJJ33J?E&??GE7,~7L6MNO#??GE7)K4F3GHI089z!"~-IYE 1 r#   c                     Uc2  U R                   R                  5       n[        R                  " U5      nU$ U R	                  USU5      $ )zvemst used for testing0)r   rn   r?   sreadr|   )r   limit_issuedaterr   fufir|   s        r    
test_vemstLigro.test_vemst   sB     "::,,.DKK%ELzz/3<<r#   c                 ,   U R                   R                  U5      n[        U[        5      (       a  UnU R	                  XrXE5      $ UnUS:  aZ  US:  aT  [        UR                  5       SS S9n	0 n
U	SU  H	  nXk   X'   M     U	SU*   H	  nXk   X'   M     U R                  SSU
5      $ [        [        UR                  5       SS S95      nSn0 n
U H/  n[        US-   [        Xk   5      -   5        S	X'   US	-  nX:X  d  M/    O   U R                  USU
5      $ )
ztake the grond from a side filer   Tc                     U S   $ r\   r^   r_   s    r    ra   #Ligro.grond_vemst.<locals>.<lambda>       DGr#   rc   Nri   c                     U S   $ r\   r^   r_   s    r    ra   r      r   r#   z blocked with r]   )
r   rj   
isinstancedictr   rk   rl   r|   r8   str)r   argrs   	count_cutrt   ru   r/   rr   rU   rv   rx   rG   sorted_evalscount_papidss                 r    grond_vemstLigro.grond_vemst   sA    

  +c4  K(()0; ; Q;7Q;"5;;=+/';=M  N&q1(-% 2&y1(-% 2 ::dD>::F5;;=+/';= > !E%**S->>?$%N!AL( " zz/4.AAr#   c                     U R                   R                  5       nSnU HD  nUb  Xa:  a  M  U R                   R                  U5      nU H  nX;   a  M
  XRXx   -   S-   -  nM     MF     U$ )z.a test vemst gets all grond up to an issuedaterg   
)r   rT   
get_vemlis)	r   r   statusrr   
issuedatesr|   	issuedatevemlisrG   s	            r    r|   Ligro.vemst   su    ZZ//1
#I *y/KZZ**95F'&-/$66	   $ r#   c                 h   ^ [        TU4S jSS9n0 nSnU H  nTU   XF'   US-  nXR:X  d  M    U$    U$ )z*gets the excluded papids, of length lengthc                    > TU    U 4$ r   r^   )kr/   s    r    ra   (Ligro.papids_from_eval.<locals>.<lambda>   s    a!}r#   T)re   rd   r   r]   )rk   )r   r/   lengthclosestcut_outcountrG   s    `     r    r*   Ligro.papids_from_eval   sS    4!%' E"5\GNQJE 
 r#   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   N)F)r   r   )__name__
__module____qualname____firstlineno__r!   r1   r)   rX   r   r   r   r|   r*   __static_attributes__r^   r#   r    r   r      s8    4&%N('R= ()#BJ&r#   r   )__doc__r<   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r
   r   r^   r#   r    <module>r      s8     

         ` `r#   