3
^d                 @   s   d dl Z G 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 Z	dd Z
dd Zdd Zdd Zdd ZdS )    Nc               @   s   e Zd ZdS )cfg_placeholderN)__name__
__module____qualname__ r   r   a/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/share/spades/spades_pipeline/process_cfg.pyr      s   r   c             C   s   t | j S )N)open	readlines)filenamer   r   r   
file_lines   s    r   c             C   s   | j dd j S )N;r   )splitstrip)liner   r   r   skip_info_comment   s    r   c             C   s4   | j  } | jdr0| d d j  } | jddd} | S )N"    )r   endswithreplace)r   r   r   r   skip_double_quotes   s
    
r   c             C   s(   t | j dkr$| j d dkr$dS dS )Nr   zN/ATF)lenr   )Z	prop_liner   r   r   check_property"   s    r   c             C   s   | rdS dS )Ntruefalser   )br   r   r   bool_to_str)   s    r   c             C   s
   t j| S )N)supportprocess_spaces)strr   r   r   r   /   s    r   c                sf   G dd ddd   fdd}t  }x6tt| D ]&}|| | |\}}|d k	r8|||< q8W |S )Nc               @   s   e Zd Zdd ZdS )z%vars_from_lines.<locals>.var_metadatac             S   s   || _ || _|| _d S )N)valueline_numindent)selfr!   r"   r#   r   r   r   __init__5   s    z.vars_from_lines.<locals>.var_metadata.__init__N)r   r   r   r%   r   r   r   r   var_metadata4   s   r&   c             S   s*   x$| D ]}|j   r |dkr dS dS W d S )N_FT)isalpha)nameZsymr   r   r   valid_var_name:   s    
z'vars_from_lines.<locals>.valid_var_namec                sV   t t| j }t|dks* |d  r.dS dd }|d |dd  ||| fS )Nr   c             S   s   | d t | t | j   S )N)r   lstrip)sr   r   r   r#   F   s    z6vars_from_lines.<locals>.var_from_line.<locals>.indentr   )NN)r   r   r   r   )r   r"   lr#   )r*   r&   r   r   var_from_lineA   s
    z&vars_from_lines.<locals>.var_from_line)dictranger   )linesr.   varsivarmetar   )r*   r&   r   vars_from_lines3   s    
r6   c       	      C   s   t | }t|}x\|j D ]P\}}||kr>tjd|| f | || }|jt| d t| d ||j< qW t| d}|j	| |j
  d S )NzCouldn't find %s in %s 
w)r   r6   itemsr   errorr#   r    r"   r   
writelinesclose)	r
   Zvar_dictlogr1   Zvars_in_filer4   r!   r5   fr   r   r   substitute_paramsU   s    (

r@   c              G   s*   t  }xt| D ]}|jj|j qW |S )N)r   reversed__dict__update)Zcfgsrescfgr   r   r   merge_configsf   s    rF   c                sD   t  }dd   fdd}x$| j D ]\}}||j|j|< q$W |S )Nc             S   s@   | dks| dkrdS | dks$| dkr(dS | j  r8t| S | S d S )NTruer   TFalser   F)isdigitint)r!   r   r   r   
load_valuer   s    z)load_config_from_vars.<locals>.load_valuec                s:   t | dkr fdd| D S t | dkr6 | d S d S )Nr   c                s   g | ]} |qS r   r   ).0Z	one_value)rK   r   r   
<listcomp>~   s    zBload_config_from_vars.<locals>.load_value_list.<locals>.<listcomp>r   )r   )Z
value_list)rK   r   r   load_value_list|   s
    z.load_config_from_vars.<locals>.load_value_list)r   r:   r!   rB   )Zcfg_varsrE   rN   r4   r5   r   )rK   r   load_config_from_varso   s    
	rO   c               C   s
   t t S )N)rO   r/   r   r   r   r   empty_config   s    rP   c             C   s   t tt| S )N)rO   r6   r   )r
   r   r   r   load_config_from_file   s    rQ   c       	      C   s"  t | }t }d}g ||< xtdt|d D ]}t||d  }d}|t|k rZ|| }|jdrr|}g ||< q.|jdrt|r|| j| d}q.||d  jd r.||d  jd r.||d  j dk r.t|r.|| j| q.W t }x&|j	 D ]}t
t|| ||< q W |S )Ncommonr   r   {})r   r/   r0   r   r   
startswithr   appendr   ZiterkeysrO   r6   )	r
   r1   ZblocksZcur_block_namer3   	prev_linecur_linerE   Z
block_namer   r   r   load_config_from_info_file   s.    


>rY   )r   r   r   r   r   r   r   r   r6   r@   rF   rO   rP   rQ   rY   r   r   r   r   <module>   s   "	