diff --git a/main.py b/main.py index e4eb5aa5a9e026b61200bb4160befd7d07b0e5da..32e01b3b63ba372dcd18ccb283775688b448a14c 100644 --- a/main.py +++ b/main.py @@ -98,7 +98,7 @@ def main(*, data_path=_datapath, mod02=_fname_mod02, mod03=_fname_mod03, perform = {'11um BT Test': False, 'CO2 High Clouds Test': False, 'Water Vapor High Clouds Test': False, - 'Surface Temperature Test': False, + 'Surface Temperature Test': True, 'SST Test': False, '8.6-11um BT Difference Test': False, '11-12um BTD Thin Cirrus Test': False, @@ -107,7 +107,7 @@ def main(*, data_path=_datapath, mod02=_fname_mod02, mod03=_fname_mod03, 'Water Vapor Cloud Test': False, '11um BT Variability Test': False, '11-4um BTD Oceanic Stratus': False, - 'NIR Reflectance Test': True, + 'NIR Reflectance Test': False, 'Vis/NIR Ratio Test': False, '1.6um or 2.1um NIR Reflectance Test': False, 'Visible Reflectance Test': False, diff --git a/preprocess_thresholds.py b/preprocess_thresholds.py index 6c95d1d973b905d4e6d856b4e96c4f48da4dc6b6..f4b7e5963f47e0a6ffcf547f80a965b9bf432859 100644 --- a/preprocess_thresholds.py +++ b/preprocess_thresholds.py @@ -105,6 +105,45 @@ def preproc_nir(data, thresholds, scene): return corr_thr +def preproc_surf_temp(data, thresholds): + thr_sfc1 = thresholds['Surface_Temperature_Test_1'] + thr_sfc2 = thresholds['Surface_Temperature_Test_2'] + thr_df1 = thresholds['Surface_Temperature_Test_df1'] + thr_df2 = thresholds['Surface_Temperature_Test_df2'] + max_vza = 70.13 # This values is set based on sensor. Check mask_processing_constants.h for MODIS value + + rs = np.prod(data.M15.shape) + df1 = (data.M15 - data.M16).values.reshape(rs) + df2 = (data.M15 - data.M13).values.reshape(rs) + desert_flag = data.Desert.values.reshape(rs) + thresh = np.ones((rs, )) * thr_sfc1 + + idx = np.where((df1 >= thr_df1[0]) | ((df1 < thr_df1[0]) & ((df2 <= thr_df2[0]) | (df2 >= thr_df2[1])))) + thresh[idx] = thr_sfc2 + idx = np.where(desert_flag == 1) + thresh[idx] == thr_sfc1 + + midpt = thresh + idx = np.where(df1 >= thr_df1[1]) + midpt[idx] = thresh[idx] + 2.0*df1[idx] + + corr = np.power(data.sensor_zenith.values/max_vza, 4) * 3.0 + midpt = midpt.reshape(corr.shape) + corr + locut = midpt + 2.0 + hicut = midpt - 2.0 + + thr_out = xr.DataArray(data=np.dstack((locut, midpt, hicut, np.ones(locut.shape), np.ones(locut.shape))), + dims=('number_of_lines', 'number_of_pixels', 'z')) + + return thr_out + + +def get_b1_thresholds(): + # fill_ndvi[0] is for fill_ndvi1 + # fill_ndvi[1] is for fill_ndvi2 + pass + + # NOTE: 11-12um Cirrus Test # hicut is computed in different ways depending on the scene # 1. midpt - adj diff --git a/tests.py b/tests.py index 0508626db3264a018ff200304a6b4a656b6b1d17..0e72173494107cb541eca15e4ae89fe74ee01d03 100644 --- a/tests.py +++ b/tests.py @@ -8,6 +8,11 @@ import conf import conf_xr import preprocess_thresholds as pt +import importlib + +# this is used for testing, eventually we want to remove it +importlib.reload(pt) + # ############## GROUP 1 TESTS ############## # @@ -266,7 +271,9 @@ class CloudTests: thr_xr['threshold'] = pt.preproc(self.data, self.thresholds[self.scene_name]) thr = np.ones((5,)) # This is only temporary to force the logic of the code # I need to find a better solution at some point - + elif test_name == 'Surface_Temperature_Test': + thr_xr['threshold'] = pt.preproc_surf_temp(self.data, self.thresholds[self.scene_name]) + thr = np.ones((5,)) elif test_name == 'SST_Test': thr_xr['threshold'] = (('number_of_lines', 'number_of_pixels', 'z'), np.ones((self.data[band].shape[0], self.data[band].shape[1], 5))*thr) diff --git a/thresholds.mvcm.snpp.v0.0.1.yaml b/thresholds.mvcm.snpp.v0.0.1.yaml index 654002ee9cec7a601c2b864c31e557370dea123a..cf791411133277e06a8ce6ff4b83b0438f7d070c 100644 --- a/thresholds.mvcm.snpp.v0.0.1.yaml +++ b/thresholds.mvcm.snpp.v0.0.1.yaml @@ -179,7 +179,13 @@ Polar_Night_Land: adj: [] # I NEED TO WORK ON THIS pnlbt1 : 270.0 pnlbt2 : 270.0 - Surface_Temperature_Test_pfm: 1.0 + Surface_Temperature_Test_df1: [0.0, 1.0] + Surface_Temperature_Test_df2: [-0.5, 1.0] + Surface_Temperature_Test_difference: [-0.2, 1.0, -0.5, 1.0] # <- this merges the previous two arrays + Surface_Temperature_Test_1: 20.0 # | might be worth figuring out if we can + Surface_Temperature_Test_2: 12.0 # | merge these three coefficients + Surface_Temperature_Test_pfm: 1.0 # __| + Surface_Temperature_Test: [20.0, 12.0, 1.0] # <- First attempt to merge the three values above pnl_11_4_pfm : 1.0 pnl_7_11_pfm : 1.0 pnl_4_12_pfm : 1.0