B
    Qa                 @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZmZ d dlmZmZmZ d dlmZmZmZ d dlmZ dd	d
dddddgZddddddddddddddddddd d!d"d#Zd$ejejej Z!e	d%Z"d&Z#d'Z$d(d) Z%dFd*d+Z&d,d- Z'd.d/ Z(d0d1 Z)dGd3d4Z*d5d6 Z+d7d8 Z,dHd;d<Z-d=d> Z.d?d@ Z/dAdB Z0dIdCdDZ1e2dEkre1ej3d:d  dS )J    N)	auto_path)get_template_content)geometryDatasetNamesgeometryifgramDatasetNamesifgramStacksensor)geometryDictifgramStackDict
ifgramDict)readfileptimeutils)subsetisceariahyp3gmtsarsnapgammaroipaccosicorrzmintpy.load.unwFilezmintpy.load.corFilezmintpy.load.connCompFilezmintpy.load.intFilezmintpy.load.ionoFilezmintpy.load.magFilezmintpy.load.azOffFilezmintpy.load.azOffStdFilezmintpy.load.rgOffFilezmintpy.load.rgOffStdFilezmintpy.load.offSnrFilezmintpy.load.demFilezmintpy.load.lookupYFilezmintpy.load.lookupXFilezmintpy.load.incAngleFilezmintpy.load.azAngleFilezmintpy.load.shadowMaskFilezmintpy.load.waterMaskFilezmintpy.load.bperpFile)unwrapPhase	coherenceconnectComponent	wrapPhase	ionoPhase	magnitudeazimuthOffsetazimuthOffsetStdrangeOffsetrangeOffsetStd	offsetSNRheightlatitude	longitudeazimuthCoord
rangeCoordincidenceAngleazimuthAngle
shadowMask	waterMaskbperpzMtemplate:
########## 1. Load Data (--load to exit after this step)
{}

{}

{}	load_dataaI  NOTE:
  For interferogram, unwrapPhase is required, the other dataset are optional, including coherence, connectComponent, wrapPhase, etc.
  The unwrapPhase metadata file requires DATE12 attribute in YYMMDD-YYMMDD format.
  All path of data file must contain the reference and secondary date, either in file name or folder name.
a|  example:
  load_data.py -t GalapagosSenDT128.tempalte
  load_data.py -t smallbaselineApp.cfg
  load_data.py -t smallbaselineApp.cfg GalapagosSenDT128.tempalte --project GalapagosSenDT128
  load_data.py -H #Show example input template for ISCE/ROI_PAC/GAMMA products

  # load geometry only
  # fill metaFile, baselineDir and geometry datasets in the template and run load_data.py
c           	   C   s   t jdt jtd t d t d} | jddddd | jd	d
tdddd | jdtddd | jdtdtddd | jdddddd | jdddd hd d!d" | jd#d$td%d&d'd(d)gd*d+ | S ),zCreate command line parser.z0Saving a stack of Interferograms to an HDF5 file
)descriptionformatter_classepilogz-Hprint_example_template
store_truez1Print/Show the example template file for loading.)destactionhelpz-tz
--template+template_fileztemplate file with path info.)typenargsr4   r6   z	--projectPROJECT_NAMEz0project name of dataset for INSARMAPS Web Viewer)r9   r4   r6   z--processor	processorz$InSAR processor/software of the filer   )r9   r4   choicesr6   defaultz	--enforcez-f
updateModestore_falsezADisable the update mode, or skip checking dataset already loaded.z--compressiongziplzfNz@compress loaded geometry while writing HDF5 file, default: None.)r=   r>   r6   z-oz--output   outfilez./inputs/ifgramStack.h5z./inputs/geometryRadar.h5z./inputs/geometryGeo.h5zoutput HDF5 file)r9   r:   r4   r>   r6   )	argparseArgumentParserRawTextHelpFormatterTEMPLATENOTEEXAMPLEadd_argumentstrPROCESSOR_LIST)parser rO   F/home/centos/operations/rsmas_insar/sources/MintPy/mintpy/load_data.pycreate_parser\   s*    



rQ   c             C   s   t  }|j| d}|jrnX|jr4tt td n>|  td	t
jt td	t
jt td dd |jD |_t
j|jd |_|S )zCommand line parser.)argsr   zI{}: error: one of the following arguments are required: -t/--template, -Hz'{} -H to show the example template file   c             S   s   g | ]}t j|qS rO   )ospathabspath).0irO   rO   rP   
<listcomp>   s    z"cmd_line_parse.<locals>.<listcomp>)rQ   
parse_argsr8   r2   printDEFAULT_TEMPLATEsysexitprint_usageformatrT   rU   basename__file__rD   dirnameoutdir)iargsrN   inpsrO   rO   rP   cmd_line_parsew   s    
rg   c                s0  t | }d|d< i }x,| jD ]"}t|}t|}|| qW x| D ]\}}|||< qLW d| krx|d |d< d  fdd| D }xh|D ]`}| |  }|dkr| |  ||< q|d	krt	| |  ||< q|r| |  | | < qW t
d
|d  |d dkr$d|d< |dd|d< |dd|d< |d stdd t| jD }t|d |d< d}	tt|d d }
|
r|	t|
7 }	t|
|d< n|	d|d 7 }	t
|	 |ddrt
d tj|d tj|d |d}t |d< x"t D ]\}}||d |< qW |S )a  Read input Namespace object info into iDict

    It grab the following contents into iDict
    1. inps & all template files
    2. configurations: processor, autoPath, updateMode, compression, x/ystep
    3. extra metadata: PLATFORM, PROJECT_NAME,
    4. translate autoPath
    NPLATFORMr<   zmintpy.load.processorzmintpy.load.c                s$   g | ]}|  r| d  qS )rS   )
startswithsplit)rW   rX   )prefixrO   rP   rY      s    z"read_inps2dict.<locals>.<listcomp>)r<   autoPathr?   compression)xstepystepzprocessor : {}rm   Frn   rS   ro   r;   c             S   s    g | ]}t j|d kr|qS )zsmallbaselineApp.cfg)rT   rU   ra   )rW   rX   rO   rO   rP   rY      s    zSAR platform/sensor : r   zunknown from project name "{}"rl   zFuse auto path defined in mintpy.defaults.auto_path for options in autord   )r<   work_dirtemplateds_name2key)varsr8   r   read_templateutcheck_template_auto_valueupdateitemskeysintr[   r`   getlistr   project_name2sensor_namerL   r   Zget_auto_pathrT   rU   rc   dictdatasetName2templateKey)rf   iDictrq   fnametempkeyvaluekey_listcfilemsgsensor_namerO   )rk   rP   read_inps2dict   sZ    






r   c                s  d d< d d< t  d d \}}y0tt d d tt d d g}W n   d}Y nX yB fdd	 d
  D d }tt | d }t|}W n   t }Y nX d}d| krd}nd}|r|s|dkrd}t	d t	d |s6|s6 d dkr,t
 d }t|}|s6 S t
j||d}	|dk	rp|	|}|	|}t	d| t	d| d}
|dk	rt|d }|sd| kr|	|}t
||}
t	d|
 | d< | d< |
 d<  S )zCread the following items:
    geocoded
    box
    box4geo_lut
    Nboxbox4geo_lutr8   r   zmintpy.load.lookupYFilezmintpy.load.lookupXFilec                s   g | ]}|   kr|qS rO   )ry   )rW   rX   )r   rO   rP   rY      s    z#read_subset_box.<locals>.<listcomp>rr   Y_FIRSTTFzgWARNING: mintpy.subset.lalo is not supported if 1) no lookup file AND    2) radar/unkonwn coded datasetz	ignore it and continue.r<   r   zmintpy.load.unwFile)lookup_filez*input bounding box of interest in lalo: {}z#box to read for datasets in y/x: {}z/box to read for geocoded lookup file in y/x: {}geocoded)r   Zread_subset_template2boxglobrL   valuesr   read_attributer~   ry   r[   ru   get_file_list'update_box4files_with_inconsistent_size
coordinatebbox_geo2radarcheck_box_within_data_coverager`   bbox_radar2geo)r   pix_boxgeo_box
lookupFileZpathKeyfileatrr   fnamescoordr   ZatrLutrO   )r   rP   read_subset_box   s\    





r   c       	      C   s  dd | D }dd |D }dd |D }t dd ||gD rt|}t|}dd||f}d}|d	7 }|d
||7 }|d7 }|d7 }xNtt| D ]>}|| |ks|| |kr|d|| d || || 7 }qW |d7 }|d7 }|d7 }|d7 }|d7 }|d7 }t| nd}|S )aV  Check the size (row / column number) of a list of files
    For SNAP geocoded products has one line missing in some interferograms, Andre, 2019-07-16
    Parameters: fnames  : list of path for interferogram files
    Returns:    pix_box : None if all files are in same size
                          (0, 0, min_width, min_length) if not.
    c             S   s   g | ]}t |qS rO   )r   r   )rW   r   rO   rO   rP   rY   *  s    z;update_box4files_with_inconsistent_size.<locals>.<listcomp>c             S   s   g | ]}t |d  qS )LENGTH)rz   )rW   r   rO   rO   rP   rY   +  s    c             S   s   g | ]}t |d  qS )WIDTH)rz   )rW   r   rO   rO   rP   rY   ,  s    c             s   s   | ]}t t|V  qd S )N)lenset)rW   rX   rO   rO   rP   	<genexpr>-  s    z:update_box4files_with_inconsistent_size.<locals>.<genexpr>r   zQ
********************************************************************************zQ
WARNING: NOT all input unwrapped interferograms have the same row/column number!z
Minimum size is: ({}, {})z
------------------------------z)
The following dates have different size:z
	{}	({}, {})DATE12z(
Assuming the interferograms above have:z 
	extra line(s) at the bottom ORz
	extra column(s) at the rightz8
Continue to load data using subset of the minimum size.zR
********************************************************************************
N)anyminr`   ranger   r[   )	r   atr_listlength_list
width_listZ
min_length	min_widthr   r   rX   rO   rO   rP   r   #  s0    &
r   r   c                s  dd | | D }dd |D }dd |D }d}t dd ||gD r|dkrVd	}n,|d
d \}}|t|ks~|t|krd	}|rt|}	t|}
d}|d7 }|d|	|
7 }|d7 }|d7 }t|  }dd |D }d}xtt|D ]}|| |	ks|| |
kr|| }t	
|d xD|D ]<} fdd| | D }t|dkr0| | |d  q0W |d||| || 7 }|d7 }qW |d7 }|d|7 }|dt|| 7 }|d7 }t| | S )z?Skip files by removing the file path from the input dsPathDict.c             S   s   g | ]}t |qS rO   )r   r   )rW   r   rO   rO   rP   rY   K  s    z5skip_files_with_inconsistent_size.<locals>.<listcomp>c             S   s   g | ]}t |d  qS )r   )rz   )rW   r   rO   rO   rP   rY   L  s    c             S   s   g | ]}t |d  qS )r   )rz   )rW   r   rO   rO   rP   rY   M  s    Fc             s   s   | ]}t t|d kV  qdS )rS   N)r   r   )rW   	size_listrO   rO   rP   r   Q  s    z4skip_files_with_inconsistent_size.<locals>.<genexpr>NT      zQ
********************************************************************************zQ
WARNING: NOT all input unwrapped interferograms have the same row/column number!z"
The most common size is: ({}, {})z
------------------------------z)
The following dates have different size:c             S   s   g | ]}|d  qS )r   rO   )rW   r   rO   rO   rP   rY   g  s    r   -c                s&   g | ] t  fd dD r qS )c             3   s   | ]}|d d  kV  qdS )r      NrO   )rW   d)rX   rO   rP   r   p  s    z?skip_files_with_inconsistent_size.<locals>.<listcomp>.<genexpr>)all)rW   )dates)rX   rP   rY   o  s    z
	{}	({}, {})rS   z,
Skip loading the above interferograms ({}).z/
Continue to load the rest interferograms ({}).zR
********************************************************************************
)r   r   ru   most_commonr`   r|   ry   r   r   r   yyyymmddrj   remover[   )
dsPathDictr   dsNamer   r   r   Zdrop_inconsistent_filesZmax_box_widthZmax_box_lengthZcommon_lengthZcommon_widthr   dsNamesdate12_listZnum_droprX   Zdate12r   rO   )r   rP   !skip_files_with_inconsistent_sizeI  sJ    


r   c                s  t d t d t d tdd td  D }i xtfddtD D ]^}d | }| krNttt| }t|dkrN||< t d	j	||| d
 qNW dddg}fdd|D }t|dkrt d	| dS |d }t
d |di }x: D ].}t| }|||< t dj	|||d qW t| tfddD r|d}	|	d7 }	t |	 t }
i }xt| D ]\}}t|d dddd dkrtjtj| nd i }x|
D ]}| | tfddD s, r6 kr6||< nF fdd| D }t|dkrl|d ||< nt d 	| qW t|d!}t}||t|< qW t|dkrt||d"}nd}|S )#z8Read input arguments into dict of ifgramStackDict objectz2--------------------------------------------------z$searching interferometric pairs infozinput data files:c             S   s   g | ]}t |qS rO   )r   )rW   rX   rO   rO   rP   rY     s    z;read_inps_dict2ifgram_stack_dict_object.<locals>.<listcomp>rr   c                s    g | ]}| d    kr|qS )rr   )ry   )rW   rX   )r   rO   rP   rY     s    r   z{:<{width}}: {path})widthrU   r   r    r   c                s   g | ]}|   kr|qS rO   )ry   )rW   rX   )r   rO   rP   rY     s    z(WARNING: No reqired {} data files found!Nr   )r   r   znumber of {:<{width}}: {num})r   numc             3   s   | ]}| d  kV  qdS )r   NrO   )rW   rX   )	dsNumListrO   rP   r     s    z:read_inps_dict2ifgram_stack_dict_object.<locals>.<genexpr>z@WARNING: NOT all types of dataset have the same number of files.z8 -> skip interferograms with missing files and continue.r   _r   r<   r   c             3   s   | ]}| kV  qd S )NrO   )rW   d6)dsPath1rO   rP   r     s    c                s2   g | ]* t  fd dD s*rkr qS )c             3   s   | ]}| kV  qd S )NrO   )rW   r   )prO   rP   r     s    zEread_inps_dict2ifgram_stack_dict_object.<locals>.<listcomp>.<genexpr>)r   )rW   )	date12MJDdate6sr   )r   rP   rY     s    z(WARNING: {:>18} file missing for pair {})datasetDict)	pairsDictdsName0)r[   maxr|   ry   r   sortedr   rL   r   r`   r   r   r   	enumerater   r   replacerj   rT   rU   ra   rc   r   r   r   r   tupler
   )r   maxDigitr   r   filesZdsName0sr   Z	dsNumDictZnum_filer   
dsNameListr   rX   ZdsPath0ZifgramPathDictZdsPath2Z	ifgramObjZdate8sstackObjrO   )r   r   r   r   r   r   rP   'read_inps_dict2ifgram_stack_dict_object~  sr    





r   c          	      s   d dkr* d  d  d  d nJ d dkrT d  d  d  d n  d d	krbntd
 d  td td td tdd t d  D }i }x fddtD D ]} d | }|  krttt	 | }t
|dkr|dkr|i }x0|D ](}ttjtj|}|||< qW |||< tdj|| | d tdt
t|  q|d ||< tdj|||d d qW td }	|	| krtd|	 d }
d } d d }|  kr8tt	 | }t
|dkr8t|d }d| kr0| }
n| }t| }i }i }xj|D ]b}|dkr|ttt||  }nt|| }d| kr|| ||< n|| ||< qRW d }d }t
|dkrt d ||d}t
|dkr t d ||
d}||fS )Nr<   )r   dorisrr   r&   r'   )r   r   r$   r%   )r   r   r   r   r   z!Un-recognized InSAR processor: {}z2--------------------------------------------------zsearching geometry files infozinput data files:c             S   s   g | ]}t |qS rO   )r   )rW   rX   rO   rO   rP   rY   	  s    z7read_inps_dict2geometry_dict_object.<locals>.<listcomp>c                s    g | ]}| d    kr|qS )rr   )ry   )rW   rX   )r   rO   rP   rY     s    r   r,   z{:<{width}}: {path})r   rU   znumber of bperp files: {}z(WARNING: No reqired {} data files found!r   r   )r<   r   ZextraMetadata)popr[   r`   r   r|   ry   r   r   r   rL   r   r   r   rT   rU   ra   rc   r   r   copynextiterr   r	   )r   r   r   r   r   r   Z	bperpDictr   dater   ZifgramMetaGeoZifgramMetaRadarZ	ifgramKeyZifgramFilesr   r   ZdsGeoPathDictZdsRadarPathDictgeomRadarObj
geomGeoObjrO   )r   rP   #read_inps_dict2geometry_dict_object  s    




r   TrS   c             C   s$  d}|r t j| dddkr |jdkr|j|||ddd }| }t| }	|	 dd }
|	jdd	}|
|krt|t|rtd
	t
j|  d}n~|jdkr |j|||d}| }t| }	|	jdd |	 }
|	j}|
|kr t|t|r td	t
j|  d}|S )zDo not write h5 file if: 1) h5 exists and readable,
                                2) it contains all date12 from ifgramStackDict,
                                            or all datasets from geometryDictT)check_readableskipr   )r   rn   ro   rS   NF)
dropIfgramzNAll date12   exists in file {} with same size as required, no need to re-load.r   )	print_msgzNAll datasets exists in file {} with same size as required, no need to re-load.)ru   run_or_skipnameget_sizeget_date12_listr   r   issubsetr[   r`   rT   rU   ra   get_dataset_listr   opendatasetNames)outFileZinObjr   r?   rn   ro   Z
write_flagZin_sizeZin_date12_listZoutObjout_sizeZout_date12_listZin_dset_listZout_dset_listrO   rO   rP   update_objectN  s0    
r   c          	      s*   d }d |}td td | |dkr^|dkrHddlm} nV|d	kr^dd
lm} n@|dkrtddlm} n*|dkrddlm} n|dkrddlm} xdd   D D ]}t	t

t | dkrd tj|jdd } | g}|dkr" d r"|d d  g7 }n|dkr<|d d g7 }t|d| || qW n|dkr$ddlm} ddlm} tt

 d }t	|dkr|d }	ntd  d  d}	 d  }
tj d! }d"d#d$g} fd%d|D } fd&d|D }t	|dkrd||	}|d'kr:tj|d }ntjtj|d }tj|d }nd }d }d(d)d*d+d,d-d.g}d/d |D } fd0d|D }d1|	d2|g}|
r|d3|
g7 }|d k	r|d4|d5|g7 }|r|d6g| 7 }td7d| y|| W n   td8 Y nX n|d9krvdd:lm} d;d  d< D }t	|dkrd|d }n d< d }d=|g}d"d"d>d?d!d@dAdBdC}x| D ]t\}} |d}| dDkr|dEr||tj|g7 }n.|dFr||tj|g7 }n|||g7 }qW  dG r*|dH dG g7 } dI r>|dJg7 }tdKd| y|| W n   tdL Y nX n|dMkrddNlm} dOd  d< D }t	|dkrt dP|d dQtj dR g}tdSd| y|| W n   tdT Y nX n dU |}|dV t!7 }t"|d S )WNr<   z
prep_{}.pyz2--------------------------------------------------z&prepare metadata files for {} products)r   r   r   r   r   r   r   )
prep_gammar   )	prep_hyp3r   )prep_roipacr   )	prep_snapr   )prep_cosicorrc             S   s,   g | ]$}| d r|dr|dkr|qS )zmintpy.load.Filezmintpy.load.metaFile)ri   endswith)rW   rX   rO   rO   rP   rY     s    z$prepare_metadata.<locals>.<listcomp>z{}.py.rh   z--sensorz
--metadatazmintpy.load.metaFile r   )	prep_isce)get_processorz No input metadata file found: {}autozmintpy.load.baselineDirzmintpy.load.demFilezmintpy.load.unwFilezmintpy.load.rgOffFilezmintpy.load.azOffFilec                s   g | ]}|   kr|qS rO   )ry   )rW   rX   )r   rO   rP   rY     s    c                s$   g | ]} |   d kr | qS )r   )lower)rW   r   )r   rO   rP   rY     s    Z	alosStackdemZlookupYZlookupXZincAngleZazAngler*   r+   c             S   s   g | ]}d  |qS )zmintpy.load.{}File)r`   )rW   rX   rO   rO   rP   rY     s    c                s4   g | ],} | r |   d krtj | qS )r   )r   rT   rU   ra   )rW   r   )r   rO   rP   rY     s    z-mz-gz-bz-dz-fz--geom-fileszprep_isce.pyz?prep_isce.py failed. Assuming its result exists and continue...r   )	prep_ariac             S   s   g | ]}| d r|qS )zsmallbaselineApp.cfg)r   )rW   r   rO   rO   rP   rY     s    r8   z
--templatezmintpy.load.corFilezmintpy.load.connCompFilezmintpy.load.incAngleFilezmintpy.load.azAngleFilezmintpy.load.waterMaskFile)z--stack-dirz--unwrap-stack-namez--coherence-stack-namez--conn-comp-stack-namez--demz--incidence-anglez--azimuth-anglez--water-mask)r   nononedirr   rm   z--compressionr?   z--updatezprep_aria.pyz?prep_aria.py failed. Assuming its result exists and continue...r   )prep_gmtsarc             S   s   g | ]}| d s|qS )zsmallbaselineApp.cfg)r   )rW   r   rO   rO   rP   rY     s    z:Custom template file NOT found and is required for GMTSAR!z--mintpy-dirrd   zprep_gmtsar.pyzAprep_gmtsar.py failed. Assuming its result exists and continue...z!un-recognized InSAR processor: {}z
supported processors: {})#r`   r[   mintpyr   r   r   r   r   ry   r   r   rL   rT   rU   ra   __name__rj   r   joinmainr   Zmintpy.utils.isce_utilsr   r   warningswarnrc   r   rx   r{   r   r   FileExistsErrorrM   
ValueError)r   r<   script_nameZprep_moduler   re   r   r   Z
meta_filesZ	meta_fileZbaseline_dirZgeom_dirZobs_keysZ	obs_pathsZobs_dirZobs_fileZ
geom_namesZ	geom_keysZ
geom_filesr   Zdefault_temp_files	temp_fileZARG2OPT_DICTarg_nameZopt_name	arg_valuer   Zcustom_temp_filesr   rO   )r   rP   prepare_metadatar  s    















r  c             C   sz   | d }| d }t d t d| t d| t d| d | d  | d	 }| d
dsj| d }n|}||||fS )Nr?   rm   z2--------------------------------------------------zupdateMode : {}zcompression: {}zx/ystep: {}/{}rn   ro   r   r   Fr   )r[   r`   r{   )r   r?   compr   boxGeorO   rO   rP   print_write_setting  s    
r  c             C   sN   i }dd |   D }x2|D ]*}| | }|dkr>|rF|||< q|||< qW |S )zExtra metadata with key names in MACRO_CASE to be written into stack file.
    E.g.: PROJECT_NAME, PLATFORM, ORBIT_DIRECTION, SUBSET_X/YMIN, etc.
    c             S   s   g | ]}|  r|qS rO   )isupper)rW   rX   rO   rO   rP   rY   (  s    z&get_extra_metadata.<locals>.<listcomp>)r;   rh   )ry   )r   	extraDictZ
upper_keysr   r   rO   rO   rP   get_extra_metadata"  s    

r  c          	   C   s  t | }t }t|}t| |d dkr0d S t|}t|}t|}t|\}}t|\}}	}
}t	|||grt
j|jst
|j td|j |rt|jd ||
||d |d drtd |j|jd d	|
|d |d |	|d
 |rHt|jd ||
||d |d drHtd |j|jd d	|
|d |d d|d
 |rt|jd ||||d |d drtd |j|jd d	||d |d dd tt | d\}}td|| |jS )Nr<   r   zcreate directory: {}r   rn   ro   )r?   rn   ro   z2--------------------------------------------------w)
outputFileaccess_moder   rn   ro   rm   Zextra_metadatarS   rB   r   )r  r  r   rn   ro   rm   <   z(time used: {:02.0f} mins {:02.1f} secs.
)rg   timer   r  r   r  r   r   r  r   rT   rU   isdirrd   makedirsr[   r`   r   rD   
write2hdf5divmod)re   rf   
start_timer   r  r   r   r   r?   r  r   r  msrO   rO   rP   r  4  sh    r  __main__)N)Nr   )TrS   rS   )N)4rT   r]   r   r  rE   r  Zmintpy.defaultsr   mintpy.defaults.templater   mintpy.objectsr   r   r   r   r   Zmintpy.objects.stackDictr	   r
   r   mintpy.utilsr   r   r   ru   r   r   rM   r   r`   ZAUTO_PATH_GAMMAZAUTO_PATH_ISCE_STRIPMAPZAUTO_PATH_ISCE_TOPSr\   rH   rI   rJ   rQ   rg   r   r   r   r   r   r   r   r  r  r  r  r   argvrO   rO   rO   rP   <module>	   sp   

GJ&
5u[
$ 
J
