Skip to content

Commit 7164fad

Browse files
committed
flagging surface_reflectances
1 parent 07b0e89 commit 7164fad

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

hypernets_processor/surface_reflectance/surface_reflectance.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from hypernets_processor.calibration.calibrate import Calibrate
1010
from hypernets_processor.rhymer.rhymer.hypstar.rhymer_hypstar import RhymerHypstar
1111
from hypernets_processor.plotting.plotting import Plotting
12+
from hypernets_processor.data_io.dataset_util import DatasetUtil
1213

1314
import punpy
1415
import numpy as np
@@ -87,16 +88,16 @@ def process(self, dataset):
8788
if self.context.get_config_value("network").lower() == "w":
8889
dataset_l2a = self.l2_from_l1d_dataset(dataset)
8990
for measurandstring in ["water_leaving_radiance", "reflectance_nosc", "reflectance"]:
90-
dataset_l2a[measurandstring].values = self.calibrate.calc_mean_masked(dataset, measurandstring)
91-
dataset_l2a["u_random_" + measurandstring].values = self.calibrate.calc_mean_masked(dataset,
91+
dataset_l2a[measurandstring].values = self.calc_mean_masked(dataset, measurandstring)
92+
dataset_l2a["u_random_" + measurandstring].values = self.calc_mean_masked(dataset,
9293
"u_random_" + measurandstring,
9394
rand_unc=True)
94-
dataset_l2a["u_systematic_" + measurandstring].values = self.calibrate.calc_mean_masked(dataset,
95+
dataset_l2a["u_systematic_" + measurandstring].values = self.calc_mean_masked(dataset,
9596
"u_systematic_" + measurandstring,
9697
rand_unc=True)
9798
dataset_l2a["corr_random_" + measurandstring].values = np.eye(
9899
len(dataset_l2a["u_systematic_" + measurandstring].values))
99-
dataset_l2a["corr_systematic_" + measurandstring].values = self.calibrate.calc_mean_masked(dataset,
100+
dataset_l2a["corr_systematic_" + measurandstring].values = self.calc_mean_masked(dataset,
100101
"corr_systematic_" + measurandstring,
101102
corr=True)
102103
if self.context.get_config_value("plot_l2a"):
@@ -118,6 +119,28 @@ def process(self, dataset):
118119

119120
return dataset_l2a
120121

122+
def calc_mean_masked(self, dataset, var, rand_unc=False, corr=False):
123+
series_id = np.unique(dataset['series_id'])
124+
if corr:
125+
out = np.empty((len(series_id), len(dataset['wavelength']), len(dataset['wavelength'])))
126+
else:
127+
out = np.empty((len(series_id), len(dataset['wavelength'])))
128+
for i in range(len(series_id)):
129+
flags = ["saturation","nonlinearity","bad_pointing","outliers",
130+
"angles_missing","lu_eq_missing","fresnel_angle_missing",
131+
"fresnel_default","temp_variability_ed","temp_variability_lu",
132+
"min_nbred","min_nbrlu","min_nbrlsky"]
133+
nonflagged = any(x in DatasetUtil.unpack_flags(dataset['quality_flag']) for x in flags)
134+
ids = np.where(
135+
(dataset['series_id'] == series_id[i]) & (nonflagged == False))
136+
137+
out[i] = np.mean(dataset[var].values[:, ids], axis=2)[:, 0]
138+
if rand_unc:
139+
out[i] = out[i] / len(ids[0])
140+
if corr:
141+
out = np.mean(out, axis=0)
142+
return out.T
143+
121144
def find_input(self, variables, dataset):
122145
"""
123146
returns a list of the data for a given list of input variables

0 commit comments

Comments
 (0)