Stack: adjust indentation

LT1AB
Zhang Yunjun 2020-04-28 16:10:01 -07:00 committed by piyushrpt
parent 34fb0b66fa
commit d494ae3924
1 changed files with 265 additions and 236 deletions

View File

@ -12,27 +12,28 @@ import isce
import isceobj import isceobj
from mroipac.baseline.Baseline import Baseline from mroipac.baseline.Baseline import Baseline
filtStrength = '0.8' filtStrength = '0.8'
noMCF = 'False' noMCF = 'False'
defoMax = '2' defoMax = '2'
maxNodes = 72 maxNodes = 72
class config(object): class config(object):
""" """
A class representing the config file A class representing the config file
""" """
def __init__(self, outname): def __init__(self, outname):
self.f= open(outname,'w') self.f= open(outname,'w')
self.f.write('[Common]'+'\n') self.f.write('[Common]'+'\n')
self.f.write('') self.f.write('')
self.f.write('##########################'+'\n') self.f.write('##########################'+'\n')
def configure(self,inps): def configure(self,inps):
for k in inps.__dict__.keys(): for k in inps.__dict__.keys():
setattr(self, k, inps.__dict__[k]) setattr(self, k, inps.__dict__[k])
self.plot = 'False' self.plot = 'False'
self.misreg = None self.misreg = None
def cropFrame(self, function): def cropFrame(self, function):
self.f.write('##########################'+'\n') self.f.write('##########################'+'\n')
@ -112,7 +113,7 @@ class config(object):
self.f.write('coreg : ' + self.coregSlaveSlc +'\n') self.f.write('coreg : ' + self.coregSlaveSlc +'\n')
self.f.write('offsets : ' + self.offsetDir +'\n') self.f.write('offsets : ' + self.offsetDir +'\n')
if self.misreg: if self.misreg:
self.f.write('poly : ' + self.misreg + '\n') self.f.write('poly : ' + self.misreg + '\n')
self.f.write('##########################'+'\n') self.f.write('##########################'+'\n')
def resampleSlc_subband(self, function): def resampleSlc_subband(self, function):
@ -124,7 +125,7 @@ class config(object):
self.f.write('coreg : ' + self.coregSlaveSlc +'\n') self.f.write('coreg : ' + self.coregSlaveSlc +'\n')
self.f.write('offsets : ' + self.offsetDir +'\n') self.f.write('offsets : ' + self.offsetDir +'\n')
if self.misreg: if self.misreg:
self.f.write('poly : ' + self.misreg + '\n') self.f.write('poly : ' + self.misreg + '\n')
self.f.write('##########################'+'\n') self.f.write('##########################'+'\n')
def baselineGrid(self, function): def baselineGrid(self, function):
@ -223,9 +224,9 @@ class config(object):
self.f.write('outDir : ' + self.outDir + '\n') self.f.write('outDir : ' + self.outDir + '\n')
self.f.write('shelve : ' + self.shelve + '\n') self.f.write('shelve : ' + self.shelve + '\n')
if self.fL and self.fH and self.bandWidth: if self.fL and self.fH and self.bandWidth:
self.f.write('dcL : ' + self.fL + '\n') self.f.write('dcL : ' + self.fL + '\n')
self.f.write('dcH : ' + self.fH + '\n') self.f.write('dcH : ' + self.fH + '\n')
self.f.write('bw : ' + self.bandWidth + '\n') self.f.write('bw : ' + self.bandWidth + '\n')
self.f.write('##########################'+'\n') self.f.write('##########################'+'\n')
def estimateDispersive(self, function): def estimateDispersive(self, function):
@ -257,23 +258,23 @@ class config(object):
def get_dates(inps): def get_dates(inps):
dirs = glob.glob(inps.slcDir+'/*') dirs = glob.glob(inps.slcDir+'/*')
acuisitionDates = [] acuisitionDates = []
for dir in dirs: for dir in dirs:
expectedRaw = os.path.join(dir,os.path.basename(dir) + '.slc') expectedRaw = os.path.join(dir,os.path.basename(dir) + '.slc')
if os.path.exists(expectedRaw): if os.path.exists(expectedRaw):
acuisitionDates.append(os.path.basename(dir)) acuisitionDates.append(os.path.basename(dir))
acuisitionDates.sort() acuisitionDates.sort()
print (dirs) print (dirs)
print (acuisitionDates) print (acuisitionDates)
if inps.masterDate not in acuisitionDates: if inps.masterDate not in acuisitionDates:
print ('master date was not found. The first acquisition will be considered as the stack master date.') print ('master date was not found. The first acquisition will be considered as the stack master date.')
if inps.masterDate is None or inps.masterDate not in acuisitionDates: if inps.masterDate is None or inps.masterDate not in acuisitionDates:
inps.masterDate = acuisitionDates[0] inps.masterDate = acuisitionDates[0]
slaveDates = acuisitionDates.copy() slaveDates = acuisitionDates.copy()
slaveDates.remove(inps.masterDate) slaveDates.remove(inps.masterDate)
return acuisitionDates, inps.masterDate, slaveDates return acuisitionDates, inps.masterDate, slaveDates
class run(object): class run(object):
""" """
@ -299,7 +300,6 @@ class run(object):
else: else:
self.raw_string = '' self.raw_string = ''
# folder structures # folder structures
self.stack_folder = inps.stack_folder self.stack_folder = inps.stack_folder
selfdense_offsets_folder = inps.dense_offsets_folder selfdense_offsets_folder = inps.dense_offsets_folder
@ -308,16 +308,16 @@ class run(object):
def crop(self, acquisitionDates, config_prefix, native=True, israw=True): def crop(self, acquisitionDates, config_prefix, native=True, israw=True):
for d in acquisitionDates: for d in acquisitionDates:
configName = os.path.join(self.configDir, config_prefix + d) configName = os.path.join(self.configDir, config_prefix + d)
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.inputDir = os.path.join(self.fullFrameSlcDir, d) configObj.inputDir = os.path.join(self.fullFrameSlcDir, d)
configObj.cropOutputDir = os.path.join(self.slcDir, d) configObj.cropOutputDir = os.path.join(self.slcDir, d)
configObj.bbox = self.bbox configObj.bbox = self.bbox
configObj.nativeDoppler = native configObj.nativeDoppler = native
configObj.israw = israw configObj.israw = israw
configObj.cropFrame('[Function-1]') configObj.cropFrame('[Function-1]')
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def master_focus_split_geometry(self, stackMaster, config_prefix, split=False, focus=True, native=True): def master_focus_split_geometry(self, stackMaster, config_prefix, split=False, focus=True, native=True):
"""focusing master and producing geometry files""" """focusing master and producing geometry files"""
@ -357,115 +357,121 @@ class run(object):
def slaves_focus_split(self, slaveDates, config_prefix, split=False, focus=True, native=True): def slaves_focus_split(self, slaveDates, config_prefix, split=False, focus=True, native=True):
for slave in slaveDates: for slave in slaveDates:
configName = os.path.join(self.configDir, config_prefix + '_'+slave) configName = os.path.join(self.configDir, config_prefix + '_'+slave)
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.slcDir = os.path.join(self.slcDir,slave) configObj.slcDir = os.path.join(self.slcDir,slave)
counter=1
counter=1 if focus:
if focus: configObj.focus('[Function-{0}]'.format(counter))
configObj.focus('[Function-{0}]'.format(counter)) counter += 1
counter += 1 if split:
configObj.slc = os.path.join(configObj.slcDir,slave + self.raw_string + '.slc')
if split: configObj.outDir = configObj.slcDir
configObj.slc = os.path.join(configObj.slcDir,slave + self.raw_string + '.slc') configObj.shelve = os.path.join(configObj.slcDir, 'data')
configObj.outDir = configObj.slcDir configObj.splitRangeSpectrum('[Function-{0}]'.format(counter))
configObj.shelve = os.path.join(configObj.slcDir, 'data') configObj.finalize()
configObj.splitRangeSpectrum('[Function-{0}]'.format(counter)) del configObj
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
configObj.finalize()
del configObj
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def slaves_geo2rdr_resampleSlc(self, stackMaster, slaveDates, config_prefix, native=True): def slaves_geo2rdr_resampleSlc(self, stackMaster, slaveDates, config_prefix, native=True):
for slave in slaveDates: for slave in slaveDates:
configName = os.path.join(self.configDir,config_prefix+slave) configName = os.path.join(self.configDir,config_prefix+slave)
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.masterSlc = os.path.join(self.slcDir, stackMaster) configObj.masterSlc = os.path.join(self.slcDir, stackMaster)
configObj.slaveSlc = os.path.join(self.slcDir, slave) configObj.slaveSlc = os.path.join(self.slcDir, slave)
configObj.geometryDir = os.path.join(self.workDir, self.stack_folder,'geom_master') configObj.geometryDir = os.path.join(self.workDir, self.stack_folder,'geom_master')
configObj.offsetDir = os.path.join(self.workDir, 'offsets',slave) configObj.offsetDir = os.path.join(self.workDir, 'offsets',slave)
configObj.nativeDoppler = native configObj.nativeDoppler = native
configObj.geo2rdr('[Function-1]')
configObj.geo2rdr('[Function-1]') configObj.coregSlaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse',slave)
configObj.coregSlaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse',slave) configObj.resampleSlc('[Function-2]')
configObj.resampleSlc('[Function-2]') configObj.finalize()
configObj.finalize() del configObj
del configObj self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def refineSlaveTiming_singleMaster(self, stackMaster, slaveDates, config_prefix): def refineSlaveTiming_singleMaster(self, stackMaster, slaveDates, config_prefix):
for slave in slaveDates: for slave in slaveDates:
configName = os.path.join(self.configDir,config_prefix+slave) configName = os.path.join(self.configDir,config_prefix+slave)
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.masterSlc = os.path.join(self.slcDir, stackMaster,stackMaster+self.raw_string+'.slc') configObj.masterSlc = os.path.join(self.slcDir, stackMaster,stackMaster+self.raw_string+'.slc')
configObj.slaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse', slave,slave +'.slc') configObj.slaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse', slave,slave +'.slc')
configObj.masterMetaData = os.path.join(self.slcDir, stackMaster) configObj.masterMetaData = os.path.join(self.slcDir, stackMaster)
configObj.slaveMetaData = os.path.join(self.slcDir, slave) configObj.slaveMetaData = os.path.join(self.slcDir, slave)
configObj.outfile = os.path.join(self.workDir, 'offsets', slave ,'misreg') configObj.outfile = os.path.join(self.workDir, 'offsets', slave ,'misreg')
configObj.refineSlaveTiming('[Function-1]') configObj.refineSlaveTiming('[Function-1]')
configObj.finalize() configObj.finalize()
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def refineSlaveTiming_Network(self, pairs, stackMaster, slaveDates, config_prefix): def refineSlaveTiming_Network(self, pairs, stackMaster, slaveDates, config_prefix):
for pair in pairs: for pair in pairs:
configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1])
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
if pair[0] == stackMaster:
if pair[0] == stackMaster: configObj.masterSlc = os.path.join(self.slcDir,stackMaster,stackMaster+self.raw_string+'.slc')
configObj.masterSlc = os.path.join(self.slcDir,stackMaster,stackMaster+self.raw_string+'.slc') else:
else: configObj.masterSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[0] , pair[0] + '.slc')
configObj.masterSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[0] , pair[0] + '.slc') if pair[1] == stackMaster:
configObj.slaveSlc = os.path.join(self.slcDir,stackMaster, stackMaster+self.raw_string+'.slc')
if pair[1] == stackMaster: else:
configObj.slaveSlc = os.path.join(self.slcDir,stackMaster, stackMaster+self.raw_string+'.slc') configObj.slaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[1], pair[1] + '.slc')
else: configObj.masterMetaData = os.path.join(self.slcDir, pair[0])
configObj.slaveSlc = os.path.join(self.workDir, 'coregSLC','Coarse', pair[1], pair[1] + '.slc') configObj.slaveMetaData = os.path.join(self.slcDir, pair[1])
configObj.outfile = os.path.join(self.workDir, 'refineSlaveTiming','pairs', pair[0] + '_' + pair[1] ,'misreg')
configObj.masterMetaData = os.path.join(self.slcDir, pair[0]) configObj.refineSlaveTiming('[Function-1]')
configObj.slaveMetaData = os.path.join(self.slcDir, pair[1]) configObj.finalize()
configObj.outfile = os.path.join(self.workDir, 'refineSlaveTiming','pairs', pair[0] + '_' + pair[1] ,'misreg') del configObj
configObj.refineSlaveTiming('[Function-1]') self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
configObj.finalize()
del configObj
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def denseOffsets_Network(self, pairs, stackMaster, slaveDates, config_prefix): def denseOffsets_Network(self, pairs, stackMaster, slaveDates, config_prefix):
for pair in pairs: for pair in pairs:
configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1])
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
if pair[0] == stackMaster:
configObj.masterSlc = os.path.join(self.slcDir,
stackMaster,
stackMaster+self.raw_string + '.slc')
else:
configObj.masterSlc = os.path.join(self.workDir,
self.stack_folder,
'SLC',
pair[0],
pair[0] + '.slc')
if pair[1] == stackMaster:
configObj.slaveSlc = os.path.join(self.slcDir,
stackMaster,
stackMaster+self.raw_string+'.slc')
else:
configObj.slaveSlc = os.path.join(self.workDir,
self.stack_folder,
'SLC',
pair[1],
pair[1] + '.slc')
configObj.outfile = os.path.join(self.workDir,
self.dense_offsets_folder,
'pairs',
pair[0] + '_' + pair[1],
pair[0] + '_' + pair[1])
configObj.denseOffsets('[Function-1]')
if pair[0] == stackMaster: configObj.denseOffset = configObj.outfile + '.bil'
configObj.masterSlc = os.path.join(self.slcDir,stackMaster , stackMaster+self.raw_string + '.slc') configObj.snr = configObj.outfile + '_snr.bil'
else: configObj.outDir = os.path.join(self.workDir, self.dense_offsets_folder,'pairs' , pair[0] + '_' + pair[1])
configObj.masterSlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[0] , pair[0] + '.slc') configObj.filterOffsets('[Function-2]')
configObj.finalize()
if pair[1] == stackMaster: del configObj
configObj.slaveSlc = os.path.join(self.slcDir,stackMaster, stackMaster+self.raw_string+'.slc') self.runf.write(self.text_cmd + 'stripmapWrapper.py -c '+ configName+'\n')
else:
configObj.slaveSlc = os.path.join(self.workDir, self.stack_folder,'SLC', pair[1] , pair[1] + '.slc')
configObj.outfile = os.path.join(self.workDir, self.dense_offsets_folder,'pairs', pair[0] + '_' + pair[1] , pair[0] + '_' + pair[1])
configObj.denseOffsets('[Function-1]')
configObj.denseOffset = configObj.outfile + '.bil'
configObj.snr = configObj.outfile + '_snr.bil'
configObj.outDir = os.path.join(self.workDir, self.dense_offsets_folder,'pairs' , pair[0] + '_' + pair[1])
configObj.filterOffsets('[Function-2]')
configObj.finalize()
del configObj
self.runf.write(self.text_cmd + 'stripmapWrapper.py -c '+ configName+'\n')
def invertMisregPoly(self): def invertMisregPoly(self):
@ -474,7 +480,7 @@ class run(object):
dateDirs = os.path.join(self.workDir, 'refineSlaveTiming/dates/') dateDirs = os.path.join(self.workDir, 'refineSlaveTiming/dates/')
cmd = self.text_cmd + 'invertMisreg.py -i ' + pairDirs + ' -o ' + dateDirs cmd = self.text_cmd + 'invertMisreg.py -i ' + pairDirs + ' -o ' + dateDirs
self.runf.write(cmd + '\n') self.runf.write(cmd + '\n')
def invertDenseOffsets(self): def invertDenseOffsets(self):
@ -486,43 +492,43 @@ class run(object):
def rubbersheet(self, slaveDates, config_prefix): def rubbersheet(self, slaveDates, config_prefix):
for slave in slaveDates: for slave in slaveDates:
configName = os.path.join(self.configDir, config_prefix+slave) configName = os.path.join(self.configDir, config_prefix+slave)
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.geometry_azimuth_offset = os.path.join(self.workDir, 'offsets' , slave , 'azimuth.off') configObj.geometry_azimuth_offset = os.path.join(self.workDir, 'offsets' , slave , 'azimuth.off')
configObj.dense_offset = os.path.join(self.workDir,self.dense_offsets_folder,'dates', slave , slave + '.bil') configObj.dense_offset = os.path.join(self.workDir,self.dense_offsets_folder,'dates', slave , slave + '.bil')
configObj.snr = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , slave , slave + '_snr.bil') configObj.snr = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , slave , slave + '_snr.bil')
configObj.output_azimuth_offset = 'azimuth.off' configObj.output_azimuth_offset = 'azimuth.off'
configObj.output_directory = os.path.join(self.workDir,self.dense_offsets_folder,'dates', slave) configObj.output_directory = os.path.join(self.workDir,self.dense_offsets_folder,'dates', slave)
configObj.rubbersheet('[Function-1]') configObj.rubbersheet('[Function-1]')
configObj.finalize() configObj.finalize()
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def resampleOffset(self, slaveDates, config_prefix): def resampleOffset(self, slaveDates, config_prefix):
for slave in slaveDates: for slave in slaveDates:
configName = os.path.join(self.configDir, config_prefix+slave) configName = os.path.join(self.configDir, config_prefix+slave)
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.targetFile = os.path.join(self.workDir, 'offsets/'+slave + '/azimuth.off') configObj.targetFile = os.path.join(self.workDir, 'offsets/'+slave + '/azimuth.off')
configObj.input = os.path.join(self.workDir,self.dense_offsets_folder,'dates',slave , slave + '.bil') configObj.input = os.path.join(self.workDir,self.dense_offsets_folder,'dates',slave , slave + '.bil')
configObj.output = os.path.join(self.workDir,self.dense_offsets_folder,'dates',slave, 'azimuth.off') configObj.output = os.path.join(self.workDir,self.dense_offsets_folder,'dates',slave, 'azimuth.off')
configObj.resampleOffset('[Function-1]') configObj.resampleOffset('[Function-1]')
configObj.finalize() configObj.finalize()
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def replaceOffsets(self, slaveDates): def replaceOffsets(self, slaveDates):
dateDirs = os.path.join(self.workDir, self.dense_offsets_folder,'dates') dateDirs = os.path.join(self.workDir, self.dense_offsets_folder,'dates')
for slave in slaveDates: for slave in slaveDates:
geometryOffset = os.path.join(self.workDir, 'offsets', slave , 'azimuth.off') geometryOffset = os.path.join(self.workDir, 'offsets', slave , 'azimuth.off')
geometryOnlyOffset = os.path.join(self.workDir, 'offsets' , slave , 'azimuth.off.geometry') geometryOnlyOffset = os.path.join(self.workDir, 'offsets' , slave , 'azimuth.off.geometry')
rubberSheeted = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , slave , 'azimuth.off') rubberSheeted = os.path.join(self.workDir,self.dense_offsets_folder,'dates' , slave , 'azimuth.off')
cmd = self.text_cmd + 'mv ' + geometryOffset + ' ' + geometryOnlyOffset cmd = self.text_cmd + 'mv ' + geometryOffset + ' ' + geometryOnlyOffset
cmd = cmd + '; mv ' + rubberSheeted + ' ' + geometryOffset cmd = cmd + '; mv ' + rubberSheeted + ' ' + geometryOffset
self.runf.write(cmd + '\n') self.runf.write(cmd + '\n')
def gridBaseline(self, stackMaster, slaveDates, config_prefix, split=False): def gridBaseline(self, stackMaster, slaveDates, config_prefix, split=False):
@ -546,8 +552,16 @@ class run(object):
def slaves_fine_resampleSlc(self, stackMaster, slaveDates, config_prefix, split=False): def slaves_fine_resampleSlc(self, stackMaster, slaveDates, config_prefix, split=False):
# copy over the master into the final SLC folder as well # copy over the master into the final SLC folder as well
self.runf.write(self.text_cmd + ' masterStackCopy.py -i ' + os.path.join(self.slcDir,stackMaster, stackMaster+self.raw_string + '.slc') + ' -o ' + os.path.join(self.workDir, self.stack_folder,'SLC', stackMaster, stackMaster+'.slc' )+ '\n') self.runf.write(self.text_cmd + ' masterStackCopy.py -i ' +
os.path.join(self.slcDir,
stackMaster,
stackMaster + self.raw_string + '.slc') + ' -o ' +
os.path.join(self.workDir,
self.stack_folder,
'SLC',
stackMaster,
stackMaster+'.slc' )+ '\n')
# now resample each of the slaves to the master geometry # now resample each of the slaves to the master geometry
for slave in slaveDates: for slave in slaveDates:
configName = os.path.join(self.configDir, config_prefix+slave) configName = os.path.join(self.configDir, config_prefix+slave)
@ -574,62 +588,76 @@ class run(object):
def igrams_network(self, pairs, acuisitionDates, stackMaster,low_or_high, config_prefix): def igrams_network(self, pairs, acuisitionDates, stackMaster,low_or_high, config_prefix):
for pair in pairs: for pair in pairs:
configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1])
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
if pair[0] == stackMaster: if pair[0] == stackMaster:
configObj.masterSlc = os.path.join(self.slcDir,stackMaster + low_or_high + stackMaster+self.raw_string +'.slc') configObj.masterSlc = os.path.join(self.slcDir,
else: stackMaster + low_or_high + stackMaster+self.raw_string +'.slc')
configObj.masterSlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[0] + low_or_high + pair[0] + '.slc') else:
configObj.masterSlc = os.path.join(self.workDir,
self.stack_folder,
'SLC',
pair[0] + low_or_high + pair[0] + '.slc')
if pair[1] == stackMaster:
configObj.slaveSlc = os.path.join(self.slcDir,
stackMaster + low_or_high + stackMaster+self.raw_string+'.slc')
else:
configObj.slaveSlc = os.path.join(self.workDir,
self.stack_folder,
'SLC',
pair[1] + low_or_high + pair[1] + '.slc')
if pair[1] == stackMaster: configObj.outDir = os.path.join(self.workDir,
configObj.slaveSlc = os.path.join(self.slcDir,stackMaster + low_or_high + stackMaster+self.raw_string+'.slc') 'Igrams' + low_or_high + pair[0] + '_' + pair[1],
else: pair[0] + '_' + pair[1])
configObj.slaveSlc = os.path.join(self.workDir, self.stack_folder, 'SLC', pair[1] + low_or_high + pair[1] + '.slc')
configObj.outDir = os.path.join(self.workDir, 'Igrams' + low_or_high + configObj.generateIgram('[Function-1]')
pair[0] + '_' + pair[1] +'/'+pair[0] + '_' + pair[1]) configObj.igram = configObj.outDir+'.int'
configObj.generateIgram('[Function-1]') configObj.filtIgram = os.path.dirname(configObj.outDir) + '/filt_' + pair[0] + '_' + pair[1] + '.int'
configObj.coherence = os.path.dirname(configObj.outDir) + '/filt_' + pair[0] + '_' + pair[1] + '.cor'
#configObj.filtStrength = filtStrength
configObj.filterCoherence('[Function-2]')
configObj.igram = configObj.outDir+'.int' # skip phase unwrapping if input method == no
configObj.filtIgram = os.path.dirname(configObj.outDir) + '/filt_' + pair[0] + '_' + pair[1] + '.int' if self.unwMethod.lower() != 'no':
configObj.coherence = os.path.dirname(configObj.outDir) + '/filt_' + pair[0] + '_' + pair[1] + '.cor' configObj.igram = configObj.filtIgram
#configObj.filtStrength = filtStrength configObj.unwIfg = os.path.dirname(configObj.outDir) + '/filt_' + pair[0] + '_' + pair[1]
configObj.filterCoherence('[Function-2]') configObj.noMCF = noMCF
configObj.master = os.path.join(self.slcDir,stackMaster +'/data')
# skip phase unwrapping if input method == no configObj.defoMax = defoMax
if self.unwMethod.lower() != 'no': configObj.unwrap('[Function-3]')
configObj.igram = configObj.filtIgram configObj.finalize()
configObj.unwIfg = os.path.dirname(configObj.outDir) + '/filt_' + pair[0] + '_' + pair[1] self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
configObj.noMCF = noMCF
configObj.master = os.path.join(self.slcDir,stackMaster +'/data')
configObj.defoMax = defoMax
configObj.unwrap('[Function-3]')
configObj.finalize()
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def dispersive_nonDispersive(self, pairs, acuisitionDates, stackMaster, def dispersive_nonDispersive(self, pairs, acuisitionDates, stackMaster,
lowBand, highBand, config_prefix): lowBand, highBand, config_prefix):
for pair in pairs: for pair in pairs:
configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1]) configName = os.path.join(self.configDir,config_prefix + pair[0] + '_' + pair[1])
configObj = config(configName) configObj = config(configName)
configObj.configure(self) configObj.configure(self)
configObj.lowBandIgram = os.path.join(self.workDir, 'Igrams' + lowBand + pair[0] + '_' + pair[1] + '/filt_'+pair[0] + '_' + pair[1]) configObj.lowBandIgram = os.path.join(self.workDir,
configObj.highBandIgram = os.path.join(self.workDir, 'Igrams' + highBand + pair[0] + '_' + pair[1] 'Igrams' + lowBand + pair[0] + '_' + pair[1],
+ '/filt_'+pair[0] + '_' + pair[1]) 'filt_' + pair[0] + '_' + pair[1])
configObj.lowBandCor = os.path.join(self.workDir, 'Igrams' + lowBand + pair[0] + '_' + pair[1] configObj.highBandIgram = os.path.join(self.workDir,
+ '/filt_'+pair[0] + '_' + pair[1] + '.cor') 'Igrams' + highBand + pair[0] + '_' + pair[1],
configObj.highBandCor = os.path.join(self.workDir, 'Igrams' + highBand + pair[0] + '_' + pair[1] 'filt_' + pair[0] + '_' + pair[1])
+ '/filt_'+pair[0] + '_' + pair[1] + '.cor')
configObj.lowBandShelve = os.path.join(self.slcDir,pair[0] + lowBand + 'data') configObj.lowBandCor = os.path.join(self.workDir,
configObj.highBandShelve = os.path.join(self.slcDir,pair[0] + highBand + 'data') 'Igrams' + lowBand + pair[0] + '_' + pair[1],
configObj.outDir = os.path.join(self.workDir, 'Ionosphere/'+pair[0]+'_'+pair[1]) 'filt_' + pair[0] + '_' + pair[1] + '.cor')
configObj.estimateDispersive('[Function-1]') configObj.highBandCor = os.path.join(self.workDir,
configObj.finalize() 'Igrams' + highBand + pair[0] + '_' + pair[1],
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n') 'filt_' + pair[0] + '_' + pair[1] + '.cor')
configObj.lowBandShelve = os.path.join(self.slcDir,pair[0] + lowBand + 'data')
configObj.highBandShelve = os.path.join(self.slcDir,pair[0] + highBand + 'data')
configObj.outDir = os.path.join(self.workDir, 'Ionosphere/'+pair[0]+'_'+pair[1])
configObj.estimateDispersive('[Function-1]')
configObj.finalize()
self.runf.write(self.text_cmd+'stripmapWrapper.py -c '+ configName+'\n')
def finalize(self): def finalize(self):
self.runf.close() self.runf.close()
@ -667,7 +695,6 @@ def baselinePair(baselineDir, master, slave,doBaselines=True):
mFrame = mdb['frame'] mFrame = mdb['frame']
sFrame = sdb['frame'] sFrame = sdb['frame']
bObj = Baseline() bObj = Baseline()
bObj.configure() bObj.configure()
bObj.wireInputPort(name='masterFrame', object=mFrame) bObj.wireInputPort(name='masterFrame', object=mFrame)
@ -712,15 +739,15 @@ def selectPairs(inps,stackMaster, slaveDates, acuisitionDates,doBaselines=True):
baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates,doBaselines) baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates,doBaselines)
for slave in slaveDates: for slave in slaveDates:
print (slave,' : ' , baselineDict[slave]) print (slave,' : ' , baselineDict[slave])
numDates = len(acuisitionDates) numDates = len(acuisitionDates)
pairs = [] pairs = []
for i in range(numDates-1): for i in range(numDates-1):
for j in range(i+1,numDates): for j in range(i+1,numDates):
db = np.abs(baselineDict[acuisitionDates[j]] - baselineDict[acuisitionDates[i]]) db = np.abs(baselineDict[acuisitionDates[j]] - baselineDict[acuisitionDates[i]])
dt = np.abs(timeDict[acuisitionDates[j]].days - timeDict[acuisitionDates[i]].days) dt = np.abs(timeDict[acuisitionDates[j]].days - timeDict[acuisitionDates[i]].days)
if (db < inps.dbThr) and (dt < inps.dtThr): if (db < inps.dbThr) and (dt < inps.dtThr):
pairs.append((acuisitionDates[i],acuisitionDates[j])) pairs.append((acuisitionDates[i],acuisitionDates[j]))
plotNetwork(baselineDict, timeDict, pairs,os.path.join(inps.workDir,'pairs.pdf')) plotNetwork(baselineDict, timeDict, pairs,os.path.join(inps.workDir,'pairs.pdf'))
return pairs return pairs
@ -738,9 +765,11 @@ def plotNetwork(baselineDict, timeDict, pairs,save_name='pairs.png'):
ax1.cla() ax1.cla()
for ni in range(len(pairs)): for ni in range(len(pairs)):
# ax1.plot(np.array([timeDict[pairs[ni][0]].days,timeDict[pairs[ni][1]].days]), # ax1.plot(np.array([timeDict[pairs[ni][0]].days,timeDict[pairs[ni][1]].days]),
ax1.plot([datetime.datetime.strptime(pairs[ni][0],datefmt), datetime.datetime.strptime(pairs[ni][1], datefmt)], ax1.plot([datetime.datetime.strptime(pairs[ni][0],datefmt),
np.array([baselineDict[pairs[ni][0]],baselineDict[pairs[ni][1]]]), datetime.datetime.strptime(pairs[ni][1], datefmt)],
'-ko',lw=1, ms=4, alpha=0.7, mfc='r') np.array([baselineDict[pairs[ni][0]],
baselineDict[pairs[ni][1]]]),
'-ko',lw=1, ms=4, alpha=0.7, mfc='r')
@ -778,19 +807,19 @@ def plotNetwork(baselineDict, timeDict, pairs,save_name='pairs.png'):
def writeJobFile(runFile): def writeJobFile(runFile):
jobName = runFile + ".job" jobName = runFile + ".job"
dirName = os.path.dirname(runFile) dirName = os.path.dirname(runFile)
with open(runFile) as ff: with open(runFile) as ff:
nodes = len(ff.readlines()) nodes = len(ff.readlines())
if nodes >maxNodes: if nodes >maxNodes:
nodes = maxNodes nodes = maxNodes
f = open (jobName,'w') f = open (jobName,'w')
f.write('#!/bin/bash '+ '\n') f.write('#!/bin/bash '+ '\n')
f.write('#PBS -N Parallel_GNU'+ '\n') f.write('#PBS -N Parallel_GNU'+ '\n')
f.write('#PBS -l nodes=' + str(nodes) + '\n') f.write('#PBS -l nodes=' + str(nodes) + '\n')
jobTxt='''#PBS -V jobTxt='''#PBS -V
#PBS -l walltime=05:00:00 #PBS -l walltime=05:00:00
#PBS -q default #PBS -q default
@ -815,10 +844,10 @@ echo " "
# #
''' '''
f.write(jobTxt+ '\n') f.write(jobTxt+ '\n')
f.write('parallel --sshloginfile $PBS_NODEFILE -a '+runFile+'\n') f.write('parallel --sshloginfile $PBS_NODEFILE -a '+runFile+'\n')
f.write('') f.write('')
f.close() f.close()
def main(iargs=None): def main(iargs=None):
@ -826,7 +855,7 @@ def main(iargs=None):
if __name__ == "__main__": if __name__ == "__main__":
# Main engine # Main engine
main() main()