Skip to content

Commit fe0d8a3

Browse files
committed
final edits for v 0.1
1 parent 95738af commit fe0d8a3

File tree

12 files changed

+488
-46
lines changed

12 files changed

+488
-46
lines changed

hypernets_processor/calibration/calibrate.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ def calibrate_l1a(self, measurandstring, dataset_l0, dataset_l0_bla, swir=False)
3838
self.context.logger.error("the measurandstring needs to be either 'radiance' or 'irradiance")
3939
exit()
4040

41+
42+
if self.context.get_config_value("plot_l0"):
43+
if swir:
44+
dataset_l0.attrs['product_name'] = dataset_l0.attrs[
45+
'product_name']+"_SWIR"
46+
self.plot.plot_scans_in_series("digital_number",dataset_l0)
47+
4148
calibrate_function = self._measurement_function_factory.get_measurement_function(
4249
self.context.get_config_value("measurement_function_calibrate"))
4350
input_vars = calibrate_function.get_argument_names()

hypernets_processor/data_io/template_util.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,8 @@ def propagate_values(target_ds, source_ds, exclude=None):
210210

211211
# Propagate data
212212
for common_variable_name in common_variable_names:
213-
if not "radiance" in common_variable_name and not "irradiance" in common_variable_name:
214-
if target_ds[common_variable_name].shape == source_ds[common_variable_name].shape:
215-
target_ds[common_variable_name].values = source_ds[common_variable_name].values
213+
if target_ds[common_variable_name].shape == source_ds[common_variable_name].shape:
214+
target_ds[common_variable_name].values = source_ds[common_variable_name].values
216215

217216
# todo - add method to propagate common unpopulated metadata
218217

hypernets_processor/etc/processor.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[Processor]
22
archive_directory: C:\Users\pdv\PycharmProjects\hypernets_processor\hypernets_processor\out\
33
network: w
4+
version: 0.1
45

56
[Wavelength_cal]
67
mapping_vis_a: +1.6499700E+02
@@ -81,6 +82,7 @@ write_l2a: True
8182

8283
plot_l0: True
8384
plot_l1a: True
85+
plot_l1a_diff: True
8486
plot_l1b: True
8587
plot_l1c: True
8688
plot_l2a: True

hypernets_processor/etc/processor_2.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ write_l1b: True
4242
write_l1c: True
4343
write_l2a: True
4444

45-
plot_l0: False
45+
plot_l0: True
4646
plot_l1a: True
4747
plot_l1a_diff: True
4848
plot_l1b: True

hypernets_processor/interpolation/interpolate.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,13 @@ def interpolate_l1c(self,dataset_l1b_rad,dataset_l1b_irr):
6060
dataset_l1c=self.templ.l1c_from_l1b_dataset(dataset_l1b_rad)
6161
dataset_l1c["acquisition_time"].values = dataset_l1b_rad["acquisition_time"].values
6262

63-
dataset_l1c["radiance"].values = dataset_l1b_rad["radiance"].values
64-
dataset_l1c["u_random_radiance"].values = dataset_l1b_rad["u_random_radiance"].values
65-
dataset_l1c["u_systematic_indep_radiance"].values = dataset_l1b_rad["u_systematic_indep_radiance"].values
66-
dataset_l1c["u_systematic_corr_rad_irr_radiance"].values = dataset_l1b_rad["u_systematic_corr_rad_irr_radiance"].values
67-
dataset_l1c["corr_random_radiance"].values = dataset_l1b_rad["corr_random_radiance"].values
68-
dataset_l1c["corr_systematic_indep_radiance"].values = dataset_l1b_rad["corr_systematic_indep_radiance"].values
69-
dataset_l1c["corr_systematic_corr_rad_irr_radiance"].values = dataset_l1b_rad["corr_systematic_corr_rad_irr_radiance"].values
63+
# dataset_l1c["radiance"].values = dataset_l1b_rad["radiance"].values
64+
# dataset_l1c["u_random_radiance"].values = dataset_l1b_rad["u_random_radiance"].values
65+
# dataset_l1c["u_systematic_indep_radiance"].values = dataset_l1b_rad["u_systematic_indep_radiance"].values
66+
# dataset_l1c["u_systematic_corr_rad_irr_radiance"].values = dataset_l1b_rad["u_systematic_corr_rad_irr_radiance"].values
67+
# dataset_l1c["corr_random_radiance"].values = dataset_l1b_rad["corr_random_radiance"].values
68+
# dataset_l1c["corr_systematic_indep_radiance"].values = dataset_l1b_rad["corr_systematic_indep_radiance"].values
69+
# dataset_l1c["corr_systematic_corr_rad_irr_radiance"].values = dataset_l1b_rad["corr_systematic_corr_rad_irr_radiance"].values
7070

7171
dataset_l1c=self.interpolate_irradiance(dataset_l1c,dataset_l1b_irr)
7272

@@ -161,7 +161,6 @@ def process_measurement_function(self,measurandstring,dataset,measurement_functi
161161
# if u_systematic_input_quantities_corr[i] is not None:
162162
# if len(u_systematic_input_quantities_corr[i].shape) < len(datashape):
163163
# u_systematic_input_quantities_corr[i] = np.tile(u_systematic_input_quantities_corr[i], (datashape[1], 1)).T
164-
print(*input_quantities)
165164
measurand = measurement_function(*input_quantities)
166165
with warnings.catch_warnings():
167166
warnings.simplefilter("ignore")
@@ -170,15 +169,14 @@ def process_measurement_function(self,measurandstring,dataset,measurement_functi
170169
u_random_input_quantities,
171170
param_fixed=[False,True,True],
172171
repeat_dims=1)
173-
print("shapes", cov_systematic_input_quantities_indep[2].shape,input_quantities[2].shape,u_systematic_input_quantities_indep[2].shape)
174172
u_syst_measurand_indep,corr_syst_measurand_indep = self.prop.propagate_systematic(
175173
measurement_function,input_quantities,
176174
u_systematic_input_quantities_indep,
177175
cov_x=['rand']*len(u_random_input_quantities),return_corr=True,
178176
corr_axis=0,param_fixed=[False,True,True],repeat_dims=1)
179177
u_syst_measurand_corr,corr_syst_measurand_corr = self.prop.propagate_systematic(
180178
measurement_function,input_quantities,u_systematic_input_quantities_corr,
181-
cov_x=['rand']*len(u_random_input_quantities),return_corr=True,
179+
cov_x= ['rand']*len(u_random_input_quantities),return_corr=True,
182180
corr_axis=0,param_fixed=[False,True,True],repeat_dims=1)
183181
dataset[measurandstring].values = measurand
184182
dataset["u_random_"+measurandstring].values = u_random_measurand

hypernets_processor/interpolation/measurement_functions/land_network_interpolation_irradiance_linear.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,16 @@ def function(self,output_time,times_irr,irradiances):
2020
irradiance_intfunc = scipy.interpolate.interp1d(times_irr,
2121
irradiances)
2222
out[:,i]= irradiance_intfunc(output_time[i])
23-
return out
23+
2424
else:
2525
if output_time > max(times_irr):
26-
return irradiances[:,times_irr == max(times_irr)][:,0]
26+
out = irradiances[:,times_irr == max(times_irr)][:,0]
2727
elif output_time<min(times_irr):
28-
return irradiances[:,times_irr==min(times_irr)][:,0]
28+
out = irradiances[:,times_irr==min(times_irr)][:,0]
2929
else:
3030
irradiance_intfunc=scipy.interpolate.interp1d(times_irr,irradiances)
31-
return irradiance_intfunc(output_time)
31+
out = irradiance_intfunc(output_time)
32+
return out
3233

3334

3435
@staticmethod

hypernets_processor/interpolation/measurement_functions/water_network_interpolation.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ def function(self,output_time,times,variables):
2020
irradiance_intfunc = scipy.interpolate.interp1d(times,
2121
variables)
2222
out[:,i] = irradiance_intfunc(output_time[i])
23-
return out
2423
else:
2524
if output_time > max(times):
26-
return variables[:,times == max(times)][:,0]
25+
out= variables[:,times == max(times)]
2726
elif output_time < min(times):
28-
return variables[:,times == min(times)][:,0]
27+
out= variables[:,times == min(times)]
2928
else:
3029
irradiance_intfunc = scipy.interpolate.interp1d(times,variables)
31-
return irradiance_intfunc(output_time)
30+
out = irradiance_intfunc(output_time)
31+
return out
3232

3333
@staticmethod
3434
def get_name():

hypernets_processor/main_processor.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,11 @@ def run(self):
7070
seq_dir = server_dir + seq_id+"/"
7171

7272
l0_irr, l0_rad, l0_bla = HypernetsReader(self.context).read_sequence(seq_dir)
73-
l0_bla["digital_number"].values=l0_bla["digital_number"].values/10.
74-
73+
#l0_bla["digital_number"].values=l0_bla["digital_number"].values/10.
74+
l0_irr["integration_time"].values=1024*np.ones(len(l0_irr["integration_time"]))
75+
l0_rad["integration_time"].values = 1024*np.ones(
76+
len(l0_rad["integration_time"]))
77+
l0_bla["integration_time"].values=1024*np.ones(len(l0_bla["integration_time"]))
7578
FOLDER_NAME = os.path.join(seq_dir, "RADIOMETER/")
7679
seq_id = os.path.basename(os.path.normpath(seq_dir)).replace("SEQ", "")
7780
print(seq_id)
@@ -192,6 +195,8 @@ def run(self):
192195
# L1b = rhymer.get_epsilon(L1b)
193196
L1b=rhymer.process_l1b(L1a_rad, L1a_irr)
194197
#
198+
print(L1b["corr_systematic_corr_rad_irr_irradiance"])
199+
panic
195200
L1c=rhymer.process_l1c(L1b)
196201
#L1d_irr = cal.average_l1b("irradiance", L1c)
197202
L1d= surf.process_l1d(L1c)

hypernets_processor/main_processor_outdoortest.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,10 @@ 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
205+
l0_rad["digital_number"].values[:,0]=l0_rad["digital_number"].values[:,0]/1.25
206+
l0_irr["digital_number"].values[:,0]=l0_irr["digital_number"].values[:,0]/1.25
207+
l0_swir_rad["digital_number"].values[:,0]=l0_swir_rad["digital_number"].values[:,0]/1.25
208+
l0_swir_irr["digital_number"].values[:,0]=l0_swir_irr["digital_number"].values[:,0]/1.25
209209

210210

211211
#Calibrate to L1a

hypernets_processor/plotting/plotting.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -70,23 +70,23 @@ def plot_diff_scans(self,measurandstring,dataset,dataset_avg=None):
7070
dataset.attrs['product_name']+"_series_"+str(
7171
series_id[i])+"."+self.context.get_config_value("plotting_format"))
7272

73-
ids = np.where(dataset['series_id'] == series_id[i])
73+
ids = np.where(dataset['series_id'] == series_id[i])[0]
7474

7575
ydata_subset=dataset[measurandstring].values[:,ids]
7676
mask=DatasetUtil.unpack_flags(dataset["quality_flag"])["outliers"]
77+
mask = mask[ids]
78+
7779
if dataset_avg is None:
7880
ids_used = np.where((dataset['series_id'] == series_id[i]) & np.invert(
7981
DatasetUtil.unpack_flags(dataset["quality_flag"])["outliers"]))[0]
8082
ydata_subset_used = dataset[measurandstring].values[:,ids_used]
81-
avgs=np.tile(np.mean(ydata_subset_used,axis=1)[...,None],len(ids_used))
82-
mask=mask[ids_used]
83+
avgs=np.tile(np.mean(ydata_subset_used,axis=1)[...,None],len(ids))
8384
else:
8485
avg_ids = np.where((dataset_avg['series_id'] == series_id[i]))[0]
85-
avgs = np.tile(dataset_avg[measurandstring].values[:,avg_ids],len(avg_ids))
86-
mask=mask[avg_ids]
86+
avgs = np.tile(dataset_avg[measurandstring].values[:,avg_ids],len(ids))
8787

8888
self.plot_variable("relative difference",plotpath,dataset["wavelength"].values,
89-
(ydata_subset-avgs)/avgs,ylim=[-0.2,0.2],mask=mask)
89+
(ydata_subset-avgs)/avgs,ylim=[-0.3,0.3],mask=mask)
9090

9191
def plot_radiance(self,plotpath,xdata,ydata,labels=None):
9292
fig1,ax1 = plt.subplots(figsize=(10,5))
@@ -99,7 +99,7 @@ def plot_radiance(self,plotpath,xdata,ydata,labels=None):
9999
ax1.set_xlabel("Wavelength (nm)")
100100
ax1.set_ylabel(r"Radiance ($mW\ nm^{-1}\ m^{-2}\ sr^{-1}$)")
101101
ymax = np.percentile(ydata,95)*1.2
102-
ax1.set_ylim([0,max(1,ymax)])
102+
ax1.set_ylim([0,ymax])
103103
fig1.savefig(plotpath,bbox_inches='tight')
104104
plt.close(fig1)
105105

@@ -114,7 +114,7 @@ def plot_irradiance(self,plotpath,xdata,ydata,labels=None):
114114
ax1.set_xlabel("Wavelength (nm)")
115115
ax1.set_ylabel(r"Irradiance ($mW\ nm^{-1}\ m^{-2}$)")
116116
ymax = np.percentile(ydata,95)*1.2
117-
ax1.set_ylim([0,max(100,ymax)])
117+
ax1.set_ylim([0,ymax])
118118
fig1.savefig(plotpath,bbox_inches='tight')
119119
plt.close(fig1)
120120

@@ -142,28 +142,32 @@ def plot_reflectance(self,plotpath,xdata,ydata,labels=None):
142142
ax1.set_xlabel("Wavelength (nm)")
143143
ax1.set_ylabel(r"Reflectance")
144144
ymax=np.percentile(ydata,95)*1.2
145-
ax1.set_ylim([0,max(0.2,ymax)])
145+
ax1.set_ylim([0,ymax])
146146
fig1.savefig(plotpath,bbox_inches='tight')
147147
plt.close(fig1)
148148

149149
def plot_other_var(self,measurandstring,plotpath,xdata,ydata,labels=None,ylim=None,mask=None):
150150
fig1,ax1 = plt.subplots(figsize=(10,5))
151-
if labels is None and mask is None or len(np.where(mask))==0:
151+
if labels is None and mask is None or len(np.where(mask)[0])==0:
152152
ax1.plot(xdata,ydata,alpha=0.3)
153153
elif mask is None:
154154
for i in range(len(labels)):
155155
ax1.plot(xdata,ydata[:,i],label=labels[i],alpha=0.3)
156156
else:
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)
157+
print(len(np.where(mask)[0]))
158+
ax1.plot(xdata,ydata[:,np.where(mask)].reshape((len(ydata),len(np.where(mask)[0]))),label="masked",alpha=0.3,color="red")
159+
ax1.plot(xdata,ydata[:,np.where(np.invert(mask))].reshape((len(ydata),len(np.where(np.invert(mask))[0]))),label="used",alpha=0.3,color="green")
161160

162161
if labels is not None or mask is not None:
163-
ax1.legend()
162+
handles,labels = plt.gca().get_legend_handles_labels()
163+
by_label = dict(zip(labels,handles))
164+
ax1.legend(by_label.values(),by_label.keys())
164165
ax1.set_xlabel("Wavelength (nm)")
165166
ax1.set_ylabel(measurandstring)
166167
if ylim is not None:
167168
ax1.set_ylim(ylim)
169+
else:
170+
ymax = np.percentile(ydata,95)*1.2
171+
ax1.set_ylim([0,ymax])
168172
fig1.savefig(plotpath,bbox_inches='tight')
169173
plt.close(fig1)

0 commit comments

Comments
 (0)