a
    d
                     @   sV   d dl Z d dlZd dlZd dlZd dlZdd Zdd Zdd Zdd	d
Zdd Z	dS )    Nc                 C   s\   | j r
dnd}t|| d | |tt| d t|| d | |tdt|d  dS )z6 record basae composition in external genomic regions -+5pr   3p   N)
is_reverse_update_tablerangelen)readchrombeforeZaftercompstd r   4lib/python3.9/site-packages/mapdamage/composition.pycount_ref_comp   s    $r   c                 C   st   d| j  }}| jr$dtj| }}t|| d | |td|d  t|| d | t|td| d d dS )z= record base composition of read, discard marked nucleotides r   r   r   r   r   N)queryr   	mapdamageseqZrevcompr   r	   reversed)r   r   lengthr   r   r   r   r   r   count_read_comp   s
    "r   c                 C   s4   t ||D ]$\}}|| v r
| | |  d7  < q
d S )Nr   )zip)tableZsequenceindicesindexntr   r   r   r      s    r   Fc              
      s  ddddd g d}zt jdd| gt jd}| d }| D ]l}| } d t|d   d<  d t|d	   d<  d
 t|d   d
<  d t|d   d< qBW nD ttfy } z(t	j
d|f  t	d W Y d}~n
d}~0 0 t  }|D ]}	t |	 t|  |	< q|dkr6 S t|d}
 fdd|D }|
d|d  |
d|d  |
  dS )zv
    Gets the basecomposition of all the sequences in filename
    and returns the value to destination if given.
    r   )ACGTZseqtkr   )stdoutr      r       r!      r"      zError: Seqtk failed: %s
r   NFwc                    s   g | ]}t  | qS r   )str).0ibasesr   r   
<listcomp>;       z!get_base_comp.<locals>.<listcomp>,
)
subprocessPopenPIPEZcommunicate
splitlinessplitintOSError
ValueErrorsysstderrwriteexitsumvaluesfloatopenjoinclose)filenameZdestinationZalpprocoutliZtabserrorZba_subafoZvalsr   r,   r   get_base_comp   s0     

rK   c           
      C   s\   t | }d}|D ]&}| }| }|r2|}d}q|}qi }t||D ]\}}	|	||< qF|S )zF
    Read the base compition from a file created by get_base_comp
    TF)rA   rstripr6   r   )
rD   ZfhZ
first_linerG   Zlpheaderbodyr-   rI   Zperr   r   r   read_base_comp@   s    
rO   )F)
r   	itertoolsZcsvr2   r:   r   r   r   rK   rO   r   r   r   r   <module>   s   

!