From 537bae03d958fd7b1aee216bd7700f6f07f62da6 Mon Sep 17 00:00:00 2001 From: Ryan Burns Date: Sat, 14 Dec 2019 12:20:41 -0800 Subject: [PATCH] Hide rubbersheeting scipy/astropy imports Recent rubbersheeting changes added scipy and astropy imports which are not otherwise needed. Due to isce2's eager import behavior this causes errors when using unrelated functionality. We can fix this by tucking these imports away inside their function definitions. To reproduce: `python3 -c "import isce; from stripmapApp import Insar"` (without scipy/astropy installed) --- .../isceobj/StripmapProc/runRubbersheet.py | 6 +++++- .../StripmapProc/runRubbersheetAzimuth.py | 15 ++++++++++---- .../StripmapProc/runRubbersheetRange.py | 20 ++++++++++++++----- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/components/isceobj/StripmapProc/runRubbersheet.py b/components/isceobj/StripmapProc/runRubbersheet.py index b16a58e..ea417bd 100644 --- a/components/isceobj/StripmapProc/runRubbersheet.py +++ b/components/isceobj/StripmapProc/runRubbersheet.py @@ -6,7 +6,6 @@ import isce import isceobj from osgeo import gdal -from scipy import ndimage import numpy as np import os @@ -24,6 +23,9 @@ def fill(data, invalid=None): Output: Return a filled array. """ + + from scipy import ndimage + if invalid is None: invalid = np.isnan(data) ind = ndimage.distance_transform_edt(invalid, @@ -35,6 +37,8 @@ def fill(data, invalid=None): def mask_filter(denseOffsetFile, snrFile, band, snrThreshold, filterSize, outName): #masking and Filtering + from scipy import ndimage + ##Read in the offset file ds = gdal.Open(denseOffsetFile + '.vrt', gdal.GA_ReadOnly) Offset = ds.GetRasterBand(1).ReadAsArray() diff --git a/components/isceobj/StripmapProc/runRubbersheetAzimuth.py b/components/isceobj/StripmapProc/runRubbersheetAzimuth.py index 75583f1..43ee4a8 100755 --- a/components/isceobj/StripmapProc/runRubbersheetAzimuth.py +++ b/components/isceobj/StripmapProc/runRubbersheetAzimuth.py @@ -9,14 +9,14 @@ import isce import isceobj from osgeo import gdal -from scipy import ndimage -from astropy.convolution import convolve import numpy as np import os def mask_filterNoSNR(denseOffsetFile,filterSize,outName): # Masking the offsets with a data-based approach - + + from scipy import ndimage + # Open the offsets ds = gdal.Open(denseOffsetFile+'.vrt',gdal.GA_ReadOnly) off_az = ds.GetRasterBand(1).ReadAsArray() @@ -79,6 +79,9 @@ def mask_filterNoSNR(denseOffsetFile,filterSize,outName): def off_masking(off,filterSize,thre=2): + + from scipy import ndimage + # Define the mask to fill the offsets vram = ndimage.median_filter(off.real, filterSize) vazm = ndimage.median_filter(off.imag, filterSize) @@ -112,6 +115,8 @@ def fill(data, invalid=None): def mask_filter(denseOffsetFile, snrFile, band, snrThreshold, filterSize, outName): #masking and Filtering + from scipy import ndimage + ##Read in the offset file ds = gdal.Open(denseOffsetFile + '.vrt', gdal.GA_ReadOnly) Offset = ds.GetRasterBand(band).ReadAsArray() @@ -154,7 +159,9 @@ def mask_filter(denseOffsetFile, snrFile, band, snrThreshold, filterSize, outNam return None def fill_with_smoothed(off,filterSize): - + + from astropy.convolution import convolve + off_2filt=np.copy(off) kernel = np.ones((filterSize,filterSize),np.float32)/(filterSize*filterSize) loop = 0 diff --git a/components/isceobj/StripmapProc/runRubbersheetRange.py b/components/isceobj/StripmapProc/runRubbersheetRange.py index 2f1ab3f..04fc2a2 100755 --- a/components/isceobj/StripmapProc/runRubbersheetRange.py +++ b/components/isceobj/StripmapProc/runRubbersheetRange.py @@ -9,15 +9,14 @@ import isce import isceobj from osgeo import gdal -from scipy import ndimage import numpy as np import os -from astropy.convolution import convolve - def mask_filterNoSNR(denseOffsetFile,filterSize,outName): # Masking the offsets with a data-based approach - + + from scipy import ndimage + # Open the offsets ds = gdal.Open(denseOffsetFile+'.vrt',gdal.GA_ReadOnly) off_az = ds.GetRasterBand(1).ReadAsArray() @@ -78,6 +77,9 @@ def mask_filterNoSNR(denseOffsetFile,filterSize,outName): return def off_masking(off,filterSize,thre=2): + + from scipy import ndimage + vram = ndimage.median_filter(off.real, filterSize) vazm = ndimage.median_filter(off.imag, filterSize) @@ -100,6 +102,8 @@ def fill(data, invalid=None): Output: Return a filled array. """ + from scipy import ndimage + if invalid is None: invalid = np.isnan(data) ind = ndimage.distance_transform_edt(invalid, @@ -108,7 +112,9 @@ def fill(data, invalid=None): return data[tuple(ind)] def fill_with_smoothed(off,filterSize): - + + from astropy.convolution import convolve + off_2filt=np.copy(off) kernel = np.ones((filterSize,filterSize),np.float32)/(filterSize*filterSize) loop = 0 @@ -131,6 +137,8 @@ def fill_with_smoothed(off,filterSize): def mask_filter(denseOffsetFile, snrFile, band, snrThreshold, filterSize, outName): #masking and Filtering + from scipy import ndimage + ##Read in the offset file ds = gdal.Open(denseOffsetFile + '.vrt', gdal.GA_ReadOnly) Offset = ds.GetRasterBand(band).ReadAsArray() @@ -236,6 +244,8 @@ def resampleOffset(maskedFiltOffset, geometryOffset, outName): def runRubbersheetRange(self): + from scipy import ndimage + if not self.doRubbersheetingRange: print('Rubber sheeting in azimuth not requested ... skipping') return