a
    h                     @   sT   d dl Z d dlZd dlZd dlZG dd deZdd Zdd Zdd	 Zd
d Z	dS )    Nc                   @   sn   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 Zdd Zdd Zdd ZdS )Command FNc
           
      C   sl   || _ || _|| _|| _|| _|  | _|dkr6|| _|| _|| _| jd u rRg | _|	| _	| j	d u rhg | _	d S )Nr   )
STAGEpathargs
short_namempi_supportgenerate_job_uuidjob_uuid
config_dir	del_afteroutput_files)
selfr   r   r   r   r   r   r
   r   r    r   n/home/psgendb/BIRCHDEV/install/SPAdes-4.2.0-Linux/linux-x86_64/share/spades/spades_pipeline/commands_parser.py__init__   s    


zCommand.__init__c                 C   s   | j jddg| j S )Nspades-coreZspades_corer   formatr   r   r   r   r   to_list%   s    zCommand.to_listc                 C   s.   | j tjkrdg| j S | j jddg| j S )N$PYTHONr   r   r   sys
executabler   r   r   r   r   r   
to_sh_list(   s    zCommand.to_sh_listc                 C   s   | j jddg| j S )N
spades-hpcr   r   r   r   r   r   to_mpi_list-   s    zCommand.to_mpi_listc                 C   s.   | j tjkrdg| j S | j jddg| j S )Nr   r   r   r   r   r   r   r   to_mpi_sh_list0   s    zCommand.to_mpi_sh_listc                 C   s   d |  S N )joinr   r   r   r   r   __str__5   s    zCommand.__str__c                 C   s   d |  S r    )r"   r   r   r   r   r   sh_str8   s    zCommand.sh_strc                 C   s   d |  S r    )r"   r   r   r   r   r   mpi_str;   s    zCommand.mpi_strc                 C   s   d |  S r    )r"   r   r   r   r   r   
mpi_sh_str>   s    zCommand.mpi_sh_strc                 C   s   t |  | d S )N)supportsys_callr   )r   logr   r   r   runA   s    zCommand.runc              
   C   s*   | j | j| j| j| j| j| j| j| jd	S )N	r   r   r   r   r   r
   r   r   r   r+   r   r   r   r   to_dictD   s    zCommand.to_dictc                 C   s8   | j r
dnd| jdd d ddd tdD  S )	NZ
hpcSPAdes_ZSPAdes_r!   _r   c                 S   s   g | ]}t tjtj qS r   )randomchoicestringascii_uppercasedigits).0kr   r   r   
<listcomp>R       z-Command.generate_job_uuid.<locals>.<listcomp>    )r   r   replacer"   ranger   r   r   r   r	   O   s    zCommand.generate_job_uuid)r   Fr   NN)__name__
__module____qualname__r   r   r   r   r   r#   r$   r%   r&   r*   r,   r	   r   r   r   r   r      s      
r   c                 C   sT   t |d6}|d | D ]}|| d  qW d    n1 sF0    Y  d S Nwzset -e

)openwriter#   commandsoutput_filefwcommandr   r   r   write_commands_to_shV   s    
rG   c                 C   sT   t |d6}|d | D ]}|| d  qW d    n1 sF0    Y  d S r=   )r@   rA   r%   rB   r   r   r   write_commands_to_mpi_sh]   s    
rH   c                 C   sT   dd l }dd | D }t|d }|j||dd W d    n1 sF0    Y  d S )Nr   c                 S   s   g | ]}|  qS r   )r,   )r3   rF   r   r   r   r5   g   r6   z*write_commands_to_yaml.<locals>.<listcomp>r>   F)default_flow_style)pyyaml3r@   dump)rC   rD   yamldatafr   r   r   write_commands_to_yamld   s    rO   c                 C   s`   dd l }t| }||}W d    n1 s00    Y  g }|D ]}|tf i | qB|S )Nr   )rJ   r@   loadappendr   )Z
yaml_fpathrL   streamrM   rC   kwargsr   r   r   read_commands_from_yamlm   s    
(rT   )
r.   r0   r'   r   objectr   rG   rH   rO   rT   r   r   r   r   <module>
   s   E	