use for loops for dates/pairs processing

LT1AB
CunrenLiang 2020-11-09 12:43:12 -08:00
parent b341c669b0
commit 78a5ddead6
2 changed files with 311 additions and 64 deletions

23
contrib/stack/alosStack/alosStack_tutorial.txt Normal file → Executable file
View File

@ -89,10 +89,25 @@ ${PATH_ALOSSTACK}/create_cmds.py -stack_par alosStack.xml
4. Do most of the single date processing. Run 4. Do most of the single date processing. Run
./cmd_1.sh ./cmd_1.sh
In all command files including cmd_1.sh, note that same commands for processing different dates either In cmd_1.sh and other command files, note that you can split the 'for loop' in each step into a number
listed repeatedly or in a loop can run parallelly. The 'resample to a common grid' step in cmd_1.sh is of parallel runs. See command file for details.
a very time consuming step. These commands can of course run parallelly, but note that each command may
use up to 7G memory. Higly recommended parallel processing steps in each command file.
cmd_1.sh:
estimate SLC offsets
resample to a common grid (WD1 SLC size may be up to 7.2 G, so each run requires this much memory!)
cmd_2.sh
form interferograms (does not requires a lot of computation, more parallel runs recommended)
mosaic interferograms (does not requires a lot of computation, more parallel runs recommended)
cmd_3.sh
subband interferograms (does not requires a lot of computation, more parallel runs recommended)
cmd_4.sh
all steps
5. InSAR processing before ionosphere correction. Run 5. InSAR processing before ionosphere correction. Run
./cmd_2.sh ./cmd_2.sh

View File

@ -279,6 +279,45 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
stackScriptPath = os.environ['PATH_ALOSSTACK'] stackScriptPath = os.environ['PATH_ALOSSTACK']
def parallelSettings(array):
settings = '''
# For parallelly processing the dates/pairs.
# Uncomment and set the following variables, put these settings and the following
# one or multiple for loops for a group (with an individual group_i) in a seperate
# bash script. Then you can run the different groups parallelly. E.g. if you have
# 38 pairs and if you want to process them in 4 parallel runs, then you may set
# group_n=10, and group_i=1 for the first bash script (and 2, 3, 4 for the other
# three bash scripts).
# Number of threads for this run
# export OMP_NUM_THREADS=1
# CUDA device you want to use for this run. Only need to set if you have CUDA GPU
# installed on your computer. To find GPU IDs, run nvidia-smi
# export CUDA_VISIBLE_DEVICES=7
# Parallel processing mode. 0: no, 1 yes.
# Must set 'parallel=1' for parallel processing!
# parallel=1
# Group number for this run (group_i starts from 1)
# group_i=1
# Number of dates or pairs in a group
# group_n=10
# set the array variable used in this for loop here. The array can be found at the
# beginning of this command file.
# {}=()
'''.format(array)
return settings
parallelCommands = ''' if [[ ${parallel} -eq 1 ]]; then
if !(((0+(${group_i}-1)*${group_n} <= ${i})) && ((${i} <= ${group_n}-1+(${group_i}-1)*${group_n}))); then
continue
fi
fi'''
print(' * * *') print(' * * *')
if stack.dateReferenceStack in datesProcess: if stack.dateReferenceStack in datesProcess:
@ -316,6 +355,13 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
#start new commands: processing each date #start new commands: processing each date
################################################################################# #################################################################################
cmd = '#!/bin/bash\n\n' cmd = '#!/bin/bash\n\n'
cmd += '#########################################################################\n'
cmd += '#set the environment variable before running the following steps\n'
cmd += 'dates=({})\n'.format(' '.join(datesProcess))
cmd += 'dates2=({})\n'.format(' '.join(datesProcessSecondary))
cmd += '#########################################################################\n'
cmd += '\n\n'
#read data #read data
if datesProcess != []: if datesProcess != []:
@ -331,6 +377,7 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += ' -virtual' cmd += ' -virtual'
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#frame and swath names use those from frame and swath dirs from now on #frame and swath names use those from frame and swath dirs from now on
@ -340,6 +387,7 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += os.path.join(stackScriptPath, 'compute_baseline.py') + ' -idir {} -odir {} -ref_date {} -sec_date {} -baseline_center baseline_center.txt -baseline_grid -baseline_grid_width 10 -baseline_grid_length 10'.format(stack.datesProcessingDir, stack.baselineDir, stack.dateReferenceStack, ' '.join(datesProcessSecondary)) cmd += os.path.join(stackScriptPath, 'compute_baseline.py') + ' -idir {} -odir {} -ref_date {} -sec_date {} -baseline_center baseline_center.txt -baseline_grid -baseline_grid_width 10 -baseline_grid_length 10'.format(stack.datesProcessingDir, stack.baselineDir, stack.dateReferenceStack, ' '.join(datesProcessSecondary))
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#compute burst synchronization #compute burst synchronization
@ -349,22 +397,38 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += os.path.join(stackScriptPath, 'compute_burst_sync.py') + ' -idir {} -burst_sync_file burst_synchronization.txt -ref_date {}'.format(stack.datesProcessingDir, stack.dateReferenceStack) cmd += os.path.join(stackScriptPath, 'compute_burst_sync.py') + ' -idir {} -burst_sync_file burst_synchronization.txt -ref_date {}'.format(stack.datesProcessingDir, stack.dateReferenceStack)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#estimate SLC offsets #estimate SLC offsets
if datesProcessSecondary != []: if datesProcessSecondary != []:
extraArguments = ''
if insar.useWbdForNumberOffsets is not None:
extraArguments += ' -use_wbd_offset'
if insar.numberRangeOffsets is not None:
for x in insar.numberRangeOffsets:
extraArguments += ' -num_rg_offset {}'.format(' '.join(x))
if insar.numberAzimuthOffsets is not None:
for x in insar.numberAzimuthOffsets:
extraArguments += ' -num_az_offset {}'.format(' '.join(x))
cmd += header('estimate SLC offsets') cmd += header('estimate SLC offsets')
for i in range(len(datesProcessSecondary)): cmd += parallelSettings('dates2')
cmd += os.path.join(stackScriptPath, 'estimate_slc_offset.py') + ' -idir {} -ref_date {} -sec_date {} -wbd {} -dem {}'.format(stack.datesProcessingDir, stack.dateReferenceStack, datesProcessSecondary[i], insar.wbd, stack.dem) cmd += '''for ((i=0;i<${{#dates2[@]}};i++)); do
if insar.useWbdForNumberOffsets is not None:
cmd += ' -use_wbd_offset' {extraCommands}
if insar.numberRangeOffsets is not None:
for x in insar.numberRangeOffsets: {script} -idir {datesProcessingDir} -ref_date {dateReferenceStack} -sec_date ${{dates2[i]}} -wbd {wbd} -dem {dem}{extraArguments}
cmd += ' -num_rg_offset {}'.format(' '.join(x))
if insar.numberAzimuthOffsets is not None: done'''.format(extraCommands = parallelCommands,
for x in insar.numberAzimuthOffsets: script = os.path.join(stackScriptPath, 'estimate_slc_offset.py'),
cmd += ' -num_az_offset {}'.format(' '.join(x)) datesProcessingDir = stack.datesProcessingDir,
cmd += '\n' dateReferenceStack = stack.dateReferenceStack,
wbd = insar.wbd,
dem = stack.dem,
extraArguments = extraArguments)
cmd += '\n'
cmd += '\n'
cmd += '\n' cmd += '\n'
@ -376,6 +440,7 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += ' -match' cmd += ' -match'
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#estimate frame offsets #estimate frame offsets
@ -386,20 +451,37 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += ' -match' cmd += ' -match'
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#resample to a common grid #resample to a common grid
if datesProcess != []: if datesProcess != []:
extraArguments = ''
if stack.gridFrame is not None:
extraArguments += ' -ref_frame {}'.format(stack.gridFrame)
if stack.gridSwath is not None:
extraArguments += ' -ref_swath {}'.format(stack.gridSwath)
if insar.doIon:
extraArguments += ' -subband'
cmd += header('resample to a common grid') cmd += header('resample to a common grid')
for x in datesProcess: cmd += parallelSettings('dates')
cmd += os.path.join(stackScriptPath, 'resample_common_grid.py') + ' -idir {} -odir {} -ref_date {} -sec_date {} -nrlks1 {} -nalks1 {}'.format(stack.datesProcessingDir, stack.datesResampledDir, stack.dateReferenceStack, x, insar.numberRangeLooks1, insar.numberAzimuthLooks1) cmd += '''for ((i=0;i<${{#dates[@]}};i++)); do
if stack.gridFrame is not None:
cmd += ' -ref_frame {}'.format(stack.gridFrame) {extraCommands}
if stack.gridSwath is not None:
cmd += ' -ref_swath {}'.format(stack.gridSwath) {script} -idir {datesProcessingDir} -odir {datesResampledDir} -ref_date {dateReferenceStack} -sec_date ${{dates[i]}} -nrlks1 {numberRangeLooks1} -nalks1 {numberAzimuthLooks1}{extraArguments}
if insar.doIon:
cmd += ' -subband' done'''.format(extraCommands = parallelCommands,
cmd += '\n' script = os.path.join(stackScriptPath, 'resample_common_grid.py'),
datesProcessingDir = stack.datesProcessingDir,
datesResampledDir = stack.datesResampledDir,
dateReferenceStack = stack.dateReferenceStack,
numberRangeLooks1 = insar.numberRangeLooks1,
numberAzimuthLooks1 = insar.numberAzimuthLooks1,
extraArguments = extraArguments)
cmd += '\n'
cmd += '\n'
cmd += '\n' cmd += '\n'
@ -421,8 +503,10 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += ' -ref_swath {}'.format(stack.gridSwath) cmd += ' -ref_swath {}'.format(stack.gridSwath)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
else: else:
cmd += '\n' cmd += '\n'
cmd += '\n'
#compute lat/lon/hgt #compute lat/lon/hgt
@ -441,24 +525,37 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += 'cd ../../' cmd += 'cd ../../'
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#compute geometrical offsets #compute geometrical offsets
if datesProcessSecondary != []: if datesProcessSecondary != []:
cmd += header('compute geometrical offsets') extraArguments = ''
for x in datesProcessSecondary: if insar.useGPU:
date_par_dir = os.path.join('../../', stack.datesProcessingDir, x) extraArguments += ' -gpu'
lat = '../{}/insar/{}_{}rlks_{}alks.lat'.format(stack.dateReferenceStack, stack.dateReferenceStack, insar.numberRangeLooks1, insar.numberAzimuthLooks1)
lon = '../{}/insar/{}_{}rlks_{}alks.lon'.format(stack.dateReferenceStack, stack.dateReferenceStack, insar.numberRangeLooks1, insar.numberAzimuthLooks1)
hgt = '../{}/insar/{}_{}rlks_{}alks.hgt'.format(stack.dateReferenceStack, stack.dateReferenceStack, insar.numberRangeLooks1, insar.numberAzimuthLooks1)
cmd += 'cd {}\n'.format(os.path.join(stack.datesResampledDir, x)) cmd += header('compute geometrical offsets')
cmd += os.path.join(stackScriptPath, 'geo2rdr.py') + ' -date {} -date_par_dir {} -lat {} -lon {} -hgt {} -nrlks1 {} -nalks1 {}'.format(x, date_par_dir, lat, lon, hgt, insar.numberRangeLooks1, insar.numberAzimuthLooks1) cmd += parallelSettings('dates2')
if insar.useGPU: cmd += '''for ((i=0;i<${{#dates2[@]}};i++)); do
cmd += ' -gpu'
cmd += '\n' {extraCommands}
cmd += 'cd ../../\n'
cmd += '\n' cd {datesResampledDir}
{script} -date ${{dates2[i]}} -date_par_dir {datesProcessingDir} -lat {lat} -lon {lon} -hgt {hgt} -nrlks1 {numberRangeLooks1} -nalks1 {numberAzimuthLooks1}{extraArguments}
cd ../../
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'geo2rdr.py'),
datesResampledDir = os.path.join(stack.datesResampledDir, '${dates2[i]}'),
datesProcessingDir = os.path.join('../../', stack.datesProcessingDir, '${dates2[i]}'),
lat = '../{}/insar/{}_{}rlks_{}alks.lat'.format(stack.dateReferenceStack, stack.dateReferenceStack, insar.numberRangeLooks1, insar.numberAzimuthLooks1),
lon = '../{}/insar/{}_{}rlks_{}alks.lon'.format(stack.dateReferenceStack, stack.dateReferenceStack, insar.numberRangeLooks1, insar.numberAzimuthLooks1),
hgt = '../{}/insar/{}_{}rlks_{}alks.hgt'.format(stack.dateReferenceStack, stack.dateReferenceStack, insar.numberRangeLooks1, insar.numberAzimuthLooks1),
numberRangeLooks1 = insar.numberRangeLooks1,
numberAzimuthLooks1 = insar.numberAzimuthLooks1,
extraArguments = extraArguments)
cmd += '\n'
cmd += '\n'
#save commands #save commands
@ -473,6 +570,7 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += '#########################################################################\n' cmd += '#########################################################################\n'
cmd += '#set the environment variable before running the following steps\n' cmd += '#set the environment variable before running the following steps\n'
cmd += 'insarpair=({})\n'.format(' '.join(pairsProcess)) cmd += 'insarpair=({})\n'.format(' '.join(pairsProcess))
cmd += 'dates2=({})\n'.format(' '.join(datesProcessSecondary))
cmd += '#########################################################################\n' cmd += '#########################################################################\n'
cmd += '\n\n' cmd += '\n\n'
else: else:
@ -486,12 +584,17 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cmd += os.path.join(stackScriptPath, 'pair_up.py') + ' -idir1 {} -idir2 {} -odir {} -ref_date {} -pairs {}'.format(stack.datesProcessingDir, stack.datesResampledDir, stack.pairsProcessingDir, stack.dateReferenceStack, ' '.join(pairsProcess)) cmd += os.path.join(stackScriptPath, 'pair_up.py') + ' -idir1 {} -idir2 {} -odir {} -ref_date {} -pairs {}'.format(stack.datesProcessingDir, stack.datesResampledDir, stack.pairsProcessingDir, stack.dateReferenceStack, ' '.join(pairsProcess))
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#form interferograms #form interferograms
if pairsProcess != []: if pairsProcess != []:
cmd += header('form interferograms') cmd += header('form interferograms')
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -500,18 +603,25 @@ def createCmds(stack, datesProcess, pairsProcess, pairsProcessIon, mode):
cd ${{insarpair[i]}} cd ${{insarpair[i]}}
{script} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} {script} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'form_interferogram.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'form_interferogram.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1) nalks1 = insar.numberAzimuthLooks1)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#mosaic interferograms #mosaic interferograms
if pairsProcess != []: if pairsProcess != []:
cmd += header('mosaic interferograms') cmd += header('mosaic interferograms')
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -520,13 +630,16 @@ done'''.format(script = os.path.join(stackScriptPath, 'form_interfe
cd ${{insarpair[i]}} cd ${{insarpair[i]}}
{script} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} {script} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'mosaic_interferogram.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'mosaic_interferogram.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1) nalks1 = insar.numberAzimuthLooks1)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#estimate residual offsets between radar and DEM #estimate residual offsets between radar and DEM
@ -558,26 +671,42 @@ done'''.format(script = os.path.join(stackScriptPath, 'mosaic_inter
cmd += '\n' cmd += '\n'
cmd += 'cd ../../\n' cmd += 'cd ../../\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#rectify range offsets #rectify range offsets
if datesProcessSecondary != []: if datesProcessSecondary != []:
cmd += header('rectify range offsets') cmd += header('rectify range offsets')
aff = os.path.join('../../', stack.dateReferenceStack, 'insar', 'affine_transform.txt') cmd += parallelSettings('dates2')
for x in datesProcessSecondary: cmd += '''for ((i=0;i<${{#dates2[@]}};i++)); do
rgoff = '{}_{}rlks_{}alks_rg.off'.format(x, insar.numberRangeLooks1, insar.numberAzimuthLooks1)
rgoffRect = '{}_{}rlks_{}alks_rg_rect.off'.format(x, insar.numberRangeLooks1, insar.numberAzimuthLooks1) {extraCommands}
cmd += 'cd {}\n'.format(os.path.join(stack.datesResampledDir, x, 'insar'))
cmd += os.path.join(stackScriptPath, 'rect_range_offset.py') + ' -aff {} -input {} -output {} -nrlks1 {} -nalks1 {}'.format(aff, rgoff, rgoffRect, insar.numberRangeLooks1, insar.numberAzimuthLooks1) cd {datesResampledDir}
cmd += '\n' cd ${{dates2[i]}}
cmd += 'cd ../../../\n' cd insar
cmd += '\n' {script} -aff {aff} -input ${{dates2[i]}}_{nrlks1}rlks_{nalks1}alks_rg.off -output ${{dates2[i]}}_{nrlks1}rlks_{nalks1}alks_rg_rect.off -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../../
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'rect_range_offset.py'),
datesResampledDir = stack.datesResampledDir,
aff = os.path.join('../../', stack.dateReferenceStack, 'insar', 'affine_transform.txt'),
nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1)
cmd += '\n'
cmd += '\n'
cmd += '\n'
#diff interferograms #diff interferograms
if pairsProcess != []: if pairsProcess != []:
cmd += header('diff interferograms') cmd += header('diff interferograms')
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -586,7 +715,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'mosaic_inter
cd ${{insarpair[i]}} cd ${{insarpair[i]}}
{script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} {script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'diff_interferogram.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'diff_interferogram.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
idir = os.path.join('../../', stack.datesResampledDir), idir = os.path.join('../../', stack.datesResampledDir),
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
@ -594,13 +725,18 @@ done'''.format(script = os.path.join(stackScriptPath, 'diff_interfe
nalks1 = insar.numberAzimuthLooks1) nalks1 = insar.numberAzimuthLooks1)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#look and coherence #look and coherence
if (pairsProcess != []) or processDateReferenceStack: if (pairsProcess != []) or processDateReferenceStack:
cmd += header('look and coherence') cmd += header('look and coherence')
if pairsProcess != []: if pairsProcess != []:
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -609,7 +745,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'diff_interfe
cd ${{insarpair[i]}} cd ${{insarpair[i]}}
{script} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2} {script} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'look_coherence.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'look_coherence.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1, nalks1 = insar.numberAzimuthLooks1,
@ -652,6 +790,7 @@ done'''.format(script = os.path.join(stackScriptPath, 'look_coheren
cmd += os.path.join(stackScriptPath, 'pair_up.py') + ' -idir1 {} -idir2 {} -odir {} -ref_date {} -pairs {}'.format(stack.datesProcessingDir, stack.datesResampledDir, stack.pairsProcessingDirIon, stack.dateReferenceStack, ' '.join(pairsProcessIon)) cmd += os.path.join(stackScriptPath, 'pair_up.py') + ' -idir1 {} -idir2 {} -odir {} -ref_date {} -pairs {}'.format(stack.datesProcessingDir, stack.datesResampledDir, stack.pairsProcessingDirIon, stack.dateReferenceStack, ' '.join(pairsProcessIon))
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#subband interferograms #subband interferograms
@ -662,7 +801,11 @@ done'''.format(script = os.path.join(stackScriptPath, 'look_coheren
snapArgument = '' snapArgument = ''
cmd += header('subband interferograms') cmd += header('subband interferograms')
cmd += parallelSettings('ionpair')
cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair[i]}}" IFS='-' read -ra dates <<< "${{ionpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -671,7 +814,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'look_coheren
cd ${{ionpair[i]}} cd ${{ionpair[i]}}
{script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}{snapArgument} {script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}{snapArgument}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'ion_subband.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'ion_subband.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
idir = os.path.join('../../', stack.datesResampledDir), idir = os.path.join('../../', stack.datesResampledDir),
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
@ -680,6 +825,7 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_subband.
snapArgument = snapArgument) snapArgument = snapArgument)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#unwrap subband interferograms #unwrap subband interferograms
@ -691,7 +837,11 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_subband.
filtArgument = '' filtArgument = ''
cmd += header('unwrap subband interferograms') cmd += header('unwrap subband interferograms')
cmd += parallelSettings('ionpair')
cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair[i]}}" IFS='-' read -ra dates <<< "${{ionpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -700,7 +850,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_subband.
cd ${{ionpair[i]}} cd ${{ionpair[i]}}
{script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -wbd {wbd} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks_ion {nrlks_ion} -nalks_ion {nalks_ion}{filtArgument} {script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -wbd {wbd} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks_ion {nrlks_ion} -nalks_ion {nalks_ion}{filtArgument}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'ion_unwrap.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'ion_unwrap.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
idir = os.path.join('../../', stack.datesResampledDir), idir = os.path.join('../../', stack.datesResampledDir),
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
@ -712,6 +864,7 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_unwrap.p
filtArgument = filtArgument) filtArgument = filtArgument)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#filter ionosphere #filter ionosphere
@ -731,7 +884,11 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_unwrap.p
filtArgument += ''.join([' -masked_areas '+' '.join([str(y) for y in x]) for x in insar.maskedAreasIon]) filtArgument += ''.join([' -masked_areas '+' '.join([str(y) for y in x]) for x in insar.maskedAreasIon])
cmd += header('filter ionosphere') cmd += header('filter ionosphere')
cmd += parallelSettings('ionpair')
cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair[i]}}" IFS='-' read -ra dates <<< "${{ionpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -740,7 +897,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_unwrap.p
cd ${{ionpair[i]}} cd ${{ionpair[i]}}
{script} -idir {idir1} -idir2 {idir2} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2} -nrlks_ion {nrlks_ion} -nalks_ion {nalks_ion} -win_min {win_min} -win_max {win_max}{filtArgument} {script} -idir {idir1} -idir2 {idir2} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2} -nrlks_ion {nrlks_ion} -nalks_ion {nalks_ion} -win_min {win_min} -win_max {win_max}{filtArgument}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'ion_filt.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'ion_filt.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
idir1 = os.path.join('../../', stack.datesResampledDir), idir1 = os.path.join('../../', stack.datesResampledDir),
idir2 = os.path.join('../../', stack.datesProcessingDir), idir2 = os.path.join('../../', stack.datesProcessingDir),
@ -756,19 +915,26 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_filt.py'
filtArgument = filtArgument) filtArgument = filtArgument)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#prepare interferograms for checking ionospheric correction #prepare interferograms for checking ionospheric correction
cmd += header('prepare interferograms for checking ionosphere estimation results') cmd += header('prepare interferograms for checking ionosphere estimation results')
if pairsProcessIon1 != []: if pairsProcessIon1 != []:
cmd += parallelSettings('ionpair1')
if (insar.numberRangeLooksIon != 1) or (insar.numberAzimuthLooksIon != 1): if (insar.numberRangeLooksIon != 1) or (insar.numberAzimuthLooksIon != 1):
cmd += '''for ((i=0;i<${{#ionpair1[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair1[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair1[i]}}" IFS='-' read -ra dates <<< "${{ionpair1[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
{script} -i {pairsProcessingDir}/${{ionpair1[i]}}/insar/diff_${{ionpair1[i]}}_{nrlks1}rlks_{nalks1}alks.int -o {pairsProcessingDirIon}/${{ionpair1[i]}}/ion/ion_cal/diff_${{ionpair1[i]}}_{nrlks}rlks_{nalks}alks_ori.int -r {nrlks_ion} -a {nalks_ion} {script} -i {pairsProcessingDir}/${{ionpair1[i]}}/insar/diff_${{ionpair1[i]}}_{nrlks1}rlks_{nalks1}alks.int -o {pairsProcessingDirIon}/${{ionpair1[i]}}/ion/ion_cal/diff_${{ionpair1[i]}}_{nrlks}rlks_{nalks}alks_ori.int -r {nrlks_ion} -a {nalks_ion}
done'''.format(script = os.path.join('', 'looks.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join('', 'looks.py'),
pairsProcessingDir = stack.pairsProcessingDir.strip('/'), pairsProcessingDir = stack.pairsProcessingDir.strip('/'),
pairsProcessingDirIon = stack.pairsProcessingDirIon.strip('/'), pairsProcessingDirIon = stack.pairsProcessingDirIon.strip('/'),
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
@ -779,23 +945,34 @@ done'''.format(script = os.path.join('', 'looks.py'),
nalks = insar.numberAzimuthLooks1 * insar.numberAzimuthLooksIon) nalks = insar.numberAzimuthLooks1 * insar.numberAzimuthLooksIon)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
else: else:
cmd += '''for ((i=0;i<${{#ionpair1[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair1[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair1[i]}}" IFS='-' read -ra dates <<< "${{ionpair1[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
cp {pairsProcessingDir}/${{ionpair1[i]}}/insar/diff_${{ionpair1[i]}}_{nrlks1}rlks_{nalks1}alks.int* {pairsProcessingDirIon}/${{ionpair1[i]}}/ion/ion_cal cp {pairsProcessingDir}/${{ionpair1[i]}}/insar/diff_${{ionpair1[i]}}_{nrlks1}rlks_{nalks1}alks.int* {pairsProcessingDirIon}/${{ionpair1[i]}}/ion/ion_cal
done'''.format(pairsProcessingDir = stack.pairsProcessingDir.strip('/'),
done'''.format(extraCommands = parallelCommands,
pairsProcessingDir = stack.pairsProcessingDir.strip('/'),
pairsProcessingDirIon = stack.pairsProcessingDirIon.strip('/'), pairsProcessingDirIon = stack.pairsProcessingDirIon.strip('/'),
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1) nalks1 = insar.numberAzimuthLooks1)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
if pairsProcessIon2 != []: if pairsProcessIon2 != []:
cmd += parallelSettings('ionpair2')
cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair2[i]}}" IFS='-' read -ra dates <<< "${{ionpair2[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -804,7 +981,9 @@ done'''.format(pairsProcessingDir = stack.pairsProcessingDir.strip('/'),
cd ${{ionpair2[i]}} cd ${{ionpair2[i]}}
{script} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} {script} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'form_interferogram.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'form_interferogram.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1) nalks1 = insar.numberAzimuthLooks1)
@ -812,6 +991,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'form_interfe
cmd += '\n' cmd += '\n'
cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair2[i]}}" IFS='-' read -ra dates <<< "${{ionpair2[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -820,7 +1002,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'form_interfe
cd ${{ionpair2[i]}} cd ${{ionpair2[i]}}
{script} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} {script} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'mosaic_interferogram.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'mosaic_interferogram.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
@ -829,6 +1013,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'mosaic_inter
cmd += '\n' cmd += '\n'
cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair2[i]}}" IFS='-' read -ra dates <<< "${{ionpair2[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -837,7 +1024,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'mosaic_inter
cd ${{ionpair2[i]}} cd ${{ionpair2[i]}}
{script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} {script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'diff_interferogram.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'diff_interferogram.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
idir = os.path.join('../../', stack.datesResampledDir), idir = os.path.join('../../', stack.datesResampledDir),
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
@ -848,12 +1037,17 @@ done'''.format(script = os.path.join(stackScriptPath, 'diff_interfe
if (insar.numberRangeLooksIon != 1) or (insar.numberAzimuthLooksIon != 1): if (insar.numberRangeLooksIon != 1) or (insar.numberAzimuthLooksIon != 1):
cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair2[i]}}" IFS='-' read -ra dates <<< "${{ionpair2[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
{script} -i {pairsProcessingDir}/${{ionpair2[i]}}/insar/diff_${{ionpair2[i]}}_{nrlks1}rlks_{nalks1}alks.int -o {pairsProcessingDir}/${{ionpair2[i]}}/ion/ion_cal/diff_${{ionpair2[i]}}_{nrlks}rlks_{nalks}alks_ori.int -r {nrlks_ion} -a {nalks_ion} {script} -i {pairsProcessingDir}/${{ionpair2[i]}}/insar/diff_${{ionpair2[i]}}_{nrlks1}rlks_{nalks1}alks.int -o {pairsProcessingDir}/${{ionpair2[i]}}/ion/ion_cal/diff_${{ionpair2[i]}}_{nrlks}rlks_{nalks}alks_ori.int -r {nrlks_ion} -a {nalks_ion}
done'''.format(script = os.path.join('', 'looks.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join('', 'looks.py'),
pairsProcessingDir = stack.pairsProcessingDirIon.strip('/'), pairsProcessingDir = stack.pairsProcessingDirIon.strip('/'),
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1, nalks1 = insar.numberAzimuthLooks1,
@ -863,23 +1057,34 @@ done'''.format(script = os.path.join('', 'looks.py'),
nalks = insar.numberAzimuthLooks1 * insar.numberAzimuthLooksIon) nalks = insar.numberAzimuthLooks1 * insar.numberAzimuthLooksIon)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
else: else:
cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair2[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair2[i]}}" IFS='-' read -ra dates <<< "${{ionpair2[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
cp {pairsProcessingDir}/${{ionpair2[i]}}/insar/diff_${{ionpair2[i]}}_{nrlks1}rlks_{nalks1}alks.int* {pairsProcessingDir}/${{ionpair2[i]}}/ion/ion_cal cp {pairsProcessingDir}/${{ionpair2[i]}}/insar/diff_${{ionpair2[i]}}_{nrlks1}rlks_{nalks1}alks.int* {pairsProcessingDir}/${{ionpair2[i]}}/ion/ion_cal
done'''.format(pairsProcessingDir = stack.pairsProcessingDirIon.strip('/'),
done'''.format(extraCommands = parallelCommands,
pairsProcessingDir = stack.pairsProcessingDirIon.strip('/'),
nrlks1 = insar.numberRangeLooks1, nrlks1 = insar.numberRangeLooks1,
nalks1 = insar.numberAzimuthLooks1) nalks1 = insar.numberAzimuthLooks1)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#check ionosphere estimation results #check ionosphere estimation results
cmd += header('check ionosphere estimation results') cmd += header('check ionosphere estimation results')
cmd += parallelSettings('ionpair')
cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#ionpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{ionpair[i]}}" IFS='-' read -ra dates <<< "${{ionpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -888,7 +1093,9 @@ done'''.format(pairsProcessingDir = stack.pairsProcessingDirIon.strip('/'),
cd ${{ionpair[i]}} cd ${{ionpair[i]}}
{script} -e='a*exp(-1.0*J*b)' --a=ion/ion_cal/diff_${{ionpair[i]}}_{nrlks}rlks_{nalks}alks_ori.int --b=ion/ion_cal/filt_ion_{nrlks}rlks_{nalks}alks.ion -s BIP -t cfloat -o ion/ion_cal/diff_${{ionpair[i]}}_{nrlks}rlks_{nalks}alks.int {script} -e='a*exp(-1.0*J*b)' --a=ion/ion_cal/diff_${{ionpair[i]}}_{nrlks}rlks_{nalks}alks_ori.int --b=ion/ion_cal/filt_ion_{nrlks}rlks_{nalks}alks.ion -s BIP -t cfloat -o ion/ion_cal/diff_${{ionpair[i]}}_{nrlks}rlks_{nalks}alks.int
cd ../../ cd ../../
done'''.format(script = os.path.join('', 'imageMath.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join('', 'imageMath.py'),
pairsProcessingDir = stack.pairsProcessingDirIon, pairsProcessingDir = stack.pairsProcessingDirIon,
nrlks = insar.numberRangeLooks1*insar.numberRangeLooksIon, nrlks = insar.numberRangeLooks1*insar.numberRangeLooksIon,
nalks = insar.numberAzimuthLooks1*insar.numberAzimuthLooksIon) nalks = insar.numberAzimuthLooks1*insar.numberAzimuthLooksIon)
@ -898,6 +1105,7 @@ done'''.format(script = os.path.join('', 'imageMath.py'),
cmd += os.path.join(stackScriptPath, 'ion_check.py') + ' -idir {} -odir fig_ion -pairs {}'.format(stack.pairsProcessingDirIon, ' '.join(pairsProcessIon)) cmd += os.path.join(stackScriptPath, 'ion_check.py') + ' -idir {} -odir fig_ion -pairs {}'.format(stack.pairsProcessingDirIon, ' '.join(pairsProcessIon))
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#estimate ionospheric phase for each date #estimate ionospheric phase for each date
@ -910,14 +1118,17 @@ done'''.format(script = os.path.join('', 'imageMath.py'),
cmd += ' -zro_date {}'.format(stack.dateReferenceStackIon) cmd += ' -zro_date {}'.format(stack.dateReferenceStackIon)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#correct ionosphere #correct ionosphere
if insar.applyIon: if insar.applyIon:
cmd += header('correct ionosphere') cmd += header('correct ionosphere')
cmd += '#no need to run parallelly for this for loop, it is fast!!!\n'
cmd += '''#redefine insarpair to include all processed InSAR pairs cmd += '''#redefine insarpair to include all processed InSAR pairs
insarpair=($(ls -l {pairsProcessingDir} | grep ^d | awk '{{print $9}}')) insarpair=($(ls -l {pairsProcessingDir} | grep ^d | awk '{{print $9}}'))
for ((i=0;i<${{#insarpair[@]}};i++)); do for ((i=0;i<${{#insarpair[@]}};i++)); do
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -927,6 +1138,7 @@ for ((i=0;i<${{#insarpair[@]}};i++)); do
#uncomment to run this command #uncomment to run this command
#{script} -ion_dir {ion_dir} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2} #{script} -ion_dir {ion_dir} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'ion_correct.py'), done'''.format(script = os.path.join(stackScriptPath, 'ion_correct.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
ion_dir = os.path.join('../../', stack.datesDirIon), ion_dir = os.path.join('../../', stack.datesDirIon),
@ -972,7 +1184,11 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_correct.
extraArguments += ' -wbd_msk' extraArguments += ' -wbd_msk'
cmd += header('filter interferograms') cmd += header('filter interferograms')
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -981,7 +1197,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'ion_correct.
cd ${{insarpair[i]}} cd ${{insarpair[i]}}
{script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2} -alpha {alpha} -win {win} -step {step}{extraArguments} {script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2} -alpha {alpha} -win {win} -step {step}{extraArguments}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'filt.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'filt.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
idir = os.path.join('../../', stack.datesResampledDir), idir = os.path.join('../../', stack.datesResampledDir),
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
@ -995,6 +1213,7 @@ done'''.format(script = os.path.join(stackScriptPath, 'filt.py'),
extraArguments = extraArguments) extraArguments = extraArguments)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#unwrap interferograms #unwrap interferograms
@ -1003,7 +1222,11 @@ done'''.format(script = os.path.join(stackScriptPath, 'filt.py'),
extraArguments += ' -wbd_msk' extraArguments += ' -wbd_msk'
cmd += header('unwrap interferograms') cmd += header('unwrap interferograms')
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -1012,7 +1235,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'filt.py'),
cd ${{insarpair[i]}} cd ${{insarpair[i]}}
{script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2}{extraArguments} {script} -idir {idir} -ref_date_stack {ref_date_stack} -ref_date ${{ref_date}} -sec_date ${{sec_date}} -nrlks1 {nrlks1} -nalks1 {nalks1} -nrlks2 {nrlks2} -nalks2 {nalks2}{extraArguments}
cd ../../ cd ../../
done'''.format(script = os.path.join(stackScriptPath, 'unwrap_snaphu.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'unwrap_snaphu.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
idir = os.path.join('../../', stack.datesResampledDir), idir = os.path.join('../../', stack.datesResampledDir),
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
@ -1023,6 +1248,7 @@ done'''.format(script = os.path.join(stackScriptPath, 'unwrap_snaph
extraArguments = extraArguments) extraArguments = extraArguments)
cmd += '\n' cmd += '\n'
cmd += '\n' cmd += '\n'
cmd += '\n'
#geocode #geocode
@ -1033,7 +1259,11 @@ done'''.format(script = os.path.join(stackScriptPath, 'unwrap_snaph
extraArguments += ' -bbox {}'.format('/'.format(insar.bbox)) extraArguments += ' -bbox {}'.format('/'.format(insar.bbox))
cmd += header('geocode') cmd += header('geocode')
cmd += parallelSettings('insarpair')
cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do cmd += '''for ((i=0;i<${{#insarpair[@]}};i++)); do
{extraCommands}
IFS='-' read -ra dates <<< "${{insarpair[i]}}" IFS='-' read -ra dates <<< "${{insarpair[i]}}"
ref_date=${{dates[0]}} ref_date=${{dates[0]}}
sec_date=${{dates[1]}} sec_date=${{dates[1]}}
@ -1045,7 +1275,9 @@ done'''.format(script = os.path.join(stackScriptPath, 'unwrap_snaph
{script} -ref_date_stack_track ../{ref_date_stack}.track.xml -dem {dem_geo} -input filt_${{insarpair[i]}}_{nrlks}rlks_{nalks}alks.unw -nrlks {nrlks} -nalks {nalks}{extraArguments} {script} -ref_date_stack_track ../{ref_date_stack}.track.xml -dem {dem_geo} -input filt_${{insarpair[i]}}_{nrlks}rlks_{nalks}alks.unw -nrlks {nrlks} -nalks {nalks}{extraArguments}
{script} -ref_date_stack_track ../{ref_date_stack}.track.xml -dem {dem_geo} -input filt_${{insarpair[i]}}_{nrlks}rlks_{nalks}alks_msk.unw -nrlks {nrlks} -nalks {nalks}{extraArguments} {script} -ref_date_stack_track ../{ref_date_stack}.track.xml -dem {dem_geo} -input filt_${{insarpair[i]}}_{nrlks}rlks_{nalks}alks_msk.unw -nrlks {nrlks} -nalks {nalks}{extraArguments}
cd ../../../ cd ../../../
done'''.format(script = os.path.join(stackScriptPath, 'geocode.py'),
done'''.format(extraCommands = parallelCommands,
script = os.path.join(stackScriptPath, 'geocode.py'),
pairsProcessingDir = stack.pairsProcessingDir, pairsProcessingDir = stack.pairsProcessingDir,
ref_date_stack = stack.dateReferenceStack, ref_date_stack = stack.dateReferenceStack,
dem_geo = stack.demGeo, dem_geo = stack.demGeo,