From b8f8199001469c894453304fec4ca12eb0c7bbdf Mon Sep 17 00:00:00 2001 From: shiroma Date: Mon, 29 Jul 2019 09:21:28 -0700 Subject: [PATCH 1/2] - fixing issues with reference UTC (when it includes microseconds); - fixing the cast from complex32 to complex64 (some versions require complex64 casting through a "sink" - with statement)' --- components/isceobj/Sensor/UAVSAR_HDF5_SLC.py | 34 +++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py b/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py index 6323f5b..d29488f 100755 --- a/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py +++ b/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py @@ -80,6 +80,16 @@ POLARIZATION = Component.Parameter( doc='polarization channel of the UAVSAR slc file to be processed' ) +class DummySink(object): + def write(self, data): + pass + + def __enter__(self): + return self + + def __exit__(*x): + pass + from .Sensor import Sensor class UAVSAR_HDF5_SLC(Sensor): """ @@ -188,7 +198,10 @@ class UAVSAR_HDF5_SLC(Sensor): referenceUTC = file['/science/LSAR/SLC/swaths/zeroDopplerTime'].attrs['units'].decode('utf-8') referenceUTC = referenceUTC.replace('seconds since ','') - referenceUTC = datetime.datetime.strptime(referenceUTC,'%Y-%m-%d %H:%M:%S') + format_str = '%Y-%m-%d %H:%M:%S' + if '.' in referenceUTC: + format_str += '.%f' + referenceUTC = datetime.datetime.strptime(referenceUTC, format_str) relStart = file['/science/LSAR/SLC/swaths/zeroDopplerTime'][0] relEnd = file['/science/LSAR/SLC/swaths/zeroDopplerTime'][-1] @@ -222,7 +235,10 @@ class UAVSAR_HDF5_SLC(Sensor): referenceUTC = file['/science/LSAR/SLC/swaths/zeroDopplerTime'].attrs['units'].decode('utf-8') referenceUTC = referenceUTC.replace('seconds since ','') - t0 = datetime.datetime.strptime(referenceUTC,'%Y-%m-%d %H:%M:%S') + format_str = '%Y-%m-%d %H:%M:%S' + if '.' in referenceUTC: + format_str += '.%f' + t0 = datetime.datetime.strptime(referenceUTC, format_str) t = file['/science/LSAR/SLC/metadata/orbit/time'] position = file['/science/LSAR/SLC/metadata/orbit/position'] velocity = file['/science/LSAR/SLC/metadata/orbit/velocity'] @@ -247,9 +263,17 @@ class UAVSAR_HDF5_SLC(Sensor): ds = fid['/science/LSAR/SLC/swaths/' + self.frequency + '/' + self.polarization] nLines = ds.shape[0] - with open(self.output, 'wb') as fout: - for ii in range(nLines): - ds[ii,:].astype(np.complex64).tofile(fout) + # if TypeError is raised (e.g. complex32), force casting to complex64 + try: + _ = ds.dtype + sink = DummySink() + except TypeError: + sink = ds.astype(np.complex64) + + with sink: + with open(self.output, 'wb') as fout: + for ii in range(nLines): + ds[ii, :].tofile(fout) fid.close() From 20eecc127d4f17f443684ce982151d76980d8e47 Mon Sep 17 00:00:00 2001 From: shiroma Date: Mon, 29 Jul 2019 14:46:51 -0700 Subject: [PATCH 2/2] Updates the sensor: UAVSAR_HDF5_SLC - fixes issues with reference UTC (when it includes microseconds); - updates cast from complex32 to complex64 (some versions require complex64 casting through a "sink" - with statement). --- components/isceobj/Sensor/UAVSAR_HDF5_SLC.py | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py b/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py index d29488f..ffac857 100755 --- a/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py +++ b/components/isceobj/Sensor/UAVSAR_HDF5_SLC.py @@ -80,16 +80,6 @@ POLARIZATION = Component.Parameter( doc='polarization channel of the UAVSAR slc file to be processed' ) -class DummySink(object): - def write(self, data): - pass - - def __enter__(self): - return self - - def __exit__(*x): - pass - from .Sensor import Sensor class UAVSAR_HDF5_SLC(Sensor): """ @@ -263,14 +253,8 @@ class UAVSAR_HDF5_SLC(Sensor): ds = fid['/science/LSAR/SLC/swaths/' + self.frequency + '/' + self.polarization] nLines = ds.shape[0] - # if TypeError is raised (e.g. complex32), force casting to complex64 - try: - _ = ds.dtype - sink = DummySink() - except TypeError: - sink = ds.astype(np.complex64) - - with sink: + # force casting to complex64 + with ds.astype(np.complex64): with open(self.output, 'wb') as fout: for ii in range(nLines): ds[ii, :].tofile(fout)