a
    hW                     @   sF   d dl Z d dlZd dlmZ d dlZedddZeedddZdS )	    N)Path)commandc                 c   sf   t jt| t jt jd}t|jjdD ].}|r(|	d}|
drP|d d }|V  q(| V  d S )N)stdoutstderr    zutf-8
)
subprocessPopenshlexsplitPIPEDEVNULLiterr   readlinedecodeendswithwait)r   pline r   X/mounts/lovelace/software/anaconda3/envs/py39/lib/python3.9/site-packages/metaDMG/PMD.pyiterate_command   s    

r   )bam_filemetaDMG_cppc                 C   s   | d|  }d}g }g }t t|D ]>\}}t|tr>|}q&|d\}}	|| |t|	 q&|dkr|td| t	||d}
|
S )zRun the PMD command from metaDMG-cpp and get a DataFrame with the results.

    Parameters
    ----------
    bam_file
        Alignment file to compute the PMD scores on
    metaDMG_cpp
        The metaDMG binary to use
    z pmd    z	PMD:r   zError running )readPMD)
	enumerater   
isinstanceintr   appendfloat	ExceptionpdZ	DataFrame)r   r   r   
returncodeZreadsZPMDsir   r   r   Zdfr   r   r   compute_PMDs   s    

r'   )	r   r	   pathlibr   Zpandasr$   strr   r'   r   r   r   r   <module>   s
   