3
d              
   @   sj   d Z ddlZddlZddlmZmZ dZyddlmZm	Z	m
Z
mZ W n   dZY nX G dd	 d	eZdS )
z+Parallel workflow execution via PBS/Torque
    N   )GraphPluginBaseloggerF)JobWorkflowWorkflowControllerHelperTc                   s*   e Zd ZdZd fdd	Zdd Z  ZS )SomaFlowPluginzExecute using Soma workflowNc                s"   t rtdtt| j|d d S )NzSomaFlow could not be imported)plugin_args)soma_not_loadedImportErrorsuperr	   __init__)selfr
   )	__class__ B/tmp/pip-build-7vycvbft/nipype/nipype/pipeline/plugins/somaflow.pyr      s    zSomaFlowPlugin.__init__c             C   s   g }g }xHt |D ]<\}}tjjtjj|d d }|jttj|g|d qW x<t	|j
 D ],\}	}
x"|
D ]}|j|| ||	 f qnW q`W t||}tjd tjd| t }tjd |j|}tj|| d S )Nr   r   )commandnamezserializing workflowZworkflowzsubmitting workflow)	enumerateospathsplitextsplitappendr   sys
executablelistitemsr   r   infor   	serializer   Zsubmit_workflowZwait_workflow)r   ZpyfilesZdependenciesZnodesjobsZ	soma_depsidxfnamer   keyvaluesvalZwf
controllerZwf_idr   r   r   _submit_graph   s    




zSomaFlowPlugin._submit_graph)N)__name__
__module____qualname____doc__r   r(   __classcell__r   r   )r   r   r	      s   r	   )r,   r   r   baser   r   r   Zsoma.workflow.clientr   r   r   r   r	   r   r   r   r   <module>   s   
