99from hypernets_processor .calibration .calibrate import Calibrate
1010from hypernets_processor .rhymer .rhymer .hypstar .rhymer_hypstar import RhymerHypstar
1111from hypernets_processor .plotting .plotting import Plotting
12+ from hypernets_processor .data_io .dataset_util import DatasetUtil
1213
1314import punpy
1415import 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