o
    ޖ+f{                      @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlZd dlmZ dZdddZdd	d
ZdddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )     N)readfile	writefile)HDFEOS)create_argument_parser)Pathzbexample:
  plot_data.py  MaunaLoaSenDT87 MaunaLoaSenAT124 
  plot_data.py  MaunaLoaSenDT87       
c                 C   s   t d d S )NzQQ: Falk_testprint)iargs r
   T/home/exouser/operations/rsmas_insar/tools/PlotData/src/plotdata/helper_functions.py	something   s   r   c                 C   s   t d|  t d|  dS )zprint a stringzQQ-print_string:zQQ-print_again:Nr   )stringr
   r
   r   print_string   s   

r   c                 C   s   t  }td|  td| |j| d}td| td|j t|jdk s,t|jdkr1|d |}td	|j d
d |jdddD |_|j	rZ|j	}dd |dD |_	|j
rk|j
}dd |dD |_
|S )zCommand line parser.zcmd_line_parse: iargs:zcmd_line_parse: parser:)argszcmd_line_parse: args:zcmd_line_parse: args.plot_box:      z/ERROR: You must provide 1 or 2 directory paths.zcmd_line_parse: inps.plot_box:c                 S      g | ]}t |qS r
   float.0valr
   r
   r   
<listcomp>+       z"cmd_line_parse.<locals>.<listcomp>:,c                 S   r   r
   r   r   r
   r
   r   r   .   r   c                 S   s   g | ]}|qS r
   r
   r   r
   r
   r   r   1   s    -)create_parserr   
parse_argsplot_boxlendata_direrrorreplacesplitref_laloperiod)r	   parserr   inpsr%   r&   r
   r
   r   cmd_line_parse   s$   



 r)   c                  C   s"   d} zt   W | S    d} Y | S )NTF)get_ipython)jnr
   r
   r   
is_jupyter5   s   r,   c                 C   sB  t j| r	| }nBt jt dd |  r t dd |  }n+d| v s(d| v r0t| d }nt| d }t|dkrCtd|  t|t jjd	}t	d
| g d}| 
t j}d}|D ]}|D ]}||v r||}|
|d }||
|d  }	 nqbq^|ddd d }
|ddd d }|d |	 d }||
|||fS )zgets the youngest eos5 file. Path can be: 
    MaunaLoaSenAT124
    MaunaLoaSenAT124/mintpy/S1_qq.he5
    ~/onedrive/scratch/MaunaLoaSenAT124/mintpy/S1_qq.he5'
    
SCRATCHDIR/mintpynetworkz/*.he5z/mintpy/*.he5r   z&USER ERROR: No HDF5EOS files found in )keyzHDF5EOS file used:)ZSenDTZSenATZCskATZCskDTNr   z/geo/geo_velocity.h5z/geo/geo_geometryRadar.h5z/geo_velocity.h5)ospathisfilegetenvglobr    	Exceptionmaxgetctimer   r$   seprsplit)r3   eos_filefileskeywordselementsZproject_direlementkeywordZproject_base_dirZ	track_dirgeo_vel_filegeo_geometry_fileout_geo_vel_filer
   r
   r   get_file_names=   s6   
rE   c                 C   s`   t | \} }t| }| rtd|  tt|jdkr&tdd |  } |r.| d | } | S )zR Prepends $SCRATCHDIR if path is project name (got complicated; neet to refactor) zERROR: need to be directory: r   r-   r.   ),remove_directory_containing_mintpy_from_pathr   is_filer7   r    partsr2   r5   )r3   
mintpy_dirZpath_objr
   r
   r   prepend_scratchdir_if_neededc   s   rJ   c           
      C   s   |  ddd d }|dd}|dd}td	|  d
| d| d| d| }d| dtj|  d}td| t| }	td|  t| }	d S )Nr.   r   r   z/timeseries_tropHgt_demErr.h5geo_ velocityzinputs/geometryRadarr<   ztimeseries2velocity.py z --start-date z --end-date z
 --output zsave_gbis.py z -g z/inputs/geometryRadar.h5ztimeseries2velocity command:zsave_gbis command:)	r;   r#   r   r2   r3   dirname
subprocesscheck_outputr$   )
r<   rB   Zstart_date_modZend_date_modZtimeseries_filevel_file	geom_filecmdZcmd1outputr
   r
   r   save_gbis_plotdatar   s   

rU   c                 C   s^   d }|  d}tt|d ddD ]}|| }d|v r%|}|d | } nqd|}||fS )Nr.   r   r/   )r$   ranger    join)r3   rI   dirsidirZcleaned_pathr
   r
   r   rF      s   

rF   c                 C   s  t |  }|rU|d }|d }t|t|d k rtd|t|t|d kr.td|t|D ]}t|t|kr@|} nq2t|D ]}t|t|krS|} nqEn|d }|d }td td|d |d  |rttd|| ntd| td	|| td ||fS )
z= Find nearest dates to start and end dates given as YYYYMMDD r   r   z'USER ERROR: No date found earlier than rV   z&USER ERROR:  No date found later than z/###############################################z Period of data:  z Period requested:z Period used:     )r   get_date_listintr7   reversedr   )fnamer&   dateList
start_dateend_datedateZmod_start_dateZmod_end_dater
   r
   r   find_nearest_start_end_date   s:   


rd   c                 C   s  t j| }dt j|vr5dt j|vr5t j|}|t j|kr%ndt j|vr5dt j|vsdt j|v sEdt j|v rwdt j|v rV|dd d n|dd d }|d }|dkrkd}|S |dkrsd}|S td	| d
krd}|S | dkrd}|S d}|S )NSenZCskr   r   AZAscDZDescz/USER ERROR: direction is not A or D -- exiting zup.h5Upzhz.h5ZHorzZDem)r2   r3   rN   basenamer$   r7   )filer[   tmp	directiontyper
   r
   r   get_data_type   s0      4rn   c                 C   sz   g }t t| }t|}t|d t|d t|d   t|d t|d t|d t|d t|d   g}|S )z get plot_box from data_dict Y_FIRSTFILE_LENGTHY_STEPX_FIRSTWIDTHX_STEP)nextiterr   read_attributer   r]   )	data_dictr   rj   atrr
   r
   r   get_plot_box   s   
,,rz   c                 C   s`   t | d t | d t| d t | d   t | d t| d t | d   t | d g}|S )Nrr   rs   rt   ro   rp   rq   )r   r]   )Zatr_demZ
dem_extentr
   r
   r   get_dem_extent   s   ,,r{   )N)r2   argparserO   r6   mintpy.utilsr   r   mintpy.objectsr   mintpy.utils.arg_utilsr   numpynppathlibr   EXAMPLEr   r   r)   r,   rE   rJ   rU   rF   rd   rn   rz   r{   r
   r
   r
   r   <module>   s,   


&(	