B
    0B]                 @   s   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e	e
eejd	d
dZedkrejddZejdedd ejdedejd ejdeddd e ZdddZeejeejZeej dS )    Nc             C   s&   t |}td| }|| j}|S )Nzlib.)	importlibimport_moduleevaldecodedata)eventpackagemodulelibZlcm_tmsg r   N/Users/ericjmartin/Documents/OceanImaging/TiltingRicketts/lcmto/lcmtoarrays.pyprocess_event   s    
r   c          	   C   s   t | ||}dd t|D }t }|d |d |d x|D ]}t||}t|r`qHt|tkr||t| qHyt|}W n" t	k
r   |t| Y qHX d}	xft
|D ]Z\}
}t|dd}y|d	|j 7 }W n    |d
|	 7 }|	d7 }	Y nX |t| qW qHW |S )Nc             S   s   g | ]}| d s|qS )_)
startswith).0fieldr   r   r   
<listcomp>    s    z!event_headers.<locals>.<listcomp>Zevt_channelZ
evt_numberZevt_timestampr   ,r   z_%sz_%i   )r   dirlistappendgetattrcallabletypestriter	TypeError	enumeratereplacename)r   r   r	   r   fieldscolsr   valueiteratoriidxvalsr   r   r   event_headers   s6    




r*   c          	   C   s   dd }t  }t| ||}dd t|D }|d| j  || j || j x|D ]x}t||}t|rrqZt	|t
kr|t
| qZyt|}	W n tk
r   ||| Y qZX x|D ]}
|||
 qW qZW |S )Nc          
   S   s   yLt |tkst |tkr<t|dd}| t| d S | | d S W n4 tk
r`   Y n" tk
r } zW d d }~X Y nX d S )Nr   r   )r   r   r    r   r   AttributeError)Zdatamtr)   Zaer   r   r   append_dataJ   s    
zevent_data.<locals>.append_datac             S   s   g | ]}| d s|qS )r   )r   )r   r   r   r   r   r   `   s    zevent_data.<locals>.<listcomp>z%s)r   r   r   r   channelZeventnum	timestampr   r   r   r   r   r   )r   r   r	   r-   r   r   r"   r   r$   r%   r(   r   r   r   
event_dataI   s*    


r0   gss)in_filechannelsr   returnc          	   C   s>  d}t  }t }t }t }x.| D ]"\}}	t  ||< d||< d||< q&W x| D ]}
tjd|
  t|
d}x|D ]}|j|	 krx||j 
t||||j  ||j dkrt||||j ||j< |d7 }t| t|  d }tj  qxW qRW tjd x(|D ] }tj|| || d||< qW |S )	z

    :rtype: pd.DataFrame
    r   NzProcessing File: %s
rr   g      Y@
)columns)r   dictitemssysstderrwritelcmZEventLogr.   keysr   r0   r*   floattellsizeflushpd	DataFrame)r2   r3   r   r&   rowsr   ZcolnamesZdframeZchanr	   Zlog_namelogr   Zpercent_doner   r   r   
parse_file~   s2    


 
 rG   __main__z,process lcm log files by individual channels)descriptionout_filezfilename for output pickle file)r   helpr2   zlcm log filename to convert)r   rK   nargsz	--packagezpackage name of lcm type module)r   defaultrK   Znav_solution_tZpcomms_t)ZSOI_NAV_SOLUTIONZSEABIRD_CTD_STAT)r1   )r:   r=   argparser   pandasrC   r   r*   r0   r   r8   r   rD   rG   __name__ArgumentParserparseradd_argument	REMAINDER
parse_argsargsr3   r2   r   ZdfZ	to_picklerJ   r   r   r   r   <module>   s$   .50