From 16b7e10d324093530bb73a6e1cfcc6a65ee96a65 Mon Sep 17 00:00:00 2001 From: Forrest Williams <31411324+4restwilliams@users.noreply.github.com> Date: Fri, 10 Apr 2020 15:57:44 +1200 Subject: [PATCH 1/9] Fix Burst Loading in Estimate Range and Azimuth Misreg (#110) * Fix burst loading in estimateAzimuthMisreg.py Within the for loop that starts at line 82, looping through range(minBurst, maxBurst) misses the burst with the maximum burst number. In cases where only one burst in a swath is used, the script fails at line 90 when .getWidth() is called on an empty xml. This issue can be fixed by adding the line maxBurst = maxBurst + 1 * Fix burst loading in estimateRangeMisreg.py Similar to estimateAzimuthMisreg.py, calling range(minBurst,maxBurst) at line 185 will lead to an empty list and the some bursts not being loaded unless line 181 is changed from maxBurst = maxBurst - 1 to maxBurst = maxBurst +1 --- contrib/stack/topsStack/estimateAzimuthMisreg.py | 7 ++++--- contrib/stack/topsStack/estimateRangeMisreg.py | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/contrib/stack/topsStack/estimateAzimuthMisreg.py b/contrib/stack/topsStack/estimateAzimuthMisreg.py index ecb9009..a0b4b00 100755 --- a/contrib/stack/topsStack/estimateAzimuthMisreg.py +++ b/contrib/stack/topsStack/estimateAzimuthMisreg.py @@ -63,6 +63,7 @@ def main(iargs=None): minBurst = int(os.path.basename(freqFiles[0]).split('.')[0][-2:]) maxBurst = int(os.path.basename(freqFiles[-1]).split('.')[0][-2:]) + maxBurst = maxBurst + 1 #maxBurst = maxBurst - 1 @@ -79,9 +80,9 @@ def main(iargs=None): # val = [] lineCount = 0 for ii in range(minBurst, maxBurst): - intname = os.path.join(esddir, 'overlap_%02d.%dalks_%drlks.int'%(ii+1, alks,rlks)) - freqname = os.path.join(esddir, 'freq_%02d.%dalks_%drlks.bin'%(ii+1,alks,rlks)) - corname = os.path.join(esddir, 'overlap_%02d.%dalks_%drlks.cor'%(ii+1, alks, rlks)) + intname = os.path.join(esddir, 'overlap_%02d.%dalks_%drlks.int'%(ii, alks,rlks)) + freqname = os.path.join(esddir, 'freq_%02d.%dalks_%drlks.bin'%(ii,alks,rlks)) + corname = os.path.join(esddir, 'overlap_%02d.%dalks_%drlks.cor'%(ii, alks, rlks)) img = isceobj.createImage() diff --git a/contrib/stack/topsStack/estimateRangeMisreg.py b/contrib/stack/topsStack/estimateRangeMisreg.py index 842bbcd..b178cc3 100755 --- a/contrib/stack/topsStack/estimateRangeMisreg.py +++ b/contrib/stack/topsStack/estimateRangeMisreg.py @@ -178,7 +178,8 @@ def main(iargs=None): minBurst = max(minSlave, minMaster) maxBurst = min(maxSlave, maxMaster) - maxBurst = maxBurst - 1 ###For overlaps + #maxBurst = maxBurst - 1 ###For overlaps + maxBurst = maxBurst + 1 for pair in [(masterTop,slaveTop), (masterBottom,slaveBottom)]: for ii in range(minBurst,maxBurst): From 434a71322f6c20e621274a473c00412ba8e11f38 Mon Sep 17 00:00:00 2001 From: Lijun Zhu Date: Wed, 20 Nov 2019 13:40:42 -0800 Subject: [PATCH 2/9] PyCuAmpcor: fixed #include gdal headers --- contrib/PyCuAmpcor/src/GDALImage.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/contrib/PyCuAmpcor/src/GDALImage.h b/contrib/PyCuAmpcor/src/GDALImage.h index 3322a2a..69d04ca 100644 --- a/contrib/PyCuAmpcor/src/GDALImage.h +++ b/contrib/PyCuAmpcor/src/GDALImage.h @@ -8,10 +8,9 @@ #ifndef __GDALIMAGE_H #define __GDALIMAGE_H -#include #include -#include -#include +#include +#include class GDALImage{ From 0855bf2640fc9b26b0d0ef1de1fb4df1170323f5 Mon Sep 17 00:00:00 2001 From: Lijun Zhu Date: Thu, 21 Nov 2019 17:23:49 -0800 Subject: [PATCH 3/9] DenseOffsets with PyCuAmpcor: use '.slc.vrt' instead of '.slc' as inputs --- .../isceobj/TopsProc/runDenseOffsets.py | 26 +++--- contrib/stack/topsStack/cuDenseOffsets.py | 80 +++++++++---------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/components/isceobj/TopsProc/runDenseOffsets.py b/components/isceobj/TopsProc/runDenseOffsets.py index f04b571..364cb69 100644 --- a/components/isceobj/TopsProc/runDenseOffsets.py +++ b/components/isceobj/TopsProc/runDenseOffsets.py @@ -50,7 +50,7 @@ def runDenseOffsetsCPU(self): sf += '.full' master = os.path.join(self._insar.mergedDirname, mf) slave = os.path.join(self._insar.mergedDirname, sf) - + ####For this module currently, we need to create an actual file on disk for infile in [master,slave]: if os.path.isfile(infile): @@ -59,7 +59,7 @@ def runDenseOffsetsCPU(self): status = os.system(cmd) if status: raise Exception('{0} could not be executed'.format(status)) - + ### Load the master object @@ -73,7 +73,7 @@ def runDenseOffsetsCPU(self): s.load(slave + '.xml') s.setAccessMode('READ') # s.createImage() - + width = m.getWidth() length = m.getLength() @@ -104,7 +104,7 @@ def runDenseOffsetsCPU(self): objOffset.oversamplingFactor = self.oversample objOffset.setAcrossGrossOffset(self.rgshift) objOffset.setDownGrossOffset(self.azshift) - + objOffset.setFirstPRF(1.0) objOffset.setSecondPRF(1.0) if m.dataType.startswith('C'): @@ -126,7 +126,7 @@ def runDenseOffsetsCPU(self): print('\n======================================') print('Running dense ampcor...') print('======================================\n') - + objOffset.denseampcor(m, s) ### Where the magic happens... ### Store params for later @@ -140,7 +140,7 @@ def runDenseOffsetsGPU(self): ''' Estimate dense offset field between merged master bursts and slave bursts. ''' - + from contrib.PyCuAmpcor import PyCuAmpcor print('\n============================================================') @@ -156,7 +156,7 @@ def runDenseOffsetsGPU(self): slave = os.path.join(self._insar.mergedDirname, sf) ####For this module currently, we need to create an actual file on disk - + for infile in [master,slave]: if os.path.isfile(infile): continue @@ -177,7 +177,7 @@ def runDenseOffsetsGPU(self): s.load(slave + '.xml') s.setAccessMode('READ') # s.createImage() - + width = m.getWidth() length = m.getLength() @@ -186,10 +186,10 @@ def runDenseOffsetsGPU(self): objOffset.deviceID = -1 objOffset.nStreams = 2 objOffset.derampMethod = 0 - objOffset.masterImageName = master + objOffset.masterImageName = master + '.vrt' objOffset.masterImageHeight = length objOffset.masterImageWidth = width - objOffset.slaveImageName = slave + objOffset.slaveImageName = slave + '.vrt' objOffset.slaveImageHeight = length objOffset.slaveImageWidth = width @@ -250,7 +250,7 @@ def runDenseOffsetsGPU(self): print('\n======================================') print('Running dense ampcor...') print('======================================\n') - + objOffset.checkPixelInImageRange() objOffset.runAmpcor() @@ -274,14 +274,14 @@ def runDenseOffsetsGPU(self): outImg.renderHdr() snrImg = isceobj.createImage() - snrImg.setFilename( objOffset.snrImageName.decode('utf8')) + snrImg.setFilename( objOffset.snrImageName.decode('utf-8')) snrImg.setDataType('FLOAT') snrImg.setBands(1) snrImg.setWidth(objOffset.numberWindowAcross) snrImg.setLength(objOffset.numberWindowDown) snrImg.setAccessMode('read') snrImg.renderHdr() - + if __name__ == '__main__' : diff --git a/contrib/stack/topsStack/cuDenseOffsets.py b/contrib/stack/topsStack/cuDenseOffsets.py index d281d9d..354827e 100755 --- a/contrib/stack/topsStack/cuDenseOffsets.py +++ b/contrib/stack/topsStack/cuDenseOffsets.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -# author: Minyan Zhong +# author: Minyan Zhong -import numpy as np +import numpy as np import argparse import os import isce @@ -13,7 +13,7 @@ from isceobj.Location.Offset import OffsetField from iscesys.StdOEL.StdOELPy import create_writer #from mroipac.ampcor.DenseAmpcor import DenseAmpcor -from PyCuAmpcor import PyCuAmpcor +from contrib.PyCuAmpcor import PyCuAmpcor from grossOffsets import grossOffsets #from isceobj.Utils.denseoffsets import denseoffsets @@ -116,17 +116,17 @@ def estimateOffsetField(master, slave, inps=None): length = sar.getLength() objOffset = PyCuAmpcor() - + objOffset.algorithm = 0 objOffset.deviceID = inps.gpuid # -1:let system find the best GPU - objOffset.nStreams = 2 #cudaStreams + objOffset.nStreams = 2 #cudaStreams objOffset.derampMethod = inps.deramp print(objOffset.derampMethod) - objOffset.masterImageName = master + objOffset.masterImageName = master + '.vrt' objOffset.masterImageHeight = length objOffset.masterImageWidth = width - objOffset.slaveImageName = slave + objOffset.slaveImageName = slave + '.vrt' objOffset.slaveImageHeight = length objOffset.slaveImageWidth = width @@ -150,10 +150,10 @@ def estimateOffsetField(master, slave, inps=None): # window size objOffset.windowSizeHeight = inps.winhgt objOffset.windowSizeWidth = inps.winwidth - + print(objOffset.windowSizeHeight) print(objOffset.windowSizeWidth) - + # search range objOffset.halfSearchRangeDown = inps.srchgt objOffset.halfSearchRangeAcross = inps.srcwidth @@ -162,7 +162,7 @@ def estimateOffsetField(master, slave, inps=None): # starting pixel objOffset.masterStartPixelDownStatic = inps.margin objOffset.masterStartPixelAcrossStatic = inps.margin - + # skip size objOffset.skipSampleDown = inps.skiphgt objOffset.skipSampleAcross = inps.skipwidth @@ -171,7 +171,7 @@ def estimateOffsetField(master, slave, inps=None): objOffset.corrSufaceOverSamplingMethod = 0 objOffset.corrSurfaceOverSamplingFactor = inps.oversample #objOffset.rawDataOversamplingFactor = 4 - + # output filenames objOffset.offsetImageName = str(inps.outprefix) + str(inps.outsuffix) + '.bip' objOffset.grossOffsetImageName = str(inps.outprefix) + str(inps.outsuffix) + '_gross.bip' @@ -197,19 +197,19 @@ def estimateOffsetField(master, slave, inps=None): objOffset.numberWindowDownInChunk = 5 objOffset.numberWindowAcrossInChunk = 5 objOffset.mmapSize = 16 - + objOffset.setupParams() - + ## Set Gross Offset ### - + if inps.gross == 0: objOffset.setConstantGrossOffset(0, 0) else: - + print("Setting up grossOffset...") - + objGrossOff = grossOffsets() - + objGrossOff.setXSize(width) objGrossOff.setYize(length) objGrossOff.setMargin(inps.margin) @@ -224,46 +224,46 @@ def estimateOffsetField(master, slave, inps=None): objGrossOff.setLosFile(inps.los) objGrossOff.setMasterFile(inps.masterxml) objGrossOff.setbTemp(inps.bTemp) - - + + grossDown, grossAcross = objGrossOff.runGrossOffsets() - + # change nan to 0 grossDown = np.nan_to_num(grossDown) grossAcross = np.nan_to_num(grossAcross) - + print("Before plotting the gross offsets (min and max): ", np.nanmin(grossDown),np.nanmax(grossDown)) print("Before plotting the gross offsets (min and max): ", np.rint(np.nanmin(grossDown)),np.rint(np.nanmax(grossDown))) - + grossDown = np.int32(np.rint(grossDown.ravel())) grossAcross = np.int32(np.rint(grossAcross.ravel())) - + print(np.amin(grossDown), np.amax(grossDown)) print(np.amin(grossAcross), np.amax(grossAcross)) - + print(grossDown.shape) print(grossDown.shape) - + objOffset.setVaryingGrossOffset(grossDown, grossAcross) #objOffset.setVaryingGrossOffset(np.zeros(shape=grossDown.shape,dtype=np.int32), np.zeros(shape=grossAcross.shape,dtype=np.int32)) - - # check + + # check objOffset.checkPixelInImageRange() - + # Run the code print('Running PyCuAmpcor') - + objOffset.runAmpcor() - + print('Finished') - + sar.finalizeImage() sim.finalizeImage() - + # Finalize the results # offsetfield - + outImg = isceobj.createImage() outImg.setDataType('FLOAT') outImg.setFilename(offsetImageName) @@ -273,8 +273,8 @@ def estimateOffsetField(master, slave, inps=None): outImg.setLength(objOffset.numberWindowDown) outImg.setAccessMode('read') outImg.renderHdr() - - + + # gross offsetfield outImg = isceobj.createImage() outImg.setDataType('FLOAT') @@ -285,7 +285,7 @@ def estimateOffsetField(master, slave, inps=None): outImg.setLength(objOffset.numberWindowDown) outImg.setAccessMode('read') outImg.renderHdr() - + # snr snrImg = isceobj.createImage() snrImg.setFilename(snrImageName) @@ -297,17 +297,17 @@ def estimateOffsetField(master, slave, inps=None): snrImg.renderHdr() return objOffset - -def main(iargs=None): + +def main(iargs=None): inps = cmdLineParse(iargs) outDir = os.path.dirname(inps.outprefix) print(inps.outprefix) if not os.path.exists(outDir): os.makedirs(outDir) - + objOffset = estimateOffsetField(inps.master, inps.slave, inps) if __name__ == '__main__': - + main() From 62a10d4c0d654bbcc366804304dcf367487691ad Mon Sep 17 00:00:00 2001 From: Lijun Zhu Date: Fri, 22 Nov 2019 09:53:26 -0800 Subject: [PATCH 4/9] topsStack/cuDenseOffsets: call (included not standalone) PyCuAmpcor properly --- contrib/stack/topsStack/cuDenseOffsets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/stack/topsStack/cuDenseOffsets.py b/contrib/stack/topsStack/cuDenseOffsets.py index 354827e..2220ea5 100755 --- a/contrib/stack/topsStack/cuDenseOffsets.py +++ b/contrib/stack/topsStack/cuDenseOffsets.py @@ -115,7 +115,7 @@ def estimateOffsetField(master, slave, inps=None): width = sar.getWidth() length = sar.getLength() - objOffset = PyCuAmpcor() + objOffset = PyCuAmpcor.PyCuAmpcor() objOffset.algorithm = 0 objOffset.deviceID = inps.gpuid # -1:let system find the best GPU From 5977d7b0ddf7e2cb333e518cff25e5ce941b0e73 Mon Sep 17 00:00:00 2001 From: Lijun Zhu Date: Tue, 17 Dec 2019 15:40:03 -0800 Subject: [PATCH 5/9] disable GPUampcor (not used) to allow CUDA >=10.0 --- components/zerodop/SConscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/zerodop/SConscript b/components/zerodop/SConscript index cfb82bd..23bebe3 100644 --- a/components/zerodop/SConscript +++ b/components/zerodop/SConscript @@ -37,6 +37,6 @@ if envzerodop['CYTHON3'] and envzerodop['GPU_ACC_ENABLED']: SConscript('GPUtopozero/SConscript') SConscript('GPUgeo2rdr/SConscript') SConscript('GPUresampslc/SConscript') - SConscript('GPUampcor/SConscript') +#SConscript('GPUampcor/SConscript') #SConscript('unw2hgt/SConscript') #SConscript('bistaticunw2hgt/SConscript') From 4cc13950a83a3c7d93643483b88c1439d6f3a9d6 Mon Sep 17 00:00:00 2001 From: Lijun Zhu Date: Fri, 7 Feb 2020 15:07:46 -0800 Subject: [PATCH 6/9] PyCuAmpcor: add gdal lib to link --- contrib/PyCuAmpcor/src/SConscript | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/PyCuAmpcor/src/SConscript b/contrib/PyCuAmpcor/src/SConscript index 5de06c7..5c18613 100644 --- a/contrib/PyCuAmpcor/src/SConscript +++ b/contrib/PyCuAmpcor/src/SConscript @@ -39,6 +39,8 @@ def cythonPseudoBuilder(env, src, bld, inst): # Add the Numpy headers to the include path env.Append(CPPFLAGS = ['-I'+np_header_path]) + libList = ['gdal'] + env.PrependUnique(LIBS=libList) listFiles.append('PyCuAmpcor.so') env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = True lib = env.LoadableModule(target='PyCuAmpcor.abi3.so', source=listFiles, CPPDEFINES='GPU_ACC_ENABLED') From c2a4a4a08e4d853b8c963fbf6e9446573bca9b30 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Mon, 13 Apr 2020 12:11:04 -0700 Subject: [PATCH 7/9] add back from scipy.interpolate import interp1d add back the following imports: 1709a1710,1711 > from scipy import interpolate > from scipy.interpolate import interp1d 2119a2122,2123 > from scipy import interpolate > from scipy.interpolate import interp1d --- components/isceobj/TopsProc/runIon.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/isceobj/TopsProc/runIon.py b/components/isceobj/TopsProc/runIon.py index de9e2a1..bedfbaa 100644 --- a/components/isceobj/TopsProc/runIon.py +++ b/components/isceobj/TopsProc/runIon.py @@ -1707,6 +1707,8 @@ def computeDopplerOffset(burst, firstline, lastline, firstcolumn, lastcolumn, nr def grd2ion(self, ionParam): + from scipy import interpolate + from scipy.interpolate import interp1d print('resampling ionosphere from ground to ionospheric layer') #get files @@ -2117,6 +2119,8 @@ def ionosphere_shift(self, ionParam): def ion2grd(self, ionParam): + from scipy import interpolate + from scipy.interpolate import interp1d ################################################# #SET PARAMETERS HERE From ebe27ec44cab567590f6d7a67cb5904a8a87cb5b Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Mon, 13 Apr 2020 12:34:51 -0700 Subject: [PATCH 8/9] remove 'from scipy.interpolate import interp1d' remove the following from routines where it is not needed: > from scipy import interpolate > from scipy.interpolate import interp1d --- components/isceobj/TopsProc/runIon.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/components/isceobj/TopsProc/runIon.py b/components/isceobj/TopsProc/runIon.py index bedfbaa..e2258ae 100644 --- a/components/isceobj/TopsProc/runIon.py +++ b/components/isceobj/TopsProc/runIon.py @@ -1680,8 +1680,6 @@ def computeDopplerOffset(burst, firstline, lastline, firstcolumn, lastcolumn, nr output: first lines > 0, last lines < 0 ''' - from scipy import interpolate - from scipy.interpolate import interp1d Vs = np.linalg.norm(burst.orbit.interpolateOrbit(burst.sensingMid, method='hermite').getVelocity()) Ks = 2 * Vs * burst.azimuthSteeringRate / burst.radarWavelength @@ -1896,8 +1894,6 @@ def filt_gaussian(self, ionParam): currently not implemented. a less accurate method is to use ionsphere without any projection ''' - from scipy import interpolate - from scipy.interpolate import interp1d ################################################# #SET PARAMETERS HERE From 23f2ffaa1eeac93bb039f7259817810c4c3c0b12 Mon Sep 17 00:00:00 2001 From: Ryan Burns <47790121+rtburns-jpl@users.noreply.github.com> Date: Mon, 13 Apr 2020 12:40:32 -0700 Subject: [PATCH 9/9] Use exist_ok argument to makedirs when appropriate (#112) @falkamelung noted a race condition in #106 due to non-atomic directory checking followed by os.makedirs. This pattern exists in many places in the codebase so I went ahead and replaced the rest of them. The new exist_ok usage should be terser and more idiomatic. --- SConstruct | 3 +- .../isceobj/Alos2Proc/Alos2ProcPublic.py | 6 ++-- components/isceobj/Alos2Proc/runCoherence.py | 3 +- .../isceobj/Alos2Proc/runDenseOffset.py | 3 +- .../isceobj/Alos2Proc/runDiffInterferogram.py | 3 +- .../isceobj/Alos2Proc/runDownloadDem.py | 9 ++---- components/isceobj/Alos2Proc/runFilt.py | 3 +- components/isceobj/Alos2Proc/runFiltOffset.py | 3 +- .../isceobj/Alos2Proc/runFrameMosaic.py | 6 ++-- .../isceobj/Alos2Proc/runFrameOffset.py | 3 +- components/isceobj/Alos2Proc/runGeo2Rdr.py | 3 +- components/isceobj/Alos2Proc/runGeocode.py | 3 +- .../isceobj/Alos2Proc/runGeocodeOffset.py | 3 +- components/isceobj/Alos2Proc/runIonFilt.py | 3 +- components/isceobj/Alos2Proc/runIonSubband.py | 18 ++++------- components/isceobj/Alos2Proc/runIonUwrap.py | 3 +- components/isceobj/Alos2Proc/runLook.py | 3 +- .../isceobj/Alos2Proc/runPreprocessor.py | 6 ++-- components/isceobj/Alos2Proc/runRdr2Geo.py | 3 +- .../isceobj/Alos2Proc/runRdrDemOffset.py | 6 ++-- .../isceobj/Alos2Proc/runRectRangeOffset.py | 3 +- components/isceobj/Alos2Proc/runSlcMatch.py | 3 +- components/isceobj/Alos2Proc/runSlcMosaic.py | 3 +- .../isceobj/Alos2Proc/runSwathMosaic.py | 3 +- .../isceobj/Alos2Proc/runSwathOffset.py | 3 +- .../isceobj/Alos2Proc/runUnwrapSnaphu.py | 3 +- .../isceobj/Alos2burstProc/runCoregSd.py | 3 +- .../isceobj/Alos2burstProc/runExtractBurst.py | 3 +- .../isceobj/Alos2burstProc/runFiltSd.py | 3 +- .../isceobj/Alos2burstProc/runFrameMosaic.py | 6 ++-- .../isceobj/Alos2burstProc/runFrameOffset.py | 3 +- .../isceobj/Alos2burstProc/runGeocodeSd.py | 3 +- .../isceobj/Alos2burstProc/runIonSubband.py | 24 +++++---------- .../isceobj/Alos2burstProc/runLookSd.py | 3 +- .../isceobj/Alos2burstProc/runPreprocessor.py | 6 ++-- .../isceobj/Alos2burstProc/runSwathMosaic.py | 6 ++-- .../isceobj/Alos2burstProc/runSwathOffset.py | 3 +- .../Alos2burstProc/runUnwrapSnaphuSd.py | 3 +- components/isceobj/Catalog/Catalog.py | 7 +---- components/isceobj/RtcProc/runPreprocessor.py | 4 +-- components/isceobj/RtcProc/runTopo.py | 3 +- components/isceobj/Sensor/TOPS/Sentinel1.py | 9 +----- components/isceobj/StripmapProc/runCrop.py | 7 +---- .../isceobj/StripmapProc/runDenseOffsets.py | 5 +--- .../isceobj/StripmapProc/runDispersive.py | 5 +--- components/isceobj/StripmapProc/runGeo2rdr.py | 5 +--- .../isceobj/StripmapProc/runInterferogram.py | 5 +--- .../isceobj/StripmapProc/runPreprocessor.py | 14 ++++----- components/isceobj/StripmapProc/runROI.py | 12 ++------ .../StripmapProc/runRefineSlaveTiming.py | 6 +--- .../isceobj/StripmapProc/runResampleSlc.py | 5 +--- .../StripmapProc/runResampleSubbandSlc.py | 5 +--- .../isceobj/StripmapProc/runSplitSpectrum.py | 11 ++----- components/isceobj/StripmapProc/runTopo.py | 5 +--- components/isceobj/TopsProc/runBurstIfg.py | 3 +- .../isceobj/TopsProc/runCoarseOffsets.py | 3 +- .../isceobj/TopsProc/runCoarseResamp.py | 3 +- components/isceobj/TopsProc/runFineOffsets.py | 3 +- components/isceobj/TopsProc/runFineResamp.py | 3 +- components/isceobj/TopsProc/runIon.py | 30 +++++++------------ components/isceobj/TopsProc/runMergeBursts.py | 3 +- components/isceobj/TopsProc/runMergeSLCs.py | 3 +- components/isceobj/TopsProc/runOverlapIfg.py | 3 +- components/isceobj/TopsProc/runPrepESD.py | 3 +- .../isceobj/TopsProc/runSubsetOverlaps.py | 14 ++------- components/isceobj/TopsProc/runTopo.py | 17 ++--------- .../iscesys/DataRetriever/DataRetriever.py | 6 +--- configuration/buildHelper.py | 6 +--- contrib/demUtils/demstitcher/DemStitcher.py | 18 ++--------- contrib/demUtils/demstitcher/DemStitcherV3.py | 8 ++--- contrib/demUtils/swbdstitcher/SWBDStitcher.py | 14 ++------- contrib/demUtils/watermask/WaterMask.py | 20 +++---------- contrib/stack/stripmapStack/MaskAndFilter.py | 3 +- contrib/stack/stripmapStack/Stack.py | 9 ++---- contrib/stack/stripmapStack/baselineGrid.py | 3 +- contrib/stack/stripmapStack/cropFrame.py | 7 +---- contrib/stack/stripmapStack/crossmul.py | 3 +- contrib/stack/stripmapStack/denseOffsets.py | 5 ++-- contrib/stack/stripmapStack/estimateIono.py | 14 +++------ contrib/stack/stripmapStack/geo2rdr.py | 3 +- contrib/stack/stripmapStack/invertMisreg.py | 6 ++-- contrib/stack/stripmapStack/invertOffsets.py | 6 ++-- .../stack/stripmapStack/masterStackCopy.py | 10 ++----- contrib/stack/stripmapStack/prepRawALOS.py | 14 ++++----- contrib/stack/stripmapStack/prepRawCSK.py | 21 +++++-------- contrib/stack/stripmapStack/prepSlcALOS2.py | 14 ++++----- contrib/stack/stripmapStack/prepSlcRSAT2.py | 9 ++---- .../stripmapStack/prepareUAVSAR_coregStack.py | 3 +- .../stack/stripmapStack/refineSlaveTiming.py | 9 ++---- contrib/stack/stripmapStack/resampleSlc.py | 13 +++----- .../stripmapStack/resampleSlc_subBand.py | 13 ++++---- contrib/stack/stripmapStack/rubberSheeting.py | 10 +++---- contrib/stack/stripmapStack/splitSpectrum.py | 7 ++--- .../stripmapStack/splitSpectrum_multiple.py | 8 ++--- contrib/stack/stripmapStack/stackStripMap.py | 6 ++-- contrib/stack/stripmapStack/topo.py | 15 +++------- contrib/stack/stripmapStack/uncompressFile.py | 3 +- .../stripmapStack/unpackFrame_ALOS_raw.py | 3 +- contrib/stack/stripmapStack/unwrap.py | 3 +- contrib/stack/topsStack/MaskAndFilter.py | 10 +++---- contrib/stack/topsStack/Stack.py | 12 +++----- contrib/stack/topsStack/baselineGrid.py | 3 +- contrib/stack/topsStack/computeBaseline.py | 3 +- contrib/stack/topsStack/cuDenseOffsets.py | 3 +- contrib/stack/topsStack/denseOffsets.py | 5 ++-- .../stack/topsStack/estimateAzimuthMisreg.py | 3 +- .../stack/topsStack/estimateRangeMisreg.py | 3 +- .../topsStack/extractCommonValidRegion.py | 3 +- contrib/stack/topsStack/generateIgram.py | 9 +++--- contrib/stack/topsStack/geo2rdr.py | 3 +- contrib/stack/topsStack/invertMisreg.py | 3 +- contrib/stack/topsStack/mergeBursts.py | 2 +- contrib/stack/topsStack/overlap_withDEM.py | 3 +- contrib/stack/topsStack/resamp_withCarrier.py | 3 +- contrib/stack/topsStack/topo.py | 6 +--- 115 files changed, 217 insertions(+), 522 deletions(-) diff --git a/SConstruct b/SConstruct index a979b3c..973f7f2 100644 --- a/SConstruct +++ b/SConstruct @@ -216,11 +216,10 @@ else: ### End of GPU branch-specific modifications +os.makedirs(inst, exist_ok=True) env.Install(inst, '__init__.py') env.Install(inst, 'release_history.py') -if not os.path.exists(inst): - os.makedirs(inst) v = 0 if isrerun == 'no': diff --git a/components/isceobj/Alos2Proc/Alos2ProcPublic.py b/components/isceobj/Alos2Proc/Alos2ProcPublic.py index 56780cf..d099fd1 100644 --- a/components/isceobj/Alos2Proc/Alos2ProcPublic.py +++ b/components/isceobj/Alos2Proc/Alos2ProcPublic.py @@ -985,10 +985,8 @@ def resampleBursts(masterSwath, slaveSwath, import numpy.matlib from contrib.alos2proc.alos2proc import resamp - if not os.path.exists(slaveBurstResampledDir): - os.makedirs(slaveBurstResampledDir) - if not os.path.exists(interferogramDir): - os.makedirs(interferogramDir) + os.makedirs(slaveBurstResampledDir, exist_ok=True) + os.makedirs(interferogramDir, exist_ok=True) #get burst file names masterBurstSlc = [masterBurstPrefix+'_%02d.slc'%(i+1) for i in range(masterSwath.numberOfBursts)] diff --git a/components/isceobj/Alos2Proc/runCoherence.py b/components/isceobj/Alos2Proc/runCoherence.py index 22048ef..6d8a645 100644 --- a/components/isceobj/Alos2Proc/runCoherence.py +++ b/components/isceobj/Alos2Proc/runCoherence.py @@ -22,8 +22,7 @@ def runCoherence(self): #slaveTrack = self._insar.loadTrack(master=False) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) numberRangeLooks = self._insar.numberRangeLooks1 * self._insar.numberRangeLooks2 diff --git a/components/isceobj/Alos2Proc/runDenseOffset.py b/components/isceobj/Alos2Proc/runDenseOffset.py index d878034..f7fc2c0 100644 --- a/components/isceobj/Alos2Proc/runDenseOffset.py +++ b/components/isceobj/Alos2Proc/runDenseOffset.py @@ -24,8 +24,7 @@ def runDenseOffset(self): self.updateParamemetersFromUser() denseOffsetDir = 'dense_offset' - if not os.path.exists(denseOffsetDir): - os.makedirs(denseOffsetDir) + os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) #masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) diff --git a/components/isceobj/Alos2Proc/runDiffInterferogram.py b/components/isceobj/Alos2Proc/runDiffInterferogram.py index c8cf103..c027022 100644 --- a/components/isceobj/Alos2Proc/runDiffInterferogram.py +++ b/components/isceobj/Alos2Proc/runDiffInterferogram.py @@ -21,8 +21,7 @@ def runDiffInterferogram(self): masterTrack = self._insar.loadTrack(master=True) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2Proc/runDownloadDem.py b/components/isceobj/Alos2Proc/runDownloadDem.py index d2fb367..36b9ae6 100644 --- a/components/isceobj/Alos2Proc/runDownloadDem.py +++ b/components/isceobj/Alos2Proc/runDownloadDem.py @@ -31,8 +31,7 @@ def runDownloadDem(self): #get 1 arcsecond dem for coregistration if self.dem == None: demDir = 'dem_1_arcsec' - if not os.path.exists(demDir): - os.makedirs(demDir) + os.makedirs(demDir, exist_ok=True) os.chdir(demDir) downloadUrl = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11' @@ -52,8 +51,7 @@ def runDownloadDem(self): #get 3 arcsecond dem for geocoding if self.demGeo == None: demGeoDir = 'dem_3_arcsec' - if not os.path.exists(demGeoDir): - os.makedirs(demGeoDir) + os.makedirs(demGeoDir, exist_ok=True) os.chdir(demGeoDir) downloadUrl = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL3.003/2000.02.11' @@ -73,8 +71,7 @@ def runDownloadDem(self): #get water body for masking interferogram if self.wbd == None: wbdDir = 'wbd_1_arcsec' - if not os.path.exists(wbdDir): - os.makedirs(wbdDir) + os.makedirs(wbdDir, exist_ok=True) os.chdir(wbdDir) #cmd = 'wbd.py {}'.format(bboxStr) diff --git a/components/isceobj/Alos2Proc/runFilt.py b/components/isceobj/Alos2Proc/runFilt.py index f25f7ba..49a71ec 100644 --- a/components/isceobj/Alos2Proc/runFilt.py +++ b/components/isceobj/Alos2Proc/runFilt.py @@ -28,8 +28,7 @@ def runFilt(self): #slaveTrack = self._insar.loadTrack(master=False) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2Proc/runFiltOffset.py b/components/isceobj/Alos2Proc/runFiltOffset.py index 41ce541..876024c 100644 --- a/components/isceobj/Alos2Proc/runFiltOffset.py +++ b/components/isceobj/Alos2Proc/runFiltOffset.py @@ -25,8 +25,7 @@ def runFiltOffset(self): self.updateParamemetersFromUser() denseOffsetDir = 'dense_offset' - if not os.path.exists(denseOffsetDir): - os.makedirs(denseOffsetDir) + os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) #masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) diff --git a/components/isceobj/Alos2Proc/runFrameMosaic.py b/components/isceobj/Alos2Proc/runFrameMosaic.py index 4fa9871..91a9c00 100644 --- a/components/isceobj/Alos2Proc/runFrameMosaic.py +++ b/components/isceobj/Alos2Proc/runFrameMosaic.py @@ -24,8 +24,7 @@ def runFrameMosaic(self): slaveTrack = self._insar.loadTrack(master=False) mosaicDir = 'insar' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) numberOfFrames = len(masterTrack.frames) @@ -334,8 +333,7 @@ def frameMosaic(track, inputFiles, outputfile, rangeOffsets, azimuthOffsets, num if DEBUG: #create a dir and work in this dir diffDir = 'frame_mosaic' - if not os.path.exists(diffDir): - os.makedirs(diffDir) + os.makedirs(diffDir, exist_ok=True) os.chdir(diffDir) #dump phase difference diff --git a/components/isceobj/Alos2Proc/runFrameOffset.py b/components/isceobj/Alos2Proc/runFrameOffset.py index 89305d8..02f84fc 100644 --- a/components/isceobj/Alos2Proc/runFrameOffset.py +++ b/components/isceobj/Alos2Proc/runFrameOffset.py @@ -20,8 +20,7 @@ def runFrameOffset(self): slaveTrack = self._insar.loadTrack(master=False) mosaicDir = 'insar' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if len(masterTrack.frames) > 1: diff --git a/components/isceobj/Alos2Proc/runGeo2Rdr.py b/components/isceobj/Alos2Proc/runGeo2Rdr.py index 2197261..129cd59 100644 --- a/components/isceobj/Alos2Proc/runGeo2Rdr.py +++ b/components/isceobj/Alos2Proc/runGeo2Rdr.py @@ -19,8 +19,7 @@ def runGeo2Rdr(self): slaveTrack = self._insar.loadTrack(master=False) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2Proc/runGeocode.py b/components/isceobj/Alos2Proc/runGeocode.py index bf1e582..9dfbbbf 100644 --- a/components/isceobj/Alos2Proc/runGeocode.py +++ b/components/isceobj/Alos2Proc/runGeocode.py @@ -24,8 +24,7 @@ def runGeocode(self): demFile = os.path.abspath(self._insar.demGeo) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) #compute bounding box for geocoding diff --git a/components/isceobj/Alos2Proc/runGeocodeOffset.py b/components/isceobj/Alos2Proc/runGeocodeOffset.py index 692d5a0..6a1ffee 100644 --- a/components/isceobj/Alos2Proc/runGeocodeOffset.py +++ b/components/isceobj/Alos2Proc/runGeocodeOffset.py @@ -35,8 +35,7 @@ def runGeocodeOffset(self): demFile = os.path.abspath(self._insar.demGeo) denseOffsetDir = 'dense_offset' - if not os.path.exists(denseOffsetDir): - os.makedirs(denseOffsetDir) + os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) diff --git a/components/isceobj/Alos2Proc/runIonFilt.py b/components/isceobj/Alos2Proc/runIonFilt.py index 50ac3f6..330faf2 100644 --- a/components/isceobj/Alos2Proc/runIonFilt.py +++ b/components/isceobj/Alos2Proc/runIonFilt.py @@ -31,8 +31,7 @@ def runIonFilt(self): subbandPrefix = ['lower', 'upper'] ionCalDir = os.path.join(ionDir['ion'], ionDir['ionCal']) - if not os.path.exists(ionCalDir): - os.makedirs(ionCalDir) + os.makedirs(ionCalDir, exist_ok=True) os.chdir(ionCalDir) diff --git a/components/isceobj/Alos2Proc/runIonSubband.py b/components/isceobj/Alos2Proc/runIonSubband.py index 2c71183..ef95806 100644 --- a/components/isceobj/Alos2Proc/runIonSubband.py +++ b/components/isceobj/Alos2Proc/runIonSubband.py @@ -58,8 +58,7 @@ def runIonSubband(self): ############################################################ #create and enter 'ion' directory #after finishing each step, we are in this directory - if not os.path.exists(ionDir['ion']): - os.makedirs(ionDir['ion']) + os.makedirs(ionDir['ion'], exist_ok=True) os.chdir(ionDir['ion']) #create insar processing directories @@ -70,12 +69,10 @@ def runIonSubband(self): for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) fullDir = os.path.join(subbandDir, frameDir, swathDir) - if not os.path.exists(fullDir): - os.makedirs(fullDir) + os.makedirs(fullDir, exist_ok=True) #create ionospheric phase directory - if not os.path.exists(ionDir['ionCal']): - os.makedirs(ionDir['ionCal']) + os.makedirs(ionDir['ionCal'], exist_ok=True) ############################################################ @@ -223,8 +220,7 @@ def runIonSubband(self): os.chdir(frameDir) mosaicDir = ionDir['swathMosaic'] - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if not ( @@ -316,8 +312,7 @@ def runIonSubband(self): os.chdir(ionDir['subband'][k]) mosaicDir = ionDir['insar'] - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) numberOfFrames = len(masterTrack.frames) @@ -406,8 +401,7 @@ def runIonSubband(self): os.chdir(ionDir['subband'][k]) insarDir = ionDir['insar'] - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) rangePixelSize = self._insar.numberRangeLooks1 * masterTrack.rangePixelSize diff --git a/components/isceobj/Alos2Proc/runIonUwrap.py b/components/isceobj/Alos2Proc/runIonUwrap.py index 683422d..f9a35af 100644 --- a/components/isceobj/Alos2Proc/runIonUwrap.py +++ b/components/isceobj/Alos2Proc/runIonUwrap.py @@ -31,8 +31,7 @@ def runIonUwrap(self): subbandPrefix = ['lower', 'upper'] ionCalDir = os.path.join(ionDir['ion'], ionDir['ionCal']) - if not os.path.exists(ionCalDir): - os.makedirs(ionCalDir) + os.makedirs(ionCalDir, exist_ok=True) os.chdir(ionCalDir) diff --git a/components/isceobj/Alos2Proc/runLook.py b/components/isceobj/Alos2Proc/runLook.py index fd559e5..70c4aa0 100644 --- a/components/isceobj/Alos2Proc/runLook.py +++ b/components/isceobj/Alos2Proc/runLook.py @@ -25,8 +25,7 @@ def runLook(self): wbdFile = os.path.abspath(self._insar.wbd) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2Proc/runPreprocessor.py b/components/isceobj/Alos2Proc/runPreprocessor.py index 8652a01..2f46b10 100644 --- a/components/isceobj/Alos2Proc/runPreprocessor.py +++ b/components/isceobj/Alos2Proc/runPreprocessor.py @@ -270,8 +270,7 @@ def runPreprocessor(self): for i, (masterFrame, slaveFrame) in enumerate(zip(self._insar.masterFrames, self._insar.slaveFrames)): #frame number starts with 1 frameDir = 'f{}_{}'.format(i+1, masterFrame) - if not os.path.exists(frameDir): - os.makedirs(frameDir) + os.makedirs(frameDir, exist_ok=True) os.chdir(frameDir) #attach a frame to master and slave @@ -287,8 +286,7 @@ def runPreprocessor(self): print('processing frame {} swath {}'.format(masterFrame, j)) swathDir = 's{}'.format(j) - if not os.path.exists(swathDir): - os.makedirs(swathDir) + os.makedirs(swathDir, exist_ok=True) os.chdir(swathDir) #attach a swath to master and slave diff --git a/components/isceobj/Alos2Proc/runRdr2Geo.py b/components/isceobj/Alos2Proc/runRdr2Geo.py index 73a4a70..60cf6e9 100644 --- a/components/isceobj/Alos2Proc/runRdr2Geo.py +++ b/components/isceobj/Alos2Proc/runRdr2Geo.py @@ -22,8 +22,7 @@ def runRdr2Geo(self): wbdFile = os.path.abspath(self._insar.wbd) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2Proc/runRdrDemOffset.py b/components/isceobj/Alos2Proc/runRdrDemOffset.py index 43630c9..c8dd292 100644 --- a/components/isceobj/Alos2Proc/runRdrDemOffset.py +++ b/components/isceobj/Alos2Proc/runRdrDemOffset.py @@ -27,13 +27,11 @@ def runRdrDemOffset(self): demFile = os.path.abspath(self._insar.dem) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) rdrDemDir = 'rdr_dem_offset' - if not os.path.exists(rdrDemDir): - os.makedirs(rdrDemDir) + os.makedirs(rdrDemDir, exist_ok=True) os.chdir(rdrDemDir) ################################################################################################## diff --git a/components/isceobj/Alos2Proc/runRectRangeOffset.py b/components/isceobj/Alos2Proc/runRectRangeOffset.py index fea2b81..1c4e5c0 100644 --- a/components/isceobj/Alos2Proc/runRectRangeOffset.py +++ b/components/isceobj/Alos2Proc/runRectRangeOffset.py @@ -22,8 +22,7 @@ def runRectRangeOffset(self): slaveTrack = self._insar.loadTrack(master=False) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2Proc/runSlcMatch.py b/components/isceobj/Alos2Proc/runSlcMatch.py index ab3ed0f..3c72fba 100644 --- a/components/isceobj/Alos2Proc/runSlcMatch.py +++ b/components/isceobj/Alos2Proc/runSlcMatch.py @@ -37,8 +37,7 @@ def runSlcMatch(self): wbdFile = os.path.abspath(self._insar.wbd) denseOffsetDir = 'dense_offset' - if not os.path.exists(denseOffsetDir): - os.makedirs(denseOffsetDir) + os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) masterTrack = self._insar.loadProduct(self._insar.masterTrackParameter) diff --git a/components/isceobj/Alos2Proc/runSlcMosaic.py b/components/isceobj/Alos2Proc/runSlcMosaic.py index c3d9e57..c14f4f7 100644 --- a/components/isceobj/Alos2Proc/runSlcMosaic.py +++ b/components/isceobj/Alos2Proc/runSlcMosaic.py @@ -30,8 +30,7 @@ def runSlcMosaic(self): slaveTrack = self._insar.loadTrack(master=False) denseOffsetDir = 'dense_offset' - if not os.path.exists(denseOffsetDir): - os.makedirs(denseOffsetDir) + os.makedirs(denseOffsetDir, exist_ok=True) os.chdir(denseOffsetDir) diff --git a/components/isceobj/Alos2Proc/runSwathMosaic.py b/components/isceobj/Alos2Proc/runSwathMosaic.py index 1af53f7..8dad041 100644 --- a/components/isceobj/Alos2Proc/runSwathMosaic.py +++ b/components/isceobj/Alos2Proc/runSwathMosaic.py @@ -28,8 +28,7 @@ def runSwathMosaic(self): os.chdir(frameDir) mosaicDir = 'mosaic' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if not ( diff --git a/components/isceobj/Alos2Proc/runSwathOffset.py b/components/isceobj/Alos2Proc/runSwathOffset.py index f66b5ed..ece6b1b 100644 --- a/components/isceobj/Alos2Proc/runSwathOffset.py +++ b/components/isceobj/Alos2Proc/runSwathOffset.py @@ -29,8 +29,7 @@ def runSwathOffset(self): os.chdir(frameDir) mosaicDir = 'mosaic' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if not ( diff --git a/components/isceobj/Alos2Proc/runUnwrapSnaphu.py b/components/isceobj/Alos2Proc/runUnwrapSnaphu.py index fb16b79..c1025ca 100644 --- a/components/isceobj/Alos2Proc/runUnwrapSnaphu.py +++ b/components/isceobj/Alos2Proc/runUnwrapSnaphu.py @@ -26,8 +26,7 @@ def runUnwrapSnaphu(self): #slaveTrack = self._insar.loadTrack(master=False) insarDir = 'insar' - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) diff --git a/components/isceobj/Alos2burstProc/runCoregSd.py b/components/isceobj/Alos2burstProc/runCoregSd.py index b0e9911..61c2f85 100644 --- a/components/isceobj/Alos2burstProc/runCoregSd.py +++ b/components/isceobj/Alos2burstProc/runCoregSd.py @@ -44,8 +44,7 @@ def runCoregSd(self): # spectral diversity or mai ################################################## sdDir = 'spectral_diversity' - if not os.path.exists(sdDir): - os.makedirs(sdDir) + os.makedirs(sdDir, exist_ok=True) os.chdir(sdDir) interferogramDir = 'burst_interf_2_coreg_cc' diff --git a/components/isceobj/Alos2burstProc/runExtractBurst.py b/components/isceobj/Alos2burstProc/runExtractBurst.py index 1ec8de3..646b427 100644 --- a/components/isceobj/Alos2burstProc/runExtractBurst.py +++ b/components/isceobj/Alos2burstProc/runExtractBurst.py @@ -66,8 +66,7 @@ def runExtractBurst(self): ######################################################################################### #extract burst - if not os.path.exists(extractDir): - os.makedirs(extractDir) + os.makedirs(extractDir, exist_ok=True) os.chdir(extractDir) if os.path.isfile(os.path.join('../', fullApertureSlc)): os.rename(os.path.join('../', fullApertureSlc), fullApertureSlc) diff --git a/components/isceobj/Alos2burstProc/runFiltSd.py b/components/isceobj/Alos2burstProc/runFiltSd.py index e19ae36..0d7de2f 100644 --- a/components/isceobj/Alos2burstProc/runFiltSd.py +++ b/components/isceobj/Alos2burstProc/runFiltSd.py @@ -29,8 +29,7 @@ def runFiltSd(self): #slaveTrack = self._insar.loadTrack(master=False) sdDir = 'sd' - if not os.path.exists(sdDir): - os.makedirs(sdDir) + os.makedirs(sdDir, exist_ok=True) os.chdir(sdDir) sd = isceobj.createImage() diff --git a/components/isceobj/Alos2burstProc/runFrameMosaic.py b/components/isceobj/Alos2burstProc/runFrameMosaic.py index d3cf9fb..490a8cc 100644 --- a/components/isceobj/Alos2burstProc/runFrameMosaic.py +++ b/components/isceobj/Alos2burstProc/runFrameMosaic.py @@ -23,8 +23,7 @@ def runFrameMosaic(self): slaveTrack = self._insar.loadTrack(master=False) mosaicDir = 'insar' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) numberOfFrames = len(masterTrack.frames) @@ -125,8 +124,7 @@ def runFrameMosaic(self): #mosaic spectral diversity inteferograms mosaicDir = 'sd' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) numberOfFrames = len(masterTrack.frames) diff --git a/components/isceobj/Alos2burstProc/runFrameOffset.py b/components/isceobj/Alos2burstProc/runFrameOffset.py index 983a3a2..700d8bf 100644 --- a/components/isceobj/Alos2burstProc/runFrameOffset.py +++ b/components/isceobj/Alos2burstProc/runFrameOffset.py @@ -21,8 +21,7 @@ def runFrameOffset(self): slaveTrack = self._insar.loadTrack(master=False) mosaicDir = 'insar' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if len(masterTrack.frames) > 1: diff --git a/components/isceobj/Alos2burstProc/runGeocodeSd.py b/components/isceobj/Alos2burstProc/runGeocodeSd.py index f8ef935..e8634e3 100644 --- a/components/isceobj/Alos2burstProc/runGeocodeSd.py +++ b/components/isceobj/Alos2burstProc/runGeocodeSd.py @@ -25,8 +25,7 @@ def runGeocodeSd(self): demFile = os.path.abspath(self._insar.demGeo) sdDir = 'sd' - if not os.path.exists(sdDir): - os.makedirs(sdDir) + os.makedirs(sdDir, exist_ok=True) os.chdir(sdDir) if self.geocodeListSd == None: diff --git a/components/isceobj/Alos2burstProc/runIonSubband.py b/components/isceobj/Alos2burstProc/runIonSubband.py index 8cdf5aa..131b6f3 100644 --- a/components/isceobj/Alos2burstProc/runIonSubband.py +++ b/components/isceobj/Alos2burstProc/runIonSubband.py @@ -59,8 +59,7 @@ def runIonSubband(self): ############################################################ #create and enter 'ion' directory #after finishing each step, we are in this directory - if not os.path.exists(ionDir['ion']): - os.makedirs(ionDir['ion']) + os.makedirs(ionDir['ion'], exist_ok=True) os.chdir(ionDir['ion']) #create insar processing directories @@ -71,12 +70,10 @@ def runIonSubband(self): for j, swathNumber in enumerate(range(self._insar.startingSwath, self._insar.endingSwath + 1)): swathDir = 's{}'.format(swathNumber) fullDir = os.path.join(subbandDir, frameDir, swathDir) - if not os.path.exists(fullDir): - os.makedirs(fullDir) + os.makedirs(fullDir, exist_ok=True) #create ionospheric phase directory - if not os.path.exists(ionDir['ionCal']): - os.makedirs(ionDir['ionCal']) + os.makedirs(ionDir['ionCal']) ############################################################ @@ -100,10 +97,8 @@ def runIonSubband(self): slcDir = os.path.join('../', frameDir, swathDir, burstPrefix) slcLowerDir = os.path.join(ionDir['subband'][0], frameDir, swathDir, burstPrefix) slcUpperDir = os.path.join(ionDir['subband'][1], frameDir, swathDir, burstPrefix) - if not os.path.exists(slcLowerDir): - os.makedirs(slcLowerDir) - if not os.path.exists(slcUpperDir): - os.makedirs(slcUpperDir) + os.makedirs(slcLowerDir, exist_ok=True) + os.makedirs(slcUpperDir, exist_ok=True) for k in range(swath.numberOfBursts): print('processing burst: %02d'%(k+1)) slc = os.path.join(slcDir, burstPrefix+'_%02d.slc'%(k+1)) @@ -208,8 +203,7 @@ def runIonSubband(self): os.chdir(frameDir) mosaicDir = 'mosaic' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if self._insar.endingSwath-self._insar.startingSwath+1 == 1: @@ -289,8 +283,7 @@ def runIonSubband(self): os.chdir(ionDir['subband'][k]) mosaicDir = 'insar' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) numberOfFrames = len(masterTrack.frames) @@ -374,8 +367,7 @@ def runIonSubband(self): os.chdir(ionDir['subband'][k]) insarDir = ionDir['insar'] - if not os.path.exists(insarDir): - os.makedirs(insarDir) + os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) rangePixelSize = self._insar.numberRangeLooks1 * masterTrack.rangePixelSize diff --git a/components/isceobj/Alos2burstProc/runLookSd.py b/components/isceobj/Alos2burstProc/runLookSd.py index ed43f6f..0962af5 100644 --- a/components/isceobj/Alos2burstProc/runLookSd.py +++ b/components/isceobj/Alos2burstProc/runLookSd.py @@ -24,8 +24,7 @@ def runLookSd(self): wbdFile = os.path.abspath(self._insar.wbd) sdDir = 'sd' - if not os.path.exists(sdDir): - os.makedirs(sdDir) + os.makedirs(sdDir, exist_ok=True) os.chdir(sdDir) sd = isceobj.createImage() diff --git a/components/isceobj/Alos2burstProc/runPreprocessor.py b/components/isceobj/Alos2burstProc/runPreprocessor.py index 5bc2373..c971810 100644 --- a/components/isceobj/Alos2burstProc/runPreprocessor.py +++ b/components/isceobj/Alos2burstProc/runPreprocessor.py @@ -193,8 +193,7 @@ def runPreprocessor(self): for i, (masterFrame, slaveFrame) in enumerate(zip(self._insar.masterFrames, self._insar.slaveFrames)): #frame number starts with 1 frameDir = 'f{}_{}'.format(i+1, masterFrame) - if not os.path.exists(frameDir): - os.makedirs(frameDir) + os.makedirs(frameDir, exist_ok=True) os.chdir(frameDir) #attach a frame to master and slave @@ -210,8 +209,7 @@ def runPreprocessor(self): print('processing frame {} swath {}'.format(masterFrame, j)) swathDir = 's{}'.format(j) - if not os.path.exists(swathDir): - os.makedirs(swathDir) + os.makedirs(swathDir, exist_ok=True) os.chdir(swathDir) #attach a swath to master and slave diff --git a/components/isceobj/Alos2burstProc/runSwathMosaic.py b/components/isceobj/Alos2burstProc/runSwathMosaic.py index 544800a..0827af5 100644 --- a/components/isceobj/Alos2burstProc/runSwathMosaic.py +++ b/components/isceobj/Alos2burstProc/runSwathMosaic.py @@ -28,8 +28,7 @@ def runSwathMosaic(self): os.chdir(frameDir) mosaicDir = 'mosaic' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if self._insar.endingSwath-self._insar.startingSwath+1 == 1: @@ -159,8 +158,7 @@ def runSwathMosaic(self): os.chdir(frameDir) mosaicDir = 'mosaic' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if self._insar.endingSwath-self._insar.startingSwath+1 == 1: diff --git a/components/isceobj/Alos2burstProc/runSwathOffset.py b/components/isceobj/Alos2burstProc/runSwathOffset.py index d909625..d856cc1 100644 --- a/components/isceobj/Alos2burstProc/runSwathOffset.py +++ b/components/isceobj/Alos2burstProc/runSwathOffset.py @@ -27,8 +27,7 @@ def runSwathOffset(self): os.chdir(frameDir) mosaicDir = 'mosaic' - if not os.path.exists(mosaicDir): - os.makedirs(mosaicDir) + os.makedirs(mosaicDir, exist_ok=True) os.chdir(mosaicDir) if self._insar.endingSwath-self._insar.startingSwath+1 == 1: diff --git a/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py b/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py index 2170ed9..c9e2aed 100644 --- a/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py +++ b/components/isceobj/Alos2burstProc/runUnwrapSnaphuSd.py @@ -28,8 +28,7 @@ def runUnwrapSnaphuSd(self): #slaveTrack = self._insar.loadTrack(master=False) sdDir = 'sd' - if not os.path.exists(sdDir): - os.makedirs(sdDir) + os.makedirs(sdDir, exist_ok=True) os.chdir(sdDir) diff --git a/components/isceobj/Catalog/Catalog.py b/components/isceobj/Catalog/Catalog.py index 5293fa3..00a8d0f 100755 --- a/components/isceobj/Catalog/Catalog.py +++ b/components/isceobj/Catalog/Catalog.py @@ -172,12 +172,7 @@ class Catalog(OrderedDict): return the normal value.""" if self._isLargeList(v): # Make the catalog directory if it doesn't already exist - try: - os.makedirs('catalog') - except OSError as e: - if e.errno != errno.EEXIST: - print("Couldn't create directory, 'catalog'! Please check your permissions.") - raise + os.makedirs('catalog', exist_ok=True) fileName = 'catalog/%s.%s.%03i' % ('.'.join(nodePath), key, Catalog.bigArrayNum) Catalog.bigArrayNum += 1 f = open(fileName, 'w') diff --git a/components/isceobj/RtcProc/runPreprocessor.py b/components/isceobj/RtcProc/runPreprocessor.py index 9f76af4..0a20117 100644 --- a/components/isceobj/RtcProc/runPreprocessor.py +++ b/components/isceobj/RtcProc/runPreprocessor.py @@ -25,9 +25,7 @@ def runPreprocessor(self): self.master.configure() - - if not os.path.isdir(self.master.output): - os.makedirs(self.master.output) + os.makedirs(self.master.output, exist_ok=True) slantRangeExtracted = False diff --git a/components/isceobj/RtcProc/runTopo.py b/components/isceobj/RtcProc/runTopo.py index 7c5bd0e..fde83c3 100755 --- a/components/isceobj/RtcProc/runTopo.py +++ b/components/isceobj/RtcProc/runTopo.py @@ -46,8 +46,7 @@ def runTopo(self, method='legendre'): demImg.load(demname + '.xml') - if not os.path.isdir(self._grd.geometryFolder): - os.makedirs(self._grd.geometryFolder) + os.makedirs(self._grd.geometryFolder, exist_ok=True) #####Run Topo diff --git a/components/isceobj/Sensor/TOPS/Sentinel1.py b/components/isceobj/Sensor/TOPS/Sentinel1.py index 0444342..1178b7a 100755 --- a/components/isceobj/Sensor/TOPS/Sentinel1.py +++ b/components/isceobj/Sensor/TOPS/Sentinel1.py @@ -954,14 +954,7 @@ class Sentinel1(Component): if length is None: length = self.product.bursts[0].numberOfLines - - if os.path.isdir(self.output): - print('Output directory exists. Overwriting ...') -# os.rmdir(self.output) - else: - print('Creating directory {0} '.format(self.output)) - os.makedirs(self.output) - + os.makedirs(self.output, exist_ok=True) prevTiff = None for index, burst in enumerate(self.product.bursts): diff --git a/components/isceobj/StripmapProc/runCrop.py b/components/isceobj/StripmapProc/runCrop.py index fb18f1d..b40bd48 100755 --- a/components/isceobj/StripmapProc/runCrop.py +++ b/components/isceobj/StripmapProc/runCrop.py @@ -190,12 +190,7 @@ def cropFrame(frame, limits, outname, israw=False): inname = frame.image.filename suffix = os.path.splitext(inname)[1] outdirname = os.path.dirname(outname) - - if os.path.isdir(outdirname): - print('Output directory already exists. Will be overwritten ....') - else: - os.makedirs(outdirname) - print('Creating {0} directory.'.format(outdirname)) + os.makedirs(outdirname, exist_ok=True) indata = IML.mmapFromISCE(inname, logging) indata.bands[0][ymin:ymax,xmin*factor:xmax*factor].tofile(outname) diff --git a/components/isceobj/StripmapProc/runDenseOffsets.py b/components/isceobj/StripmapProc/runDenseOffsets.py index 0071b1e..cdcd0f2 100644 --- a/components/isceobj/StripmapProc/runDenseOffsets.py +++ b/components/isceobj/StripmapProc/runDenseOffsets.py @@ -90,10 +90,7 @@ def runDenseOffsets(self): slaveSlc = os.path.join(self.insar.coregDirname, self._insar.refinedCoregFilename ) dirname = self.insar.denseOffsetsDirname - if os.path.isdir(dirname): - logger.info('dense offsets directory {0} already exists.'.format(dirname)) - else: - os.makedirs(dirname) + os.makedirs(dirname, exist_ok=True) denseOffsetFilename = os.path.join(dirname , self.insar.denseOffsetFilename) diff --git a/components/isceobj/StripmapProc/runDispersive.py b/components/isceobj/StripmapProc/runDispersive.py index 103ef1b..465f570 100644 --- a/components/isceobj/StripmapProc/runDispersive.py +++ b/components/isceobj/StripmapProc/runDispersive.py @@ -416,10 +416,7 @@ def runDispersive(self): highBandIgram += '.unw' outputDir = self.insar.ionosphereDirname - if os.path.isdir(outputDir): - logger.info('Ionosphere directory {0} already exists.'.format(outputDir)) - else: - os.makedirs(outputDir) + os.makedirs(outputDir, exist_ok=True) outDispersive = os.path.join(outputDir, self.insar.dispersiveFilename) sigmaDispersive = outDispersive + ".sig" diff --git a/components/isceobj/StripmapProc/runGeo2rdr.py b/components/isceobj/StripmapProc/runGeo2rdr.py index b09d74e..4fb1efb 100755 --- a/components/isceobj/StripmapProc/runGeo2rdr.py +++ b/components/isceobj/StripmapProc/runGeo2rdr.py @@ -52,10 +52,7 @@ def runGeo2rdr(self): info = self._insar.loadProduct( self._insar.slaveSlcCropProduct) offsetsDir = self.insar.offsetsDirname - if os.path.isdir(offsetsDir): - logger.info('Geometry directory {0} already exists.'.format(offsetsDir)) - else: - os.makedirs(offsetsDir) + os.makedirs(offsetsDir, exist_ok=True) grdr = createGeo2rdr() grdr.configure() diff --git a/components/isceobj/StripmapProc/runInterferogram.py b/components/isceobj/StripmapProc/runInterferogram.py index da42508..c78cf63 100644 --- a/components/isceobj/StripmapProc/runInterferogram.py +++ b/components/isceobj/StripmapProc/runInterferogram.py @@ -223,10 +223,7 @@ def subBandIgram(self, masterSlc, slaveSlc, subBandDir,radarWavelength): ifgDir = os.path.join(self.insar.ifgDirname, subBandDir) - if os.path.isdir(ifgDir): - logger.info('Interferogram directory {0} already exists.'.format(ifgDir)) - else: - os.makedirs(ifgDir) + os.makedirs(ifgDir, exist_ok=True) interferogramName = os.path.join(ifgDir , self.insar.ifgFilename) diff --git a/components/isceobj/StripmapProc/runPreprocessor.py b/components/isceobj/StripmapProc/runPreprocessor.py index 18067bb..60c81ec 100755 --- a/components/isceobj/StripmapProc/runPreprocessor.py +++ b/components/isceobj/StripmapProc/runPreprocessor.py @@ -64,8 +64,7 @@ def runPreprocessor(self): if israwdata: print('Master data is in RAW format. Adding _raw to output name.') sensor.output = os.path.join(dirname + '_raw', os.path.basename(dirname)+'.raw') - if not os.path.isdir( os.path.dirname(sensor.output)): - os.makedirs( os.path.dirname(sensor.output)) + os.makedirs(os.path.dirname(sensor.output), exist_ok=True) #sensor._resampleFlag = 'single2dual' master = make_raw(sensor, masterdop) @@ -85,9 +84,8 @@ def runPreprocessor(self): iszerodop = isZeroDopplerSLC(self.masterSensorName) sensor.output = os.path.join(dirname + '_slc', os.path.basename(dirname)+'.slc') - if not os.path.isdir( os.path.dirname(sensor.output)): - os.makedirs( os.path.dirname(sensor.output)) - + os.makedirs(os.path.dirname(sensor.output), exist_ok=True) + master = make_raw(sensor, masterdop) if self._insar.masterSlcProduct is None: @@ -121,8 +119,7 @@ def runPreprocessor(self): print('Slave data is in RAW format. Adding _raw to output name.') sensor.output = os.path.join(dirname + '_raw', os.path.basename(dirname)+'.raw') - if not os.path.isdir( os.path.dirname(sensor.output)): - os.makedirs( os.path.dirname(sensor.output)) + os.makedirs(os.path.dirname(sensor.output), exist_ok=True) slave = make_raw(sensor, slavedop) @@ -142,8 +139,7 @@ def runPreprocessor(self): iszerodop = isZeroDopplerSLC(self.slaveSensorName) sensor.output = os.path.join(dirname + '_slc', os.path.basename(dirname)+'.slc') - if not os.path.isdir( os.path.dirname(sensor.output)): - os.makedirs( os.path.dirname(sensor.output)) + os.makedirs( os.path.dirname(sensor.output), exist_ok=True) slave = make_raw(sensor, slavedop) diff --git a/components/isceobj/StripmapProc/runROI.py b/components/isceobj/StripmapProc/runROI.py index 7148d23..e75fb0e 100755 --- a/components/isceobj/StripmapProc/runROI.py +++ b/components/isceobj/StripmapProc/runROI.py @@ -235,11 +235,7 @@ def runFormSLC(self): outdir = os.path.join(self.master.output + '_slc') outname = os.path.join( outdir, os.path.basename(self.master.output) + '.slc') xmlname = outdir + '.xml' - if not os.path.isdir(outdir): - print('Creating directory: {0}'.format(outdir)) - os.makedirs(outdir) - else: - print('SLC directory {0} already exists'.format(outdir)) + os.makedirs(outdir, exist_ok=True) slcFrame = focus(frame, outname) @@ -260,11 +256,7 @@ def runFormSLC(self): outdir = os.path.join(self.slave.output + '_slc') outname = os.path.join( outdir, os.path.basename(self.slave.output) + '.slc') xmlname = outdir + '.xml' - if not os.path.isdir(outdir): - print('Creating directory: {0}'.format(outdir)) - os.makedirs(outdir) - else: - print('SLC directory {0} already exists'.format(outdir)) + os.makedirs(outdir, exist_ok=True) slcFrame = focus(frame, outname) diff --git a/components/isceobj/StripmapProc/runRefineSlaveTiming.py b/components/isceobj/StripmapProc/runRefineSlaveTiming.py index 6efe252..8994c95 100644 --- a/components/isceobj/StripmapProc/runRefineSlaveTiming.py +++ b/components/isceobj/StripmapProc/runRefineSlaveTiming.py @@ -144,11 +144,7 @@ def runRefineSlaveTiming(self): print ('*************************************') misregDir = self.insar.misregDirname - - if os.path.isdir(misregDir): - logger.info('mis-registration directory {0} already exists.'.format(misregDir)) - else: - os.makedirs(misregDir) + os.makedirs(misregDir, exist_ok=True) outShelveFile = os.path.join(misregDir, self.insar.misregFilename) odb = shelve.open(outShelveFile) diff --git a/components/isceobj/StripmapProc/runResampleSlc.py b/components/isceobj/StripmapProc/runResampleSlc.py index b1dfa72..8712c2f 100644 --- a/components/isceobj/StripmapProc/runResampleSlc.py +++ b/components/isceobj/StripmapProc/runResampleSlc.py @@ -117,10 +117,7 @@ def runResampleSlc(self, kind='coarse'): # preparing the output directory for coregistered slave slc coregDir = self.insar.coregDirname - if os.path.isdir(coregDir): - logger.info('Geometry directory {0} already exists.'.format(coregDir)) - else: - os.makedirs(coregDir) + os.makedirs(coregDir, exist_ok=True) # output file name of the coregistered slave slc img = slaveFrame.getImage() diff --git a/components/isceobj/StripmapProc/runResampleSubbandSlc.py b/components/isceobj/StripmapProc/runResampleSubbandSlc.py index 157764b..92f2ac9 100644 --- a/components/isceobj/StripmapProc/runResampleSubbandSlc.py +++ b/components/isceobj/StripmapProc/runResampleSubbandSlc.py @@ -83,10 +83,7 @@ def resampleSlc(self,masterFrame, slaveFrame, imageSlc2, radarWavelength, coregD # preparing the output directory for coregistered slave slc #coregDir = self.insar.coregDirname - if os.path.isdir(coregDir): - logger.info('Geometry directory {0} already exists.'.format(coregDir)) - else: - os.makedirs(coregDir) + os.makedirs(coregDir, exist_ok=True) # output file name of the coregistered slave slc img = slaveFrame.getImage() diff --git a/components/isceobj/StripmapProc/runSplitSpectrum.py b/components/isceobj/StripmapProc/runSplitSpectrum.py index b79e0ea..da18ab5 100644 --- a/components/isceobj/StripmapProc/runSplitSpectrum.py +++ b/components/isceobj/StripmapProc/runSplitSpectrum.py @@ -142,15 +142,8 @@ def runSplitSpectrum(self): lowBandDir = os.path.join(self.insar.splitSpectrumDirname, self.insar.lowBandSlcDirname) highBandDir = os.path.join(self.insar.splitSpectrumDirname, self.insar.highBandSlcDirname) - if os.path.isdir(lowBandDir): - logger.info('low-band slc directory {0} already exists.'.format(lowBandDir)) - else: - os.makedirs(lowBandDir) - - if os.path.isdir(highBandDir): - logger.info('high-band slc directory {0} already exists.'.format(highBandDir)) - else: - os.makedirs(highBandDir) + os.makedirs(lowBandDir, exist_ok=True) + os.makedirs(highBandDir, exist_ok=True) masterLowBandSlc = os.path.join(lowBandDir, os.path.basename(masterSlc)) masterHighBandSlc = os.path.join(highBandDir, os.path.basename(masterSlc)) diff --git a/components/isceobj/StripmapProc/runTopo.py b/components/isceobj/StripmapProc/runTopo.py index 0aed192..7ec1533 100755 --- a/components/isceobj/StripmapProc/runTopo.py +++ b/components/isceobj/StripmapProc/runTopo.py @@ -51,10 +51,7 @@ def runTopo(self): #IU.copyAttributes(demImage, objDem) geometryDir = self.insar.geometryDirname - if os.path.isdir(geometryDir): - logger.info('Geometry directory {0} already exists.'.format(geometryDir)) - else: - os.makedirs(geometryDir) + os.makedirs(geometryDir, exist_ok=True) demFilename = self.verifyDEM() diff --git a/components/isceobj/TopsProc/runBurstIfg.py b/components/isceobj/TopsProc/runBurstIfg.py index eeb894f..dab4e37 100644 --- a/components/isceobj/TopsProc/runBurstIfg.py +++ b/components/isceobj/TopsProc/runBurstIfg.py @@ -168,8 +168,7 @@ def runBurstIfg(self): continue ifgdir = os.path.join(self._insar.fineIfgDirname, 'IW{0}'.format(swath)) - if not os.path.exists(ifgdir): - os.makedirs(ifgdir) + os.makedirs(ifgdir, exist_ok=True) ####Load relevant products master = self._insar.loadProduct( os.path.join(self._insar.masterSlcProduct, 'IW{0}.xml'.format(swath))) diff --git a/components/isceobj/TopsProc/runCoarseOffsets.py b/components/isceobj/TopsProc/runCoarseOffsets.py index 7ef2469..4fb2db3 100644 --- a/components/isceobj/TopsProc/runCoarseOffsets.py +++ b/components/isceobj/TopsProc/runCoarseOffsets.py @@ -99,8 +99,7 @@ def runCoarseOffsets(self): ###Offsets output directory outdir = os.path.join(self._insar.coarseOffsetsDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) ###Burst indices w.r.t master diff --git a/components/isceobj/TopsProc/runCoarseResamp.py b/components/isceobj/TopsProc/runCoarseResamp.py index 5d17a48..0643a19 100755 --- a/components/isceobj/TopsProc/runCoarseResamp.py +++ b/components/isceobj/TopsProc/runCoarseResamp.py @@ -103,8 +103,7 @@ def runCoarseResamp(self): ###Output directory for coregistered SLCs outdir = os.path.join(self._insar.coarseCoregDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) ###Directory with offsets diff --git a/components/isceobj/TopsProc/runFineOffsets.py b/components/isceobj/TopsProc/runFineOffsets.py index 8a85fbc..e1ff7dc 100644 --- a/components/isceobj/TopsProc/runFineOffsets.py +++ b/components/isceobj/TopsProc/runFineOffsets.py @@ -200,8 +200,7 @@ def runFineOffsets(self): ###Offsets output directory outdir = os.path.join(self._insar.fineOffsetsDirname, 'IW{0}'.format(swath)) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) ###Burst indices w.r.t master diff --git a/components/isceobj/TopsProc/runFineResamp.py b/components/isceobj/TopsProc/runFineResamp.py index 1955a94..d8e5b9b 100755 --- a/components/isceobj/TopsProc/runFineResamp.py +++ b/components/isceobj/TopsProc/runFineResamp.py @@ -207,8 +207,7 @@ def runFineResamp(self): ###Output directory for coregistered SLCs outdir = os.path.join(self._insar.fineCoregDirname, 'IW{0}'.format(swath)) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) ###Directory with offsets diff --git a/components/isceobj/TopsProc/runIon.py b/components/isceobj/TopsProc/runIon.py index de9e2a1..ed1acf0 100644 --- a/components/isceobj/TopsProc/runIon.py +++ b/components/isceobj/TopsProc/runIon.py @@ -413,11 +413,9 @@ def subband(self, ionParam): #create dirs lowerDir = os.path.join(ionParam.ionDirname, ionParam.lowerDirname, ionParam.fineIfgDirname, 'IW{0}'.format(swath)) - if not os.path.isdir(lowerDir): - os.makedirs(lowerDir) upperDir = os.path.join(ionParam.ionDirname, ionParam.upperDirname, ionParam.fineIfgDirname, 'IW{0}'.format(swath)) - if not os.path.isdir(upperDir): - os.makedirs(upperDir) + os.makedirs(lowerDir, exist_ok=True) + os.makedirs(upperDir, exist_ok=True) ############################################################## #for resampling @@ -732,8 +730,7 @@ def merge(self, ionParam): frames.append(ifg) burstList.append([os.path.join(burstDirname, 'IW{0}'.format(swath), 'burst_%02d.int'%(x+1)) for x in range(minBurst, maxBurst)]) - if not os.path.isdir(mergeDirname): - os.makedirs(mergeDirname) + os.makedirs(mergeDirname, exist_ok=True) suffix = '.full' if (ionParam.numberRangeLooks0 == 1) and (ionParam.numberAzimuthLooks0 == 1): @@ -940,8 +937,7 @@ def multilook_unw(self, ionParam, mergedDirname): procdir = os.path.join(ionParam.ionDirname, dirx, mergedDirname) #create a directory for original files oridir = os.path.join(procdir, oridir0) - if not os.path.isdir(oridir): - os.makedirs(oridir) + os.makedirs(oridir, exist_ok=True) #move files, renameFile uses os.rename, which overwrites if file already exists in oridir. This can support re-run filename0 = os.path.join(procdir, self._insar.mergedIfgname) filename = os.path.join(oridir, self._insar.mergedIfgname) @@ -1293,8 +1289,7 @@ def ionosphere(self, ionParam): #dump ionosphere outDir = os.path.join(ionParam.ionDirname, ionParam.ioncalDirname) - if not os.path.isdir(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) outFilename = os.path.join(outDir, ionParam.ionRawNoProj) ion = np.zeros((length*2, width), dtype=np.float32) ion[0:length*2:2, :] = amp @@ -1434,8 +1429,7 @@ def ionSwathBySwath(self, ionParam): for dirx in dirs: outputFilename = self._insar.mergedIfgname outputDirname = os.path.join(ionParam.ionDirname, dirx, ionParam.mergedDirname + '_IW{0}'.format(swath)) - if not os.path.isdir(outputDirname): - os.makedirs(outputDirname) + os.makedirs(outputDirname, exist_ok=True) suffix = '.full' if (numberRangeLooks0 == 1) and (numberAzimuthLooks0 == 1): suffix='' @@ -1561,8 +1555,7 @@ def ionSwathBySwath(self, ionParam): #dump result outDir = os.path.join(ionParam.ionDirname, ionParam.ioncalDirname + '_IW{0}'.format(swath)) - if not os.path.isdir(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) outFilename = os.path.join(outDir, ionParam.ionRawNoProj) ion = np.zeros((length*2, width), dtype=np.float32) ion[0:length*2:2, :] = amp @@ -1635,8 +1628,7 @@ def ionSwathBySwath(self, ionParam): #dump ionosphere outDir = os.path.join(ionParam.ionDirname, ionParam.ioncalDirname) - if not os.path.isdir(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) outFilename = os.path.join(outDir, ionParam.ionRawNoProj) ion = np.zeros((length*2, width), dtype=np.float32) ion[0:length*2:2, :] = ampMerged @@ -2197,8 +2189,7 @@ def ion2grd(self, ionParam): nburst = len(frames[i].bursts) ###output directory for burst ionosphere outdir = os.path.join(ionParam.ionDirname, ionParam.ionBurstDirname, 'IW{0}'.format(swathList2[i])) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) for j in range(nburst): #according to runBurstIfg.py, this is originally from self._insar.masterSlcProduct, 'IW{0}.xml' @@ -2565,8 +2556,7 @@ def esd_noion(self, ionParam): sdir = os.path.join(ionParam.ionDirname, esddir, 'IW{0}'.format(swath)) - if not os.path.exists(sdir): - os.makedirs(sdir) + os.makedirs(sdir, exist_ok=True) #use mis-registration estimated from esd to compute phase error for ii in range(minBurst, maxBurst): diff --git a/components/isceobj/TopsProc/runMergeBursts.py b/components/isceobj/TopsProc/runMergeBursts.py index 2bcf33c..213b9ef 100755 --- a/components/isceobj/TopsProc/runMergeBursts.py +++ b/components/isceobj/TopsProc/runMergeBursts.py @@ -719,8 +719,7 @@ def runMergeBursts(self, adjust=1): # STEP 2. MERGE BURSTS ######################################### mergedir = self._insar.mergedDirname - if not os.path.isdir(mergedir): - os.makedirs(mergedir) + os.makedirs(mergedir, exist_ok=True) if (self.numberRangeLooks == 1) and (self.numberAzimuthLooks==1): suffix = '' else: diff --git a/components/isceobj/TopsProc/runMergeSLCs.py b/components/isceobj/TopsProc/runMergeSLCs.py index e41ffa5..235165c 100644 --- a/components/isceobj/TopsProc/runMergeSLCs.py +++ b/components/isceobj/TopsProc/runMergeSLCs.py @@ -28,8 +28,7 @@ def runMergeSLCs(self): mSlcList = [os.path.join(self._insar.masterSlcProduct, 'burst_%02d.slc'%(x+1)) for x in range(minBurst, maxBurst)] sSlcList = [os.path.join(self._insar.fineCoregDirname, 'burst_%02d.slc'%(x+1)) for x in range(minBurst, maxBurst)] mergedir = self._insar.mergedDirname - if not os.path.isdir(mergedir): - os.makedirs(mergedir) + os.makedirs(mergedir, exist_ok=True) suffix = '.full' if (self.numberRangeLooks == 1) and (self.numberAzimuthLooks==1): diff --git a/components/isceobj/TopsProc/runOverlapIfg.py b/components/isceobj/TopsProc/runOverlapIfg.py index ef1be5f..4ca420a 100755 --- a/components/isceobj/TopsProc/runOverlapIfg.py +++ b/components/isceobj/TopsProc/runOverlapIfg.py @@ -128,8 +128,7 @@ def runOverlapIfg(self): nBurst = maxBurst - minBurst ifgdir = os.path.join( self._insar.coarseIfgDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - if not os.path.exists(ifgdir): - os.makedirs(ifgdir) + os.makedirs(ifgdir, exist_ok=True) ####All indexing is w.r.t stack master for overlaps maxBurst = maxBurst - 1 diff --git a/components/isceobj/TopsProc/runPrepESD.py b/components/isceobj/TopsProc/runPrepESD.py index 0cf9c3c..c6e224c 100755 --- a/components/isceobj/TopsProc/runPrepESD.py +++ b/components/isceobj/TopsProc/runPrepESD.py @@ -245,8 +245,7 @@ def runPrepESD(self): ####Create ESD output directory esddir = self._insar.esdDirname - if not os.path.isdir(esddir): - os.makedirs(esddir) + os.makedirs(esddir, exist_ok=True) ####Overlap offsets directory offdir = os.path.join( self._insar.coarseOffsetsDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) diff --git a/components/isceobj/TopsProc/runSubsetOverlaps.py b/components/isceobj/TopsProc/runSubsetOverlaps.py index 72f0131..2354606 100644 --- a/components/isceobj/TopsProc/runSubsetOverlaps.py +++ b/components/isceobj/TopsProc/runSubsetOverlaps.py @@ -105,18 +105,8 @@ def runSubsetOverlaps(self): outdir = os.path.join(self._insar.geometryDirname, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) submasterdir = os.path.join(self._insar.masterSlcProduct, self._insar.overlapsSubDirname, 'IW{0}'.format(swath)) - - if os.path.isdir(outdir): - logger.info('Overlap directory {0} already exists'.format(outdir)) - else: - os.makedirs(outdir) - - - if os.path.isdir(submasterdir): - logger.info('Submaster Overlap directory {0} already exists'.format(submasterdir)) - else: - os.makedirs(submasterdir) - + os.makedirs(outdir, exist_ok=True) + os.makedirs(submasterdir, exist_ok=True) ###Azimuth time interval dt = mFrame.bursts[0].azimuthTimeInterval diff --git a/components/isceobj/TopsProc/runTopo.py b/components/isceobj/TopsProc/runTopo.py index d01885b..46c710a 100644 --- a/components/isceobj/TopsProc/runTopo.py +++ b/components/isceobj/TopsProc/runTopo.py @@ -47,15 +47,9 @@ def runTopoCPU(self): if numCommon > 0: catalog.addItem('Number of common bursts IW-{0}'.format(swath), self._insar.numberOfCommonBursts[swath-1], 'topo') - ###Check if geometry directory already exists. dirname = os.path.join(self._insar.geometryDirname, 'IW{0}'.format(swath)) - - if os.path.isdir(dirname): - logger.info('Geometry directory {0} already exists.'.format(dirname)) - else: - os.makedirs(dirname) - + os.makedirs(dirname, exist_ok=True) ###For each burst for index in range(numCommon): @@ -201,11 +195,8 @@ def runTopoGPU(self): slantRangeImage.createPoly2D() - - dirname = self._insar.geometryDirname - if not os.path.isdir(dirname): - os.makedirs(dirname) + os.makedirs(dirname, exist_ok=True) latImage = isceobj.createImage() @@ -321,9 +312,7 @@ def runTopoGPU(self): for swath, frame, istart in zip(swaths, frames, swathStarts): outname = os.path.join(dirname, 'IW{0}'.format(swath)) - if not os.path.isdir(outname): - os.makedirs(outname) - + os.makedirs(outname, exist_ok=True) for ind, burst in enumerate(frame.bursts): top = int(np.rint((burst.sensingStart - t0).total_seconds()/dt)) diff --git a/components/iscesys/DataRetriever/DataRetriever.py b/components/iscesys/DataRetriever/DataRetriever.py index 1599ff8..0c680b8 100755 --- a/components/iscesys/DataRetriever/DataRetriever.py +++ b/components/iscesys/DataRetriever/DataRetriever.py @@ -127,11 +127,7 @@ class DataRetriever(Component): # @param listFile \c list of the filenames to be retrieved. def getFiles(self,listFile): - try: - os.makedirs(self._downloadDir) - except: - #dir already exists - pass + os.makedirs(self._downloadDir, exist_ok=True) #curl with -O downloads in working dir, so save cwd cwd = os.getcwd() #move to _downloadDir diff --git a/configuration/buildHelper.py b/configuration/buildHelper.py index 138bdb3..70a502c 100755 --- a/configuration/buildHelper.py +++ b/configuration/buildHelper.py @@ -7,11 +7,7 @@ tmpdump = 'tmpdump.json' def createHelp(env,factoryFile,installDir): #jng: try to have scons handle all the creation but could not figure out how # so handled dir creation manually - try: - os.makedirs(env['HELPER_BUILD_DIR']) - except: - # already exists - pass + os.makedirs(env['HELPER_BUILD_DIR'], exist_ok=True) try: #one could probably also use __import__ but needs to make sure the #the cwd is prepended to the sys.path otherwise if factoryFile = __init__.py diff --git a/contrib/demUtils/demstitcher/DemStitcher.py b/contrib/demUtils/demstitcher/DemStitcher.py index ba3e1e3..ff36cce 100755 --- a/contrib/demUtils/demstitcher/DemStitcher.py +++ b/contrib/demUtils/demstitcher/DemStitcher.py @@ -352,11 +352,7 @@ class DemStitcher(Component): self._downloadDir = downloadDir if not (downloadDir) is None: - try: - os.makedirs(downloadDir) - except: - #dir already exists - pass + os.makedirs(downloadDir, exist_ok=True) if region: regionList = region #region unknown, so try all of them @@ -636,11 +632,7 @@ class DemStitcher(Component): else: delta = 1/3600.0 - try: - os.makedirs(self._downloadDir) - except: - #dir already exists - pass + os.makedirs(self._downloadDir, exist_ok=True) width = self.getDemWidth(lon,source) demImage.initImage(outname,'read',width) @@ -702,11 +694,7 @@ class DemStitcher(Component): demImage = self.createImage(lat,lon,source,outname) dict = {'WIDTH':demImage.width,'LENGTH':demImage.length,'X_FIRST':demImage.coord1.coordStart,'Y_FIRST':demImage.coord2.coordStart,'X_STEP':demImage.coord1.coordDelta,'Y_STEP':-demImage.coord2.coordDelta,'X_UNIT':'degrees','Y_UNIT':'degrees'} - try: - os.makedirs(self._downloadDir) - except: - #dir already exists - pass + os.makedirs(self._downloadDir, exist_ok=True) extension = '.rsc' outfile = outname + extension fp = open(outfile,'w') diff --git a/contrib/demUtils/demstitcher/DemStitcherV3.py b/contrib/demUtils/demstitcher/DemStitcherV3.py index 6c5f02c..ad7acd8 100755 --- a/contrib/demUtils/demstitcher/DemStitcherV3.py +++ b/contrib/demUtils/demstitcher/DemStitcherV3.py @@ -139,12 +139,8 @@ class DemStitcher(DS): else: self._downloadDir = downloadDir - if not (downloadDir) is None: - try: - os.makedirs(downloadDir) - except: - #dir already exists - pass + if downloadDir is not None: + os.makedirs(downloadDir, exist_ok=True) for fileNow in listFile: url = self.getFullHttp(source) opener = urllib.request.URLopener() diff --git a/contrib/demUtils/swbdstitcher/SWBDStitcher.py b/contrib/demUtils/swbdstitcher/SWBDStitcher.py index e299e9b..e3839fd 100755 --- a/contrib/demUtils/swbdstitcher/SWBDStitcher.py +++ b/contrib/demUtils/swbdstitcher/SWBDStitcher.py @@ -131,11 +131,7 @@ class SWBDStitcher(DemStitcher): delta = 1/3600.0 - try: - os.makedirs(self._downloadDir) - except: - #dir already exists - pass + os.makedirs(self._downloadDir, exist_ok=True) width = self.getDemWidth(lon,1) image.initImage(outname,'read',width,'BYTE') @@ -168,12 +164,8 @@ class SWBDStitcher(DemStitcher): else: self._downloadDir = downloadDir - if not (downloadDir) is None: - try: - os.makedirs(downloadDir) - except: - #dir already exists - pass + if downloadDir is not None: + os.makedirs(downloadDir, exist_ok=True) for fileNow in listFile: url = self.getFullHttp(source) opener = urllib.request.URLopener() diff --git a/contrib/demUtils/watermask/WaterMask.py b/contrib/demUtils/watermask/WaterMask.py index 57b5603..9051e38 100755 --- a/contrib/demUtils/watermask/WaterMask.py +++ b/contrib/demUtils/watermask/WaterMask.py @@ -452,12 +452,8 @@ class MaskStitcher(Component): else: self._downloadDir = downloadDir - if not (downloadDir) is None: - try: - os.makedirs(downloadDir) - except: - #dir already exists - pass + if downloadDir is not None: + os.makedirs(downloadDir, exist_ok=True) if region: regionList = region #region unknown, so try all of them @@ -664,11 +660,7 @@ class MaskStitcher(Component): demImage = createDemImage() - try: - os.makedirs(self._downloadDir) - except: - #dir already exists - pass + os.makedirs(self._downloadDir, exist_ok=True) width = self._width demImage.initImage(outname,'read',width) @@ -732,11 +724,7 @@ class MaskStitcher(Component): demImage = self.createImage(lat,lon,outname) dict = {'WIDTH':demImage.width,'LENGTH':demImage.length,'X_FIRST':demImage.coord1.coordStart,'Y_FIRST':demImage.coord2.coordStart,'X_STEP':demImage.coord1.coordDelta,'Y_STEP':-demImage.coord2.coordDelta,'X_UNIT':'degrees','Y_UNIT':'degrees'} - try: - os.makedirs(self._downloadDir) - except: - #dir already exists - pass + os.makedirs(self._downloadDir, exist_ok=True) extension = '.rsc' outfile = os.path.join(self._downloadDir,outname + extension) fp = open(outfile,'w') diff --git a/contrib/stack/stripmapStack/MaskAndFilter.py b/contrib/stack/stripmapStack/MaskAndFilter.py index d60be21..06d4417 100755 --- a/contrib/stack/stripmapStack/MaskAndFilter.py +++ b/contrib/stack/stripmapStack/MaskAndFilter.py @@ -259,8 +259,7 @@ def main(iargs=None): inps = cmdLineParse(iargs) - if not os.path.exists(inps.outDir): - os.makedirs(inps.outD) + os.makedirs(inps.outD, exist_ok=True) ####################### # masking the dense offsets based on SNR and median filter the masked offs diff --git a/contrib/stack/stripmapStack/Stack.py b/contrib/stack/stripmapStack/Stack.py index 515298a..85acd8c 100755 --- a/contrib/stack/stripmapStack/Stack.py +++ b/contrib/stack/stripmapStack/Stack.py @@ -285,15 +285,13 @@ class run(object): for k in inps.__dict__.keys(): setattr(self, k, inps.__dict__[k]) self.runDir = os.path.join(self.workDir, 'run_files') - if not os.path.exists(self.runDir): - os.makedirs(self.runDir) + os.makedirs(self.runDir, exist_ok=True) self.run_outname = os.path.join(self.runDir, runName) print ('writing ', self.run_outname) self.configDir = os.path.join(self.workDir,'configs') - if not os.path.exists(self.configDir): - os.makedirs(self.configDir) + os.makedirs(self.configDir, exist_ok=True) # passing argument of started from raw if inps.nofocus is False: @@ -690,8 +688,7 @@ def baselinePair(baselineDir, master, slave,doBaselines=True): def baselineStack(inps,stackMaster,acqDates,doBaselines=True): from collections import OrderedDict baselineDir = os.path.join(inps.workDir,'baselines') - if not os.path.exists(baselineDir): - os.makedirs(baselineDir) + os.makedirs(baselineDir, exist_ok=True) baselineDict = OrderedDict() timeDict = OrderedDict() datefmt = '%Y%m%d' diff --git a/contrib/stack/stripmapStack/baselineGrid.py b/contrib/stack/stripmapStack/baselineGrid.py index ea316df..9e47df4 100755 --- a/contrib/stack/stripmapStack/baselineGrid.py +++ b/contrib/stack/stripmapStack/baselineGrid.py @@ -57,8 +57,7 @@ def main(iargs=None): baselineDir = os.path.dirname(inps.baselineFile) if baselineDir != '': - if not os.path.exists(baselineDir): - os.makedirs(baselineDir) + os.makedirs(baselineDir, exist_ok=True) with shelve.open(os.path.join(inps.master, 'data'), flag='r') as mdb: diff --git a/contrib/stack/stripmapStack/cropFrame.py b/contrib/stack/stripmapStack/cropFrame.py index 7f842d5..8481a8b 100755 --- a/contrib/stack/stripmapStack/cropFrame.py +++ b/contrib/stack/stripmapStack/cropFrame.py @@ -224,12 +224,7 @@ def cropFrame(frame, limits, outdir, israw=False): suffix = os.path.splitext(inname)[1] outname = os.path.join(outdir, os.path.basename(inname)) #+ suffix outdirname = os.path.dirname(outname) - - if os.path.isdir(outdirname): - print('Output directory already exists. Will be overwritten ....') - else: - os.makedirs(outdirname) - print('Creating {0} directory.'.format(outdirname)) + os.makedirs(outdirname, exist_ok=True) indata = IML.mmapFromISCE(inname, logging) indata.bands[0][ymin:ymax,xmin*factor:xmax*factor].tofile(outname) diff --git a/contrib/stack/stripmapStack/crossmul.py b/contrib/stack/stripmapStack/crossmul.py index 7b07716..933bff4 100755 --- a/contrib/stack/stripmapStack/crossmul.py +++ b/contrib/stack/stripmapStack/crossmul.py @@ -91,8 +91,7 @@ def main(iargs=None): img2 = isceobj.createImage() img2.load(inps.slave + '.xml') - if not os.path.exists(os.path.dirname(inps.prefix)): - os.makedirs(os.path.dirname(inps.prefix)) + os.makedirs(os.path.dirname(inps.prefix), exist_ok=True) run(img1, img2, inps.prefix, inps.azlooks, inps.rglooks) diff --git a/contrib/stack/stripmapStack/denseOffsets.py b/contrib/stack/stripmapStack/denseOffsets.py index e1220f3..69ccba3 100755 --- a/contrib/stack/stripmapStack/denseOffsets.py +++ b/contrib/stack/stripmapStack/denseOffsets.py @@ -127,9 +127,8 @@ def main(iargs=None): inps = cmdLineParse(iargs) outDir = os.path.dirname(inps.outprefix) - if not os.path.exists(outDir): - os.makedirs(outDir) - + os.makedirs(outDir, exist_ok=True) + objOffset = estimateOffsetField(inps.master, inps.slave, inps) diff --git a/contrib/stack/stripmapStack/estimateIono.py b/contrib/stack/stripmapStack/estimateIono.py index 7814d13..725e0d2 100755 --- a/contrib/stack/stripmapStack/estimateIono.py +++ b/contrib/stack/stripmapStack/estimateIono.py @@ -523,14 +523,11 @@ def main(iargs=None): print(inps.highBandconncomp) # generate the output directory if it does not exist yet, and back-up the shelve files - if not os.path.exists(inps.outDir): - os.makedirs(inps.outDir) + os.makedirs(inps.outDir, exist_ok=True) lowBandShelve = os.path.join(inps.outDir, 'lowBandShelve') highBandShelve = os.path.join(inps.outDir, 'highBandShelve') - if not os.path.exists(lowBandShelve): - os.makedirs(lowBandShelve) - if not os.path.exists(highBandShelve): - os.makedirs(highBandShelve) + os.makedirs(lowBandShelve, exist_ok=True) + os.makedirs(highBandShelve, exist_ok=True) cmdCp = 'cp ' + inps.lowBandShelve + '* ' + lowBandShelve os.system(cmdCp) cmdCp = 'cp ' + inps.highBandShelve + '* ' + highBandShelve @@ -542,10 +539,7 @@ def main(iargs=None): ''' outputDir = self.insar.ionosphereDirname - if os.path.isdir(outputDir): - logger.info('Ionosphere directory {0} already exists.'.format(outputDir)) - else: - os.makedirs(outputDir) + os.makedirs(outputDir, exist_ok=True) ''' outDispersive = os.path.join(inps.outDir, 'iono.bil') diff --git a/contrib/stack/stripmapStack/geo2rdr.py b/contrib/stack/stripmapStack/geo2rdr.py index 6841fc7..cec8b21 100755 --- a/contrib/stack/stripmapStack/geo2rdr.py +++ b/contrib/stack/stripmapStack/geo2rdr.py @@ -304,8 +304,7 @@ def main(iargs=None): lonImage.load(os.path.join(inps.geom, 'lon.rdr.xml')) lonImage.setAccessMode('read') - if not os.path.isdir(inps.outdir): - os.makedirs(inps.outdir) + os.makedirs(inps.outdir, exist_ok=True) azoff = 0.0 diff --git a/contrib/stack/stripmapStack/invertMisreg.py b/contrib/stack/stripmapStack/invertMisreg.py index 316e2de..19feabb 100755 --- a/contrib/stack/stripmapStack/invertMisreg.py +++ b/contrib/stack/stripmapStack/invertMisreg.py @@ -136,8 +136,7 @@ def design_matrix(pairDirs): def main(iargs=None): inps = cmdLineParse(iargs) - if not os.path.exists(inps.output): - os.makedirs(inps.output) + os.makedirs(inps.output, exist_ok=True) pairDirs = glob.glob(os.path.join(inps.input,'*')) polyInfo = getPolyInfo(pairDirs[0]) @@ -185,8 +184,7 @@ def main(iargs=None): azpoly.initPoly(rangeOrder=polyInfo['azrgOrder'], azimuthOrder=polyInfo['azazOrder'], coeffs=azCoefs) rgpoly.initPoly(rangeOrder=polyInfo['rgrgOrder'], azimuthOrder=polyInfo['rgazOrder'], coeffs=rgCoefs) - if not os.path.exists(os.path.join(inps.output,dateList[i])): - os.makedirs(os.path.join(inps.output,dateList[i])) + os.makedirs(os.path.join(inps.output,dateList[i]), exist_ok=True) odb = shelve.open(os.path.join(inps.output,dateList[i]+'/misreg')) odb['azpoly'] = azpoly diff --git a/contrib/stack/stripmapStack/invertOffsets.py b/contrib/stack/stripmapStack/invertOffsets.py index 6a516d7..7d4df14 100755 --- a/contrib/stack/stripmapStack/invertOffsets.py +++ b/contrib/stack/stripmapStack/invertOffsets.py @@ -272,8 +272,7 @@ def writeDateOffsets(inps, h5File): d = dateList[i].decode("utf-8") d = datetime.datetime(*time.strptime(d,"%Y-%m-%d %H:%M:%S")[0:6]).strftime('%Y%m%d') outDir = os.path.join(inps.output, d) - if not os.path.exists(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) outName = os.path.join(outDir , d + '.bil') write(ds[i,:,:], outName, 1, 6) # outName = os.path.join(outDir , d + '_snr.bil') @@ -351,8 +350,7 @@ def getChunks(Ny,Nx, chunk_y, chunk_x): def main(iargs=None): inps = cmdLineParse(iargs) - if not os.path.exists(inps.output): - os.makedirs(inps.output) + os.makedirs(inps.output, exist_ok=True) h5File = write2h5(inps) diff --git a/contrib/stack/stripmapStack/masterStackCopy.py b/contrib/stack/stripmapStack/masterStackCopy.py index d5a0252..61fbb5b 100755 --- a/contrib/stack/stripmapStack/masterStackCopy.py +++ b/contrib/stack/stripmapStack/masterStackCopy.py @@ -38,18 +38,14 @@ def main(iargs=None): # making the output direcory is non-existent outDir = os.path.dirname(inps.output_slc) inDir = os.path.dirname(inps.input_slc) - if not os.path.exists(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) # copying shelf files as backup masterShelveDir = os.path.join(outDir, 'masterShelve') slaveShelveDir = os.path.join(outDir, 'slaveShelve') - if not os.path.exists(masterShelveDir): - os.makedirs(masterShelveDir) - - if not os.path.exists(slaveShelveDir): - os.makedirs(slaveShelveDir) + os.makedirs(masterShelveDir, exist_ok=True) + os.makedirs(slaveShelveDir, exist_ok=True) cmd = 'cp '+ inDir + '/data* ' + slaveShelveDir diff --git a/contrib/stack/stripmapStack/prepRawALOS.py b/contrib/stack/stripmapStack/prepRawALOS.py index 46d1440..3629b77 100755 --- a/contrib/stack/stripmapStack/prepRawALOS.py +++ b/contrib/stack/stripmapStack/prepRawALOS.py @@ -130,8 +130,7 @@ def main(iargs=None): # put failed files in a seperate directory if not successflag_unzip: - if not os.path.isdir(os.path.join(workdir,'FAILED_FILES')): - os.makedirs(os.path.join(workdir,'FAILED_FILES')) + os.makedirs(os.path.join(workdir,'FAILED_FILES'), exist_ok=True) os.rename(ALOS_infilefolder,os.path.join(workdir,'FAILED_FILES','.')) else: # check if file needs to be removed or put in archive folder @@ -139,8 +138,7 @@ def main(iargs=None): os.remove(ALOS_infilefolder) print('Deleting: ' + ALOS_infilefolder) else: - if not os.path.isdir(os.path.join(workdir,'ARCHIVED_FILES')): - os.makedirs(os.path.join(workdir,'ARCHIVED_FILES')) + os.makedirs(os.path.join(workdir,'ARCHIVED_FILES'), exist_ok=True) cmd = 'mv ' + ALOS_infilefolder + ' ' + os.path.join(workdir,'ARCHIVED_FILES','.') os.system(cmd) @@ -175,9 +173,8 @@ def main(iargs=None): if successflag: # move the file into the date folder SLC_dir = os.path.join(workdir,imgDate,'') - if not os.path.isdir(SLC_dir): - os.makedirs(SLC_dir) - + os.makedirs(SLC_dir, exist_ok=True) + # check if the folder already exist in that case overwrite it ALOS_folder_out = os.path.join(SLC_dir,os.path.basename(ALOS_folder)) if os.path.isdir(ALOS_folder_out): @@ -200,8 +197,7 @@ def main(iargs=None): if len(AlosFiles)>0: acquisitionDate = os.path.basename(dateDir) slcDir = os.path.join(inps.outputDir, acquisitionDate) - if not os.path.exists(slcDir): - os.makedirs(slcDir) + os.makedirs(slcDir, exist_ok=True) cmd = 'unpackFrame_ALOS_raw.py -i ' + os.path.abspath(dateDir) + ' -o ' + slcDir IMG_files = glob.glob(os.path.join(AlosFiles[0],'IMG*')) if inps.fbd2fbs: diff --git a/contrib/stack/stripmapStack/prepRawCSK.py b/contrib/stack/stripmapStack/prepRawCSK.py index 201b941..3f7ea36 100755 --- a/contrib/stack/stripmapStack/prepRawCSK.py +++ b/contrib/stack/stripmapStack/prepRawCSK.py @@ -96,20 +96,18 @@ def main(iargs=None): # put failed files in a seperate directory if not successflag_unzip: - if not os.path.isdir(os.path.join(workdir,'FAILED_FILES')): - os.makedirs(os.path.join(workdir,'FAILED_FILES')) + os.makedirs(os.path.join(workdir,'FAILED_FILES'), exist_ok=True) os.rename(CSK_infilefolder,os.path.join(workdir,'FAILED_FILES','.')) else: # check if file needs to be removed or put in archive folder - if rmfile: + if rmfile: os.remove(CSK_infilefolder) print('Deleting: ' + CSL_infilefolder) else: - if not os.path.isdir(os.path.join(workdir,'ARCHIVED_FILES')): - os.makedirs(os.path.join(workdir,'ARCHIVED_FILES')) + os.makedirs(os.path.join(workdir,'ARCHIVED_FILES'), exist_ok=True) cmd = 'mv ' + CSK_infilefolder + ' ' + os.path.join(workdir,'ARCHIVED_FILES','.') os.system(cmd) - + # loop over the different CSK folders and make sure the folder names are consistent. # this step is not needed unless the user has manually unzipped data before. CSK_folders = glob.glob(os.path.join(inputDir, 'EL*')) @@ -138,9 +136,8 @@ def main(iargs=None): if successflag: # move the file into the date folder SLC_dir = os.path.join(workdir,imgDate,'') - if not os.path.isdir(SLC_dir): - os.makedirs(SLC_dir) - + os.makedirs(SLC_dir, exist_ok=True) + # check if the folder already exist in that case overwrite it CSK_folder_out = os.path.join(SLC_dir,os.path.basename(CSK_folder)) if os.path.isdir(CSK_folder_out): @@ -176,8 +173,7 @@ def main(iargs=None): if len(CSKFiles)>0: acquisitionDate = os.path.basename(dateDir) slcDir = os.path.join(outputDir, acquisitionDate) - if not os.path.exists(slcDir): - os.makedirs(slcDir) + os.makedirs(slcDir, exist_ok=True) cmd = 'unpackFrame_CSK_raw.py -i ' + os.path.abspath(dateDir) + ' -o ' + slcDir print (cmd) f.write(inps.text_cmd + cmd+'\n') @@ -188,8 +184,7 @@ def main(iargs=None): if len(CSKFiles)>0: acquisitionDate = os.path.basename(dateDir) slcDir = os.path.join(outputDir, acquisitionDate) - if not os.path.exists(slcDir): - os.makedirs(slcDir) + os.makedirs(slcDir, exist_ok=True) cmd = 'unpackFrame_CSK_raw.py -i ' + os.path.abspath(dateDir) + ' -o ' + slcDir if len(CSKFiles) > 1: diff --git a/contrib/stack/stripmapStack/prepSlcALOS2.py b/contrib/stack/stripmapStack/prepSlcALOS2.py index 2d4451a..ad84e5b 100755 --- a/contrib/stack/stripmapStack/prepSlcALOS2.py +++ b/contrib/stack/stripmapStack/prepSlcALOS2.py @@ -130,8 +130,7 @@ def main(iargs=None): # put failed files in a seperate directory if not successflag_unzip: dir_failed = os.path.join(workdir,'FAILED_FILES') - if not os.path.isdir(dir_failed): - os.makedirs(dir_failed) + os.makedirs(dir_failed, exist_ok=True) cmd = 'mv {} {}'.format(fname, dir_failed) os.system(cmd) else: @@ -141,8 +140,7 @@ def main(iargs=None): print('Deleting: ' + fname) else: dir_archive = os.path.join(workdir,'ARCHIVED_FILES') - if not os.path.isdir(dir_archive): - os.makedirs(dir_archive) + os.makedirs(dir_archive, exist_ok=True) cmd = 'mv {} {}'.format(fname, dir_archive) os.system(cmd) @@ -177,9 +175,8 @@ def main(iargs=None): if successflag: # move the file into the date folder SLC_dir = os.path.join(workdir,imgDate,'') - if not os.path.isdir(SLC_dir): - os.makedirs(SLC_dir) - + os.makedirs(SLC_dir, exist_ok=True) + # check if the folder already exist in that case overwrite it ALOS_folder_out = os.path.join(SLC_dir,os.path.basename(ALOS_folder)) if os.path.isdir(ALOS_folder_out): @@ -203,8 +200,7 @@ def main(iargs=None): if len(AlosFiles)>0: acquisitionDate = os.path.basename(dateDir) slcDir = os.path.join(inps.outputDir, acquisitionDate) - if not os.path.exists(slcDir): - os.makedirs(slcDir) + os.makedirs(slcDir, exist_ok=True) cmd = 'unpackFrame_ALOS2.py -i ' + os.path.abspath(dateDir) + ' -o ' + slcDir print (cmd) f.write(inps.text_cmd + cmd+'\n') diff --git a/contrib/stack/stripmapStack/prepSlcRSAT2.py b/contrib/stack/stripmapStack/prepSlcRSAT2.py index 8eed7c8..7d65423 100755 --- a/contrib/stack/stripmapStack/prepSlcRSAT2.py +++ b/contrib/stack/stripmapStack/prepSlcRSAT2.py @@ -104,8 +104,7 @@ def main(iargs=None): # put failed files in a seperate directory if not successflag_unzip: - if not os.path.isdir(os.path.join(workdir,'FAILED_FILES')): - os.makedirs(os.path.join(workdir,'FAILED_FILES')) + os.makedirs(os.path.join(workdir,'FAILED_FILES'), exist_ok=True) os.rename(RSAT2_infilefolder,os.path.join(workdir,'FAILED_FILES','.')) else: # check if file needs to be removed or put in archive folder @@ -113,8 +112,7 @@ def main(iargs=None): os.remove(RSAT2_infilefolder) print('Deleting: ' + RSAT2_infilefolder) else: - if not os.path.isdir(os.path.join(workdir,'ARCHIVED_FILES')): - os.makedirs(os.path.join(workdir,'ARCHIVED_FILES')) + os.makedirs(os.path.join(workdir,'ARCHIVED_FILES'), exist_ok=True) cmd = 'mv ' + RSAT2_infilefolder + ' ' + os.path.join(workdir,'ARCHIVED_FILES','.') os.system(cmd) @@ -166,8 +164,7 @@ def main(iargs=None): if len(RSAT2Files)>0: acquisitionDate = os.path.basename(dateDir) slcDir = os.path.join(outputDir, acquisitionDate) - if not os.path.exists(slcDir): - os.makedirs(slcDir) + os.makedirs(slcDir, exist_ok=True) cmd = 'unpackFrame_RSAT2.py -i ' + os.path.abspath(dateDir) + ' -o ' + slcDir print (cmd) f.write(inps.text_cmd + cmd+'\n') diff --git a/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py b/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py index 95c28d6..5c952d5 100755 --- a/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py +++ b/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py @@ -76,8 +76,7 @@ def main(iargs=None): annFile = file.replace('_s'+inps.segment+'_1x1.slc','')+'.ann' print (annFile) imgDir = os.path.join(outputDir,imgDate) - if not os.path.exists(imgDir): - os.makedirs(imgDir) + os.makedirs(imgDir, exist_ok=True) cmd = 'unpackFrame_UAVSAR.py -i ' + annFile + ' -d '+ inps.dopFile + ' -o ' + imgDir print (cmd) diff --git a/contrib/stack/stripmapStack/refineSlaveTiming.py b/contrib/stack/stripmapStack/refineSlaveTiming.py index 1deffdb..4958f58 100755 --- a/contrib/stack/stripmapStack/refineSlaveTiming.py +++ b/contrib/stack/stripmapStack/refineSlaveTiming.py @@ -180,13 +180,11 @@ def main(iargs=None): os.remove(inps.outfile) outDir = os.path.dirname(inps.outfile) - if not os.path.exists(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) if inps.metamaster is not None: masterShelveDir = os.path.join(outDir, 'masterShelve') - if not os.path.exists(masterShelveDir): - os.makedirs(masterShelveDir) + os.makedirs(masterShelveDir, exist_ok=True) cmd = 'cp ' + inps.metamaster + '/data* ' + masterShelveDir os.system(cmd) @@ -194,8 +192,7 @@ def main(iargs=None): if inps.metaslave is not None: slaveShelveDir = os.path.join(outDir, 'slaveShelve') - if not os.path.exists(slaveShelveDir): - os.makedirs(slaveShelveDir) + os.makedirs(slaveShelveDir, exist_ok=True) cmd = 'cp ' + inps.metaslave + '/data* ' + slaveShelveDir os.system(cmd) diff --git a/contrib/stack/stripmapStack/resampleSlc.py b/contrib/stack/stripmapStack/resampleSlc.py index 7f5eab6..4cb37e6 100755 --- a/contrib/stack/stripmapStack/resampleSlc.py +++ b/contrib/stack/stripmapStack/resampleSlc.py @@ -136,8 +136,7 @@ def resampSlave(burst, offdir, outname, doppler, azpoly, rgpoly, imgOut.setWidth(width) outdir = os.path.dirname(outname) - if not os.path.exists(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) if zero: imgOut.filename = os.path.join(outname) @@ -171,17 +170,13 @@ def main(iargs=None): outfile = os.path.join(inps.coreg,os.path.basename(inps.coreg) + '.slc') outDir = inps.coreg - if not os.path.exists(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) masterShelveDir = os.path.join(outDir, 'masterShelve') slaveShelveDir = os.path.join(outDir, 'slaveShelve') - if not os.path.exists(masterShelveDir): - os.makedirs(masterShelveDir) - - if not os.path.exists(slaveShelveDir): - os.makedirs(slaveShelveDir) + os.makedirs(masterShelveDir, exist_ok=True) + os.makedirs(slaveShelveDir, exist_ok=True) cmd = 'cp '+ inps.slave + '/data* ' + slaveShelveDir print (cmd) diff --git a/contrib/stack/stripmapStack/resampleSlc_subBand.py b/contrib/stack/stripmapStack/resampleSlc_subBand.py index 0704f59..1c71dcd 100755 --- a/contrib/stack/stripmapStack/resampleSlc_subBand.py +++ b/contrib/stack/stripmapStack/resampleSlc_subBand.py @@ -138,8 +138,7 @@ def resampSlave(burst, offdir, outname, doppler, azpoly, rgpoly, imgOut.setWidth(width) outdir = os.path.dirname(outname) - if not os.path.exists(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) if zero: imgOut.filename = os.path.join(outname) @@ -174,17 +173,15 @@ def main(iargs=None): outfile = os.path.join(inps.coreg,os.path.basename(os.path.dirname(inps.coreg))+'.slc') outDir = inps.coreg - if not os.path.exists(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) masterShelveDir = os.path.join(outDir, 'masterShelve') slaveShelveDir = os.path.join(outDir, 'slaveShelve') - if (not os.path.exists(masterShelveDir)) and (inps.master is not None ): - os.makedirs(masterShelveDir) + if inps.master is not None: + os.makedirs(masterShelveDir, exist_ok=True) - if not os.path.exists(slaveShelveDir): - os.makedirs(slaveShelveDir) + os.makedirs(slaveShelveDir, exist_ok=True) cmd = 'cp '+ inps.slave + '/data* ' + slaveShelveDir print (cmd) diff --git a/contrib/stack/stripmapStack/rubberSheeting.py b/contrib/stack/stripmapStack/rubberSheeting.py index 48e2e9b..efa7831 100755 --- a/contrib/stack/stripmapStack/rubberSheeting.py +++ b/contrib/stack/stripmapStack/rubberSheeting.py @@ -252,9 +252,8 @@ def main(iargs=None): ####################### cmd = 'isce2gis.py envi -i ' + inps.geometryAzimuthOffset os.system(cmd) - - if not os.path.exists(inps.outDir): - os.makedirs(inps.outDir) + + os.makedirs(inps.outDir, exist_ok=True) ####################### # masking the dense offsets based on SNR and median filter the masked offsets @@ -286,9 +285,8 @@ def main(iargs=None): ####################### cmd = 'isce2gis.py envi -i ' + inps.geometryRangeOffset os.system(cmd) - - if not os.path.exists(inps.outDir): - os.makedirs(inps.outDir) + + os.makedirs(inps.outDir, exist_ok=True) ####################### # masking the dense offsets based on SNR and median filter the masked offsets diff --git a/contrib/stack/stripmapStack/splitSpectrum.py b/contrib/stack/stripmapStack/splitSpectrum.py index ce87eb9..e3e3e35 100755 --- a/contrib/stack/stripmapStack/splitSpectrum.py +++ b/contrib/stack/stripmapStack/splitSpectrum.py @@ -138,11 +138,8 @@ def main(iargs=None): outDirH = os.path.join(inps.outDir,'HighBand') outDirL = os.path.join(inps.outDir,'LowBand') - if not os.path.exists(outDirH): - os.makedirs(outDirH) - - if not os.path.exists(outDirL): - os.makedirs(outDirL) + os.makedirs(outDirH, exist_ok=True) + os.makedirs(outDirL, exist_ok=True) fullBandSlc = os.path.basename(inps.slc) lowBandSlc = os.path.join(outDirL, fullBandSlc) diff --git a/contrib/stack/stripmapStack/splitSpectrum_multiple.py b/contrib/stack/stripmapStack/splitSpectrum_multiple.py index 18771df..5323af2 100755 --- a/contrib/stack/stripmapStack/splitSpectrum_multiple.py +++ b/contrib/stack/stripmapStack/splitSpectrum_multiple.py @@ -78,12 +78,8 @@ def extractSubBands(slc, frame, dcL, dcH, bw, LowBand, HighBand, width, outDir): outDirH = os.path.join(outDir, HighBand) outDirL = os.path.join(outDir, LowBand) - - if not os.path.exists(outDirH): - os.makedirs(outDirH) - - if not os.path.exists(outDirL): - os.makedirs(outDirL) + os.makedirs(outDirH, exist_ok=True) + os.makedirs(outDirL, exist_ok=True) fullBandSlc = os.path.basename(slc) lowBandSlc = os.path.join(outDirL, fullBandSlc) diff --git a/contrib/stack/stripmapStack/stackStripMap.py b/contrib/stack/stripmapStack/stackStripMap.py index 6e5443a..950ff8e 100755 --- a/contrib/stack/stripmapStack/stackStripMap.py +++ b/contrib/stack/stripmapStack/stackStripMap.py @@ -319,11 +319,9 @@ def main(iargs=None): # getting the acquisitions acquisitionDates, stackMasterDate, slaveDates = get_dates(inps) configDir = os.path.join(inps.workDir,'configs') - if not os.path.exists(configDir): - os.makedirs(configDir) + os.makedirs(configDir, exist_ok=True) runDir = os.path.join(inps.workDir,'run_files') - if not os.path.exists(runDir): - os.makedirs(runDir) + os.makedirs(runDir, exist_ok=True) if inps.sensor.lower() == 'uavsar_stack': # don't try to calculate baselines for UAVSAR_STACK data pairs = selectPairs(inps,stackMasterDate, slaveDates, acquisitionDates,doBaselines=False) diff --git a/contrib/stack/stripmapStack/topo.py b/contrib/stack/stripmapStack/topo.py index cadc6e6..fe74cc8 100755 --- a/contrib/stack/stripmapStack/topo.py +++ b/contrib/stack/stripmapStack/topo.py @@ -59,9 +59,7 @@ def runTopoGPU(info, demImage, dop=None, nativedop=False, legendre=False): ## TODO GPU does not support shadow and layover and local inc file generation full = False - - if not os.path.isdir(info.outdir): - os.makedirs(info.outdir) + os.makedirs(info.outdir, exist_ok=True) # define variables to be used later on r0 = info.rangeFirstSample + ((info.numberRangeLooks - 1)/2) * info.slantRangePixelSpacing @@ -281,8 +279,7 @@ def runTopoCPU(info, demImage, dop=None, from zerodop.topozero import createTopozero from isceobj.Planet.Planet import Planet - if not os.path.isdir(info.outdir): - os.makedirs(info.outdir) + os.makedirs(info.outdir, exist_ok=True) #####Run Topo planet = Planet(pname='Earth') @@ -366,9 +363,7 @@ def runMultilook(in_dir, out_dir, alks, rlks): from iscesys.Parsers.FileParserFactory import createFileParser FP = createFileParser('xml') - if not os.path.isdir(out_dir): - os.makedirs(out_dir) - print('create directory: {}'.format(out_dir)) + os.makedirs(out_dir, exist_ok=True) for fbase in ['hgt', 'incLocal', 'lat', 'lon', 'los', 'shadowMask', 'waterMask']: fname = '{}.rdr'.format(fbase) @@ -407,9 +402,7 @@ def runMultilookGdal(in_dir, out_dir, alks, rlks, in_ext='.rdr', out_ext='.rdr', import gdal # create 'geom_master' directory - if not os.path.isdir(out_dir): - os.makedirs(out_dir) - print('create directory: {}'.format(out_dir)) + os.makedirs(out_dir, exist_ok=True) # multilook files one by one for fbase in fbase_list: diff --git a/contrib/stack/stripmapStack/uncompressFile.py b/contrib/stack/stripmapStack/uncompressFile.py index bbb51c4..eb646c3 100755 --- a/contrib/stack/stripmapStack/uncompressFile.py +++ b/contrib/stack/stripmapStack/uncompressFile.py @@ -84,8 +84,7 @@ def uncompressfile(inputFile,outputDir): # make the output directory if it does not exist - if not os.path.exists(outputDir): - os.makedirs(outputDir) + os.makedirs(outputDir, exist_ok=True) ## loop over the different options, and if fail try the second one diff --git a/contrib/stack/stripmapStack/unpackFrame_ALOS_raw.py b/contrib/stack/stripmapStack/unpackFrame_ALOS_raw.py index 89ad9c5..7a06199 100755 --- a/contrib/stack/stripmapStack/unpackFrame_ALOS_raw.py +++ b/contrib/stack/stripmapStack/unpackFrame_ALOS_raw.py @@ -38,8 +38,7 @@ def unpack(hdf5, slcname, multiple=False): ''' Unpack HDF5 to binary SLC file. ''' - if not os.path.isdir(slcname): - os.makedirs(slcname) + os.makedirs(slcname, exist_ok=True) date = os.path.basename(slcname) obj = createSensor('ALOS') diff --git a/contrib/stack/stripmapStack/unwrap.py b/contrib/stack/stripmapStack/unwrap.py index 77080ce..f81d43b 100755 --- a/contrib/stack/stripmapStack/unwrap.py +++ b/contrib/stack/stripmapStack/unwrap.py @@ -305,8 +305,7 @@ def main(iargs=None): if inps.method != 'icu': masterShelveDir = os.path.join(interferogramDir , 'masterShelve') - if not os.path.exists(masterShelveDir): - os.makedirs(masterShelveDir) + os.makedirs(masterShelveDir, exist_ok=True) inps.master = os.path.dirname(inps.master) cpCmd='cp ' + os.path.join(inps.master, 'data*') +' '+masterShelveDir diff --git a/contrib/stack/topsStack/MaskAndFilter.py b/contrib/stack/topsStack/MaskAndFilter.py index 4c2208f..253950f 100755 --- a/contrib/stack/topsStack/MaskAndFilter.py +++ b/contrib/stack/topsStack/MaskAndFilter.py @@ -203,9 +203,8 @@ def main(iargs=None): ####################### #cmd = 'isce2gis.py envi -i ' + inps.geometryAzimuthOffset #os.system(cmd) - - if not os.path.exists(inps.outDir): - os.makedirs(inps.outDir) + + os.makedirs(inps.outDir, exist_ok=True) ####################### # masking the dense offsets based on SNR and median filter the masked offsets @@ -230,9 +229,8 @@ def main(iargs=None): ####################### #cmd = 'isce2gis.py envi -i ' + inps.geometryRangeOffset #os.system(cmd) - - if not os.path.exists(inps.outDir): - os.makedirs(inps.outDir) + + os.makedirs(inps.outDir, exist_ok=True) ####################### # masking the dense offsets based on SNR and median filter the masked offsets diff --git a/contrib/stack/topsStack/Stack.py b/contrib/stack/topsStack/Stack.py index a9e5238..fc8ecb6 100644 --- a/contrib/stack/topsStack/Stack.py +++ b/contrib/stack/topsStack/Stack.py @@ -267,22 +267,19 @@ class run(object): for k in inps.__dict__.keys(): setattr(self, k, inps.__dict__[k]) self.runDir = os.path.join(self.work_dir, 'run_files') - if not os.path.exists(self.runDir): - os.makedirs(self.runDir) + os.makedirs(self.runDir, exist_ok=True) self.run_outname = os.path.join(self.runDir, runName) print ('writing ', self.run_outname) self.config_path = os.path.join(self.work_dir,'configs') - if not os.path.exists(self.config_path): - os.makedirs(self.config_path) + os.makedirs(self.config_path, exist_ok=True) self.runf= open(self.run_outname,'w') def unpackSLC(self, acquisitionDates, safe_dict): swath_path = self.work_dir - if not os.path.exists(self.config_path): - os.makedirs(self.config_path) + os.makedirs(self.config_path, exist_ok=True) for slcdate in acquisitionDates: configName = os.path.join(self.config_path,'config_'+slcdate) @@ -303,8 +300,7 @@ class run(object): def unpackStackMasterSLC(self, safe_dict): swath_path = self.work_dir - if not os.path.exists(self.config_path): - os.makedirs(self.config_path) + os.makedirs(self.config_path, exist_ok=True) configName = os.path.join(self.config_path,'config_master') configObj = config(configName) configObj.configure(self) diff --git a/contrib/stack/topsStack/baselineGrid.py b/contrib/stack/topsStack/baselineGrid.py index 3a38a83..178ce90 100755 --- a/contrib/stack/topsStack/baselineGrid.py +++ b/contrib/stack/topsStack/baselineGrid.py @@ -73,8 +73,7 @@ def main(iargs=None): #catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) baselineDir = os.path.dirname(inps.baselineFile) if baselineDir != '': - if not os.path.exists(baselineDir): - os.makedirs(baselineDir) + os.makedirs(baselineDir, exist_ok=True) masterswaths = [] slaveswaths = [] diff --git a/contrib/stack/topsStack/computeBaseline.py b/contrib/stack/topsStack/computeBaseline.py index be79244..498401d 100755 --- a/contrib/stack/topsStack/computeBaseline.py +++ b/contrib/stack/topsStack/computeBaseline.py @@ -54,8 +54,7 @@ def main(iargs=None): #catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name) baselineDir = os.path.dirname(inps.baselineFile) - if not os.path.exists(baselineDir): - os.makedirs(baselineDir) + os.makedirs(baselineDir, exist_ok=True) f = open(inps.baselineFile , 'w') diff --git a/contrib/stack/topsStack/cuDenseOffsets.py b/contrib/stack/topsStack/cuDenseOffsets.py index 2220ea5..1d7addc 100755 --- a/contrib/stack/topsStack/cuDenseOffsets.py +++ b/contrib/stack/topsStack/cuDenseOffsets.py @@ -303,8 +303,7 @@ def main(iargs=None): inps = cmdLineParse(iargs) outDir = os.path.dirname(inps.outprefix) print(inps.outprefix) - if not os.path.exists(outDir): - os.makedirs(outDir) + os.makedirs(outDir, exist_ok=True) objOffset = estimateOffsetField(inps.master, inps.slave, inps) diff --git a/contrib/stack/topsStack/denseOffsets.py b/contrib/stack/topsStack/denseOffsets.py index 7c48b4a..f38e68e 100755 --- a/contrib/stack/topsStack/denseOffsets.py +++ b/contrib/stack/topsStack/denseOffsets.py @@ -136,9 +136,8 @@ def main(iargs=None): inps = cmdLineParse(iargs) outDir = os.path.dirname(inps.outprefix) - if not os.path.exists(outDir): - os.makedirs(outDir) - + os.makedirs(outDir, exist_ok=True) + objOffset = estimateOffsetField(inps.master, inps.slave, inps) diff --git a/contrib/stack/topsStack/estimateAzimuthMisreg.py b/contrib/stack/topsStack/estimateAzimuthMisreg.py index a0b4b00..63aed81 100755 --- a/contrib/stack/topsStack/estimateAzimuthMisreg.py +++ b/contrib/stack/topsStack/estimateAzimuthMisreg.py @@ -175,8 +175,7 @@ def main(iargs=None): # slaveTimingCorrection = medianval * master.bursts[0].azimuthTimeInterval outputDir = os.path.dirname(inps.output) - if not os.path.exists(outputDir): - os.makedirs(outputDir) + os.makedirs(outputDir, exist_ok=True) with open(inps.output, 'w') as f: f.write('median : '+str(medianval) +'\n') diff --git a/contrib/stack/topsStack/estimateRangeMisreg.py b/contrib/stack/topsStack/estimateRangeMisreg.py index b178cc3..b4607f0 100755 --- a/contrib/stack/topsStack/estimateRangeMisreg.py +++ b/contrib/stack/topsStack/estimateRangeMisreg.py @@ -209,8 +209,7 @@ def main(iargs=None): center = 0.5*(bins[:-1] + bins[1:]) outputDir = os.path.dirname(inps.output) - if not os.path.exists(outputDir): - os.makedirs(outputDir) + os.makedirs(outputDir, exist_ok=True) try: import matplotlib as mpl diff --git a/contrib/stack/topsStack/extractCommonValidRegion.py b/contrib/stack/topsStack/extractCommonValidRegion.py index 2f36d4e..db21886 100755 --- a/contrib/stack/topsStack/extractCommonValidRegion.py +++ b/contrib/stack/topsStack/extractCommonValidRegion.py @@ -99,8 +99,7 @@ def main(iargs=None): print('writing ', os.path.join(stackDir , 'IW{0}.xml'.format(swath))) ut.saveProduct(topMaster, os.path.join(stackDir , 'IW{0}.xml'.format(swath))) - if not os.path.exists(os.path.join(stackDir ,'IW{0}'.format(swath))): - os.makedirs(os.path.join(stackDir ,'IW{0}'.format(swath))) + os.makedirs(os.path.join(stackDir ,'IW{0}'.format(swath)), exist_ok=True) if __name__ == '__main__': diff --git a/contrib/stack/topsStack/generateIgram.py b/contrib/stack/topsStack/generateIgram.py index 05e54c1..c44cf84 100755 --- a/contrib/stack/topsStack/generateIgram.py +++ b/contrib/stack/topsStack/generateIgram.py @@ -125,12 +125,11 @@ def main(iargs=None): for swath in swathList: IWstr = 'IW{0}'.format(swath) if inps.overlap: - ifgdir = os.path.join(inps.interferogram, 'overlap', 'IW{0}'.format(swath)) + ifgdir = os.path.join(inps.interferogram, 'overlap', IWstr) else: - ifgdir = os.path.join(inps.interferogram, 'IW{0}'.format(swath)) - - if not os.path.exists(ifgdir): - os.makedirs(ifgdir) + ifgdir = os.path.join(inps.interferogram, IWstr) + + os.makedirs(ifgdir, exist_ok=True) ####Load relevant products if inps.overlap: diff --git a/contrib/stack/topsStack/geo2rdr.py b/contrib/stack/topsStack/geo2rdr.py index 672e51a..11a0292 100644 --- a/contrib/stack/topsStack/geo2rdr.py +++ b/contrib/stack/topsStack/geo2rdr.py @@ -232,8 +232,7 @@ def main(iargs=None): else: outdir = os.path.join(inps.coregdir, 'IW{0}'.format(swath)) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) if os.path.exists(str(inps.misreg_az)): with open(inps.misreg_az, 'r') as f: diff --git a/contrib/stack/topsStack/invertMisreg.py b/contrib/stack/topsStack/invertMisreg.py index b709ce6..6ff1c4f 100755 --- a/contrib/stack/topsStack/invertMisreg.py +++ b/contrib/stack/topsStack/invertMisreg.py @@ -107,8 +107,7 @@ def design_matrix(overlapDirs): def main(iargs=None): inps = cmdLineParse(iargs) - if not os.path.exists(inps.output): - os.makedirs(inps.output) + os.makedirs(inps.output, exist_ok=True) overlapPairs = glob.glob(os.path.join(inps.input,'*/*.txt')) diff --git a/contrib/stack/topsStack/mergeBursts.py b/contrib/stack/topsStack/mergeBursts.py index a0b02ac..9e5033f 100755 --- a/contrib/stack/topsStack/mergeBursts.py +++ b/contrib/stack/topsStack/mergeBursts.py @@ -391,7 +391,7 @@ def main(iargs=None): mergedir = os.path.dirname(inps.outfile) os.makedirs(mergedir, exist_ok=True) - + suffix = '.full' if (inps.numberRangeLooks == 1) and (inps.numberAzimuthLooks==1): suffix='' diff --git a/contrib/stack/topsStack/overlap_withDEM.py b/contrib/stack/topsStack/overlap_withDEM.py index 7e8ed2f..b3c17af 100644 --- a/contrib/stack/topsStack/overlap_withDEM.py +++ b/contrib/stack/topsStack/overlap_withDEM.py @@ -278,8 +278,7 @@ def main(iargs=None): ####Create ESD output directory esddir = os.path.join(inps.overlap, IWstr) - if not os.path.isdir(esddir): - os.makedirs(esddir) + os.makedirs(esddir, exist_ok=True) ####Overlap offsets directory masterOffdir = os.path.join(inps.master, IWstr) diff --git a/contrib/stack/topsStack/resamp_withCarrier.py b/contrib/stack/topsStack/resamp_withCarrier.py index 83f3f71..eb26039 100755 --- a/contrib/stack/topsStack/resamp_withCarrier.py +++ b/contrib/stack/topsStack/resamp_withCarrier.py @@ -140,8 +140,7 @@ def main(iargs=None): else: outdir = os.path.join(inps.coreg, inps.overlapDir, 'IW{0}'.format(swath)) offdir = os.path.join(inps.coreg, inps.overlapDir, 'IW{0}'.format(swath)) - if not os.path.isdir(outdir): - os.makedirs(outdir) + os.makedirs(outdir, exist_ok=True) ####Indices w.r.t master diff --git a/contrib/stack/topsStack/topo.py b/contrib/stack/topsStack/topo.py index 3b4148d..0f88cf9 100755 --- a/contrib/stack/topsStack/topo.py +++ b/contrib/stack/topsStack/topo.py @@ -92,11 +92,7 @@ def main(iargs=None): ###Check if geometry directory already exists. dirname = os.path.join(inps.geom_masterDir, 'IW{0}'.format(swath)) - - if os.path.isdir(dirname): - print('Geometry directory {0} already exists.'.format(dirname)) - else: - os.makedirs(dirname) + os.makedirs(dirname, exist_ok=True) for ind in range(master.numberOfBursts): inputs.append((dirname, demImage, master, ind))