o
    I<`$                     @   sn   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ G dd dZdS )	    N)Alfit)Nafra)Inkri)Tofde)Vemlic                   @   sx   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dddZdd Zdd Zdd Zdd ZdS )SidatFc                 C   s~   || _ t| j | _t| j | _t| j | _t| j | _t	| j | _
d| _|| _d| _d| j jv r7| j jd | _d| _d | _d S )N zissues.json.gzZseed_prefixzkrikt.json.gz)er   inkrir   nafrar   tofder   alfitr   vemliprefix
do_verbose
sidis_nameconf
krikt_namei)selferimpr    r   !/home/ernad/ernad/python/sidat.py__init__   s   zSidat.__init__c                 C   sZ   | j }|jd }|d }t|D ]}tj|}|dd}||jvr%q| | qdS )z:--> The steps that have to be taken to update, for testingseeds/*.txt.txtr   N)	r	   dirsglobospathbasenamereplaceliveupdate_report)r   r	   seed_dirglob_stringfufibanarepcoder   r   r   
update_all!   s   

zSidat.update_allc                 C   (   | j }|j| }|jd d | j }|S z--> called by trainsidat/)r	   reportr   r   )r   r)   r	   r/   issues_fufir   r   r   
sidis_fufi-   s   
zSidat.sidis_fufic                 C   s    | j }|jd d | d }|S )--> called by startr   r.   r   )r	   r   )r   r)   r	   r'   r   r   r   	seed_fufi4   s   zSidat.seed_fufic                 C   r+   r,   )r	   r/   r   r   )r   r)   r	   r/   
krikt_fufir   r   r   r4   :   s   
zSidat.krikt_fufic                 C   s"   | j }|j| }|jd d }|S )z--> called by sedatr-   z/sedat.json.gz)r	   r/   r   )r   r)   r	   r/   
sedat_fufir   r   r   r5   B   s   
zSidat.sedat_fufic                 C   sL   g }t | |d}| D ]}|drq|  d }|| q|S )r2   r#r   )openr3   	readlines
startswithstripsplitappend)r   r)   papids	seed_filelinepapidr   r   r   r>   J   s   
zSidat.papidsc                 C   s   | j }|j| }| |}| |}t|d |  t||gr*td | | || _|j	d d | j
 }tj|sT| jrNtd| d|  td | j|d | jr]td	|  tj|r}| j| | j| | j| | j|}|S d
S )z3--> The steps that have to be taken to update seeds z#sidat: I need to rebuild the seeds.r-   r.   zsidat sees no z to update for zsidat tries a build)only_repcodezsidat wants an update for N)r	   r/   r1   r3   printfilerdonerebuildr)   r   r   r   r    isfiler   r   update_for_krikt_fufir   r   r   
build_fufi)r   r)   r	   r/   r0   Z
seeds_fufir4   
vemli_fufir   r   r   r$   V   s0   



zSidat.update_reportNc                 C   s   | j }|jd }|d }t|D ]V}tj|}|dd}|| _||jvr(q|dur1||kr1q||j	vr?t
d| d  q|j| | _| jjd d	 | _| | tj| jd
dr_t
d |   |   qdS )z;--> The steps that have to be taken only once, in principler   r   r   r   Nzsidat does not see the report .r-   z
/sidat.txtT)allow_missingzsidat: no external seeds.)r	   r   r   r   r    r!   r"   r)   r#   reportsrD   r/   r'   issues_vs_sidocrE   is_empty	get_seedskrikt_seeds)r   rC   r	   r%   r&   r3   r(   r)   r   r   r   rG   ~   s,   




zSidat.buildc                 C   s   |  | j}t| || _t||gs%tj| j|gdds%td dS i | _d| _	t
|d}| jdu rN| jr?tdd	dd
 | j | _| jrNtddd | D ]}|drZqR| |  qRt| j| t
| jd}|| j	 |  dS )z=find what can be done by issues and what can be done by sidocT)do_allow_emptyz)sidat is not renewing the issues_vs_sidocFr   r6   Nzsidat loads the inkri ... rB   )endflushdone)rU   r7   w)r1   r)   rE   preparer0   rF   r'   rD   issuesr-   r8   r   r   r
   loadr9   r:   
study_seedr;   dumpwriteclose)r   r3   r0   r?   r@   Z
sidat_filer   r   r   rO      s4   



zSidat.issues_vs_sidocc           
      C   s(  | j }| j}d|jvrtd dS |jd d }| j}t|}|j}|jd d }t	
||gs3dS d }tj|rAd| d	 }|d
krGdS | rktj|skd| d | }	| jrbtd|	  tj|	dd dS |jd d | }	|d ur||	|7 }	|	d| 7 }	| jrtd|	  tj|	dd d S )NZget_input_for_seedszsidat sees no way to get seeds.Fr-   
/sidoc.xmlstylez/seeds_to_amf.xslt.xmlz | /usr/bin/xsltproc z - r   Tzrsync -va ernad@biomed.news:rB   zsidat runs )shellz > )r	   r/   r   rD   r   r'   r   statst_sizerE   rF   r    rH   
is_testingr   
subprocessrun)
r   r	   r/   
sidoc_fufiZ
sidat_fufiZ
sidat_infoZ
sidat_sizeZstyle_filter_fufiZseeds_to_amfrunnerr   r   r   rQ      s@   


zSidat.get_seedsc                 C   s   | j }| j}|jd d }tj|std|  dS |jd d }tj|s.td| |jd d | j }g }|	| |	| t
||sLdS |jd|| d	S )
Nr-   r_   zI don't see Fr`   z/krikts.xslt.xmlr.   kriktsT)r	   r/   r   r   r    rH   rD   	Exceptionr   r=   rE   rF   tfufi_to_json)r   r	   r/   rg   
style_fufir4   in_fufisr   r   r   rR      s"   

zSidat.krikt_seedsc                 C   s@   | j }| j| }||v r|| | j|< dS |  j|d 7  _dS )NT
F)r   r   rY   r-   )r   seedr   rA   r   r   r   r[      s   
zSidat.study_seed)F)N)__name__
__module____qualname__r   r*   r1   r3   r4   r5   r>   r$   rG   rO   rQ   rR   r[   r   r   r   r   r      s    

(##r   )r   r   re   rE   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   <module>   s    