o
    |Ne                     @   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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
   K/home/exouser/operations/rsmas_insar/tools/PlotData/src/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      g | ]}|qS r
   r
   r   r
   r
   r   r   2       -)create_parserr   
parse_argsplot_boxlendata_direrrorreplacesplitreference_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_jupyter6   s   r.   c                 C   s"  t j| r	| }n2t jt dd |  r t dd |  }nd| vr,t| d }nt| d }t|t jjd}td| g d}| t j	}d	}|D ]}|D ]}||v rl|}||d
 }|||d  }	 nqRqN|
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/mintpyz/mintpy/*.he5z/*.he5)keyzHDF5EOS file used:)ZSenDTZSenATZCskATZCskDTNr   r   z/geo/geo_velocity.h5z/geo/geo_geometryRadar.h5z/geo_velocity.h5)ospathisfilegetenvglobmaxgetctimer   r&   seprsplit)r4   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>   s2   
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/   r0   ),remove_directory_containing_mintpy_from_pathr   is_file	Exceptionr"   partsr3   r6   )r4   
mintpy_dirZpath_objr
   r
   r   prepend_scratchdir_if_neededb   s   rK   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 )Nr0   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   r3   r4   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_plotdataq   s   

rV   c                 C   s^   d }|  d}tt|d ddD ]}|| }d|v r%|}|d | } nqd|}||fS )Nr0   r   r1   )r&   ranger"   join)r4   rJ   dirsidirZcleaned_pathr
   r
   r   rF   ~   s   

rF   c                 C   s"  t |  }|r_dd |dD }|d }|d }t|t|d k r)td|t|t|d kr8td|t|D ]}t|t|krJ|} nq<t|D ]}t|t|kr]|} nqOn|d }|d }td	 td
|d |d  |r~td|| ntd| td|| td	 ||fS )z= Find nearest dates to start and end dates given as YYYYMMDD c                 S   r   r
   r
   r   r
   r
   r   r      r   z/find_nearest_start_end_date.<locals>.<listcomp>r   r   r   z'USER ERROR: No date found earlier than rW   z&USER ERROR:  No date found later than z/###############################################z Period of data:  z Period requested:z Period used:     )r   get_date_listr&   intrH   reversedr   )fnamer(   dateList
start_dateend_datedateZmod_start_dateZmod_end_dater
   r
   r   find_nearest_start_end_date   s<   


re   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)r3   r4   rO   basenamer&   rH   )filer\   tmp	directiontyper
   r
   r   get_data_type   s0      4ro   c                 C   s`   t | d t | d t| d t | d   t | d t| d t | d   t | d g}|S )NX_FIRSTWIDTHX_STEPY_FIRSTFILE_LENGTHY_STEP)r   r^   )Zatr_demZ
dem_extentr
   r
   r   get_dem_extent   s   ,,rv   )N)r3   argparserP   r7   mintpy.utilsr   r   mintpy.objectsr   mintpy.utils.arg_utilsr   numpynppathlibr   EXAMPLEr   r   r+   r.   rE   rK   rV   rF   re   ro   rv   r
   r
   r
   r   <module>   s*   


$,