�
?�h � �b � d dl Z d dlZd dlmZ d dlmZ defd�Zdddd�d�Z ddd�d edz fd
�Z
y)� N)�Path)�logger�namec �L � t j | � �t d| � d�� �y)z'
Ensure a tool is in the PATH.
NzRequired tool 'z' not found in PATH)�shutil�which�RuntimeError)r s �2/Users/bao/code/klassify/scripts/simulate/utils.py�
check_toolr s- � � �|�|�D��!��_�T�F�2E�F�G�G� "� )�cwd�stdout�stdinc � � t j ddj t t | � � � t j | |||d�� S )z
Run a command.
zRUN: %s� T)r
r r �check)r �info�join�map�str�sp�run)�cmdr
r r s r
r r s8 � � �K�K� �3�8�8�C��S�M�2�3�
�6�6�#�3�e�F�$�G�Gr )r
�stdout_pathr c
�( � t j ddj t t | � � dj t t |� � � t j | |t
j �� }t |d� 5 }t j |||j |�� }|j j � |j � }|j � }|dk7 s|dk7 rt d|� d|� d �� � d
d
d
� y
# 1 sw Y y
xY w)z%
Run a pipeline of commands.
z
PIPE: %s | %sr )r
r �wb)r
r r r zPipeline failed (rc1=z, rc2=�)N)
r r r r r r �Popen�PIPE�openr �close�waitr ) �cmd1�cmd2r
r �p1�fh�p2�rc1�rc2s r
�run_piper* s� � � �K�K�����#�c�4�.�!9�3�8�8�C��T�N�;S�T� ���$�C���� 0�B�
�k�4� �B�
�X�X�d��2�9�9�R�
@��
� � �����g�g�i���g�g�i���!�8�s�a�x��!6�s�e�6�#��a�H�I�I� �
!� � �s
�A:D�D)r �
subprocessr �pathlibr �jcvi.apps.baser r r r r* � r r
�<module>r/ sG ��
� � � !�H�S� H� ��T� H� !%�� J�4�$�;� Jr