Skip to content

Commit a8cf487

Browse files
committed
plot fixes
1 parent 8c7f380 commit a8cf487

File tree

8 files changed

+1071
-1034
lines changed

8 files changed

+1071
-1034
lines changed

hypernets_processor/data_io/format/variables_SWIR.py

Lines changed: 0 additions & 1010 deletions
This file was deleted.

hypernets_processor/etc/processor_2.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ write_l2a: True
4444

4545
plot_l0: False
4646
plot_l1a: True
47-
plot_l1a_diff: False
47+
plot_l1a_diff: True
4848
plot_l1b: True
4949
plot_l1c: True
5050
plot_l2a: True

hypernets_processor/interpolation/measurement_functions/water_network_interpolation.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,34 @@
11

22

33
import scipy.interpolate
4+
import numpy as np
45

56
class WaterNetworkInterpolationLinear:
67
def function(self,output_time,times,variables):
78
'''
89
This function implements the measurement function.
910
Each of the arguments can be either a scalar or a vector (1D-array).
1011
'''
11-
print(times.shape,variables.shape)
12-
irradiance_intfunc=scipy.interpolate.interp1d(times,variables, fill_value="extrapolate")
13-
14-
return irradiance_intfunc(output_time)
12+
if hasattr(output_time,'__len__'):
13+
out = np.empty((len(variables),len(output_time)))
14+
for i in range(len(output_time)):
15+
if output_time[i] > max(times):
16+
out[:,i] = variables[:,times == max(times)][:,0]
17+
elif output_time[i] < min(times):
18+
out[:,i] = variables[:,times == min(times)][:,0]
19+
else:
20+
irradiance_intfunc = scipy.interpolate.interp1d(times,
21+
variables)
22+
out[:,i] = irradiance_intfunc(output_time[i])
23+
return out
24+
else:
25+
if output_time > max(times):
26+
return variables[:,times == max(times)][:,0]
27+
elif output_time < min(times):
28+
return variables[:,times == min(times)][:,0]
29+
else:
30+
irradiance_intfunc = scipy.interpolate.interp1d(times,variables)
31+
return irradiance_intfunc(output_time)
1532

1633
@staticmethod
1734
def get_name():

hypernets_processor/main_processor_outdoortest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,12 @@ def run(self):
202202
# sequence_path)
203203
# self.context.logger.debug("Done")
204204

205+
l0_rad["digital_number"].values[:,0]=l0_rad["digital_number"].values[:,0]/1.5
206+
l0_irr["digital_number"].values[:,0]=l0_irr["digital_number"].values[:,0]/1.5
207+
l0_swir_rad["digital_number"].values[:,0]=l0_swir_rad["digital_number"].values[:,0]/1.5
208+
l0_swir_irr["digital_number"].values[:,0]=l0_swir_irr["digital_number"].values[:,0]/1.5
209+
210+
205211
#Calibrate to L1a
206212
self.context.logger.debug("Processing to L1a...")
207213
L1a_rad = cal.calibrate_l1a("radiance",l0_rad,l0_bla)

hypernets_processor/plotting/plotting.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,14 @@ def plot_diff_scans(self,measurandstring,dataset,dataset_avg=None):
7676
mask=DatasetUtil.unpack_flags(dataset["quality_flag"])["outliers"]
7777
if dataset_avg is None:
7878
ids_used = np.where((dataset['series_id'] == series_id[i]) & np.invert(
79-
DatasetUtil.unpack_flags(dataset["quality_flag"])["outliers"]))
79+
DatasetUtil.unpack_flags(dataset["quality_flag"])["outliers"]))[0]
8080
ydata_subset_used = dataset[measurandstring].values[:,ids_used]
81-
avgs=np.tile(np.mean(ydata_subset_used,axis=1)[...,None],len(ydata_subset[0]))
81+
avgs=np.tile(np.mean(ydata_subset_used,axis=1)[...,None],len(ids_used))
82+
mask=mask[ids_used]
8283
else:
8384
avg_ids = np.where((dataset_avg['series_id'] == series_id[i]))[0]
84-
avgs = np.tile(dataset_avg[measurandstring].values[:,avg_ids],len(ydata_subset[0]))
85+
avgs = np.tile(dataset_avg[measurandstring].values[:,avg_ids],len(avg_ids))
86+
mask=mask[avg_ids]
8587

8688
self.plot_variable("relative difference",plotpath,dataset["wavelength"].values,
8789
(ydata_subset-avgs)/avgs,ylim=[-0.2,0.2],mask=mask)
@@ -146,15 +148,16 @@ def plot_reflectance(self,plotpath,xdata,ydata,labels=None):
146148

147149
def plot_other_var(self,measurandstring,plotpath,xdata,ydata,labels=None,ylim=None,mask=None):
148150
fig1,ax1 = plt.subplots(figsize=(10,5))
149-
if labels is None and mask is None:
151+
if labels is None and mask is None or len(np.where(mask))==0:
150152
ax1.plot(xdata,ydata,alpha=0.3)
151153
elif mask is None:
152154
for i in range(len(labels)):
153155
ax1.plot(xdata,ydata[:,i],label=labels[i],alpha=0.3)
154156
else:
155-
print(mask.shape,ydata[:,np.where(mask)].shape)
156-
ax1.plot(xdata,ydata[:,np.where(mask)][:,0,0],label="masked",alpha=0.3)
157-
ax1.plot(xdata,ydata[:,np.where(np.invert(mask))][:,0,0],label="used",alpha=0.3)
157+
print(ydata.shape)
158+
print(ydata[:,np.where(np.invert(mask))].shape,ydata[:,np.where(np.invert(mask))][:,0].shape)
159+
ax1.plot(xdata,ydata[:,np.where(mask)].reshape((len(ydata),len(np.where(mask)[0]))),label="masked",alpha=0.3)
160+
ax1.plot(xdata,ydata[:,np.where(np.invert(mask))].reshape((len(ydata),len(np.where(np.invert(mask))[0]))),label="used",alpha=0.3)
158161

159162
if labels is not None or mask is not None:
160163
ax1.legend()

hypernets_processor/rhymer/rhymer/hypstar/rhymer_hypstar.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,18 +189,18 @@ def cycleparse(self, rad, irr):
189189
if lu.scan[lu['quality_flag'] <= 0].count() < nbrlu:
190190

191191
for i in range(len(lu["scan"])):
192-
lu["quality_flag"][lu["scan"]==i] = du.set_flag(lu["quality_flag"][lu["scan"] == i], "min_nbrlu")
192+
lu["quality_flag"][lu["scan"]==i] = du.set_flag(lu["quality_flag"][lu["scan"] == i], "outliers")
193193
self.context.logger.info(
194194
"No enough upwelling radiance data for sequence {}".format(lu.attrs['sequence_id']))
195195
if lsky.scan[lsky['quality_flag'] <= 1].count() < nbrlsky:
196196
for i in range(len(lsky["scan"])):
197-
lsky["quality_flag"][lsky["scan"] == i] = du.set_flag(lsky["quality_flag"][lsky["scan"] == i], "min_nbrlsky")
197+
lsky["quality_flag"][lsky["scan"] == i] = du.set_flag(lsky["quality_flag"][lsky["scan"] == i], "outliers")
198198
self.context.logger.info(
199199
"No enough downwelling radiance data for sequence {}".format(lsky.attrs['sequence_id']))
200200
if irr.scan[irr['quality_flag'] <= 1].count() < nbred:
201201
for i in range(len(irr["scan"])):
202202
irr["quality_flag"][irr["scan"] == i] = du.set_flag(irr["quality_flag"][irr["scan"] == i],
203-
"min_nbred")
203+
"outliers")
204204
self.context.logger.info(
205205
"No enough downwelling irradiance data for sequence {}".format(irr.attrs['sequence_id']))
206206

hypernets_processor/surface_reflectance/surface_reflectance.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,21 @@ def process_l1d(self, dataset_l1c):
4444
dataset_l1d = self.templ.l1d_from_l1c_dataset(dataset_l1c)
4545

4646
# add required correction factors here - but better to add them in the function factory???
47-
epsilon, failSimil = self.rh.get_epsilon(dataset_l1d["reflectance_nosc"].values,
48-
dataset_l1d["wavelength"].values)
47+
epsilon, failSimil = self.rh.get_epsilon(dataset_l1c["reflectance_nosc"].values,
48+
dataset_l1c["wavelength"].values)
4949
dataset_l1d["epsilon"].values = epsilon
5050

5151
dataset_l1d["quality_flag"][dataset_l1d["scan"] == [i for i, x in enumerate(failSimil) if x]] = DatasetUtil.set_flag(
5252
dataset_l1d["quality_flag"][dataset_l1d["scan"] == [i for i, x in enumerate(failSimil) if x]],
5353
"simil_fail")
5454

5555
input_vars = l1ctol1d_function.get_argument_names()
56-
input_qty = self.find_input(input_vars, dataset_l1c)
57-
u_random_input_qty = self.find_u_random_input(input_vars, dataset_l1c)
56+
input_qty = self.find_input(input_vars, dataset_l1d)
57+
u_random_input_qty = self.find_u_random_input(input_vars, dataset_l1d)
5858
u_systematic_input_qty,cov_systematic_input_qty = \
59-
self.find_u_systematic_input(input_vars,dataset_l1c)
59+
self.find_u_systematic_input(input_vars,dataset_l1d)
60+
61+
print("inp",input_qty[4],u_random_input_qty[4],u_systematic_input_qty[4],cov_systematic_input_qty[4])
6062

6163
dataset_l1d = self.process_measurement_function(
6264
["water_leaving_radiance", "reflectance_nosc", "reflectance"],
@@ -191,8 +193,8 @@ def find_u_systematic_input(self, variables, dataset):
191193
covs_indep = []
192194
for var in variables:
193195
try:
194-
inputs.append(dataset["u_systematic_indep_" + var].values)
195196
covs_indep.append(punpy.convert_corr_to_cov(dataset["corr_systematic_indep_" + var].values,dataset["u_systematic_indep_" + var].values))
197+
inputs.append(dataset["u_systematic_indep_" + var].values)
196198
except:
197199
inputs.append(None)
198200
covs_indep.append(None)
@@ -223,9 +225,6 @@ def process_measurement_function(self, measurandstrings, dataset, measurement_fu
223225
output_vars=len(measurandstrings))
224226

225227
if len(measurandstrings) > 1:
226-
print(input_quantities[0].shape,u_systematic_input_quantities[0].shape)
227-
print(input_quantities[1].shape)
228-
print(u_systematic_input_quantities[1].shape)
229228
u_systematic_measurand, corr_systematic_measurand, corr_between = \
230229
self.prop.propagate_systematic(measurement_function,
231230
input_quantities,

0 commit comments

Comments
 (0)